前面我們用Atmega16/16A的“裸片”在Arduino IDE下創(chuàng)建了Arduino開(kāi)發(fā)板的復(fù)制板。從Atmega16/16A與Arduino的管腳對(duì)應(yīng)關(guān)系上看,我們將擁有31個(gè)數(shù)字引腳和7個(gè)模擬引腳,3路PWM信號(hào)引腳,這些都是傳統(tǒng)Arduino UNO所不及的——不過(guò)我們只是關(guān)心它比Arduino板省空間。
但是Atmega16/16A畢竟是復(fù)制板,它不支持Arduino常規(guī)的串口通信。我們使用的 MightyCore板卡庫(kù)似乎沒(méi)有定義Serial庫(kù),這在官方說(shuō)明里介紹過(guò)了,所以我們把目光轉(zhuǎn)向了SoftwareSerial庫(kù),即虛擬軟串口。
結(jié)果斷斷續(xù)續(xù)調(diào)試了一天,最終得到了正確的方案。要點(diǎn)如下:
接線:
Arduino UNO | Atmega16 |
---|---|
5V | 10(VCC) |
GND | 11(GND) |
10 | 9(RESET) |
11 | 6(MOSI) |
12 | 7(MISO) |
13 | 8(SCK) |
代碼:
#include <SoftwareSerial.h>
SoftwareSerial mySerial(10, 11); // RX, TX
int pin=14;//注意這句
void setup() {
mySerial.begin(115200);
pinMode(pin, OUTPUT);
}
void loop() {
digitalWrite(pin, HIGH);
mySerial.print("Milliseconds\n");
delay(500);
digitalWrite(pin, LOW);
delay(500);
}
Atmega16/16A | USB To TTL |
---|---|
16(D10) | TX |
17(D11) | RX |
11(GND) | GND |
下面說(shuō)明一下哪些做法是不成功的,避坑之法:
至此,使用Atmega系列芯片完全替代Arduino基本實(shí)現(xiàn),在未來(lái)的作品上把這些芯片直接焊在萬(wàn)能板上,大概也不必再心疼了。
聯(lián)系客服