10 李奧納多

(2022/02/17)

Leonardo與Uno的差異比較:以下資料取自葉難 http://yehnan.blogspot.com/2013/09/arduinoleonardouno.html


跟Uno比起來,Leonardo比較新、硬體規格比較強、價格比較便宜,但Uno資格較久,許多書籍、文件、網路上的分享心得、以及眾多程式庫,幾乎都 以Uno為基準,雖說兩者幾乎一樣,但仍有一些小差異,這些小麻煩對老鳥來說自然不會產生大問題,但對新手來說仍算是不低的障礙。所以第一次玩微控制器板或Arduino的朋友,我建議購買Uno。


  • Uno的微控制器是ATmega328P,有DIP也有SMD,另有一顆ATmega8U2(R1與R2)/ATmega16U2(R3),作為USB橋接功能;Leonardo的微控制器是ATmega32U4,只有SMD,32U4已包含USB功能。

  • Uno的USB插座是一般B型,Leonardo的USB插座則為Micro B型

  • 都有一個2.1mm/2.5mm的DC電源插座,都有重置按鈕,運作時脈都是16MHz,Flash memory都是32KB,Uno的bootloader約0.5 KB,Leonardo的bootloader約4 KB,EEPROM都是1KB,SRAM(Uno 2KB,Leonardo 2.5KB)

  • Uno與Leonardo板子的尺寸大小、排母數目與位置,都一樣,但功能有所不同。

    • 數位腳位,Uno在板子上方有14個(標示為0~13),其中6個可PWM,以「~」額外標示,3、5、6、9、10、11,解析度8位元。Leonardo相同,PWM多了一個13

    • 類比輸入腳位,Uno在板子下方有6個(標示為A0~A5),解析度10位元。Leonardo多了6個,A6~A11(位於數位腳位4、6、8、9、10、12)

    • I2C/TWI介面,Uno:SDA(A4、SDA)與SCL(A5、SCL)。Leonardo:SDA(2、SDA)與SCL(3、SCL)

    • SPI介面,Uno:SS(10)、MOSI(11)、MISO(12)、SCK(13)。Leonardo跟Uno不同,SPI不在數位腳位,MOSI、MISO、SCK都在ICSP上,SS則位於板子左邊與RX LED相連。

    • 外部中斷,Uno:2(int.0)、3(int.1)。Leonardo:3(int.0)、2(int.1)、0(int.2)、1(int.3)、7(int.4)

    • Serial(序列介面),Uno:RX(0)與TX(1)連接8U2/16U2(USB轉TTL Serial的晶片),在程式裡以Serial物件存取。Leonardo:在程式裡Serial物件代表USB CDC(Connected Device Class),而Serial1物件才是RX(0)與TX(1)。Leonardo事實上擁有兩個序列埠,一個模擬而成的虛擬序列埠(不管是在電腦端還是在微控制器端),連接USB連線,另一個則是微控制器本身原本擁有的UART硬體。

  • 因Leonardo使用內建USB功能的ATmega32U4,擁有非常強大的bootloader,除了可作為虛擬序列埠(COM port),也可模擬成USB鍵盤與滑鼠(標準的HID裝置,無需驅動程式)。連接Leonardo與電腦時,系統就會出現三個新硬體裝置:虛擬序列埠、USB鍵盤、USB滑鼠。其實Uno也可以模擬USB鍵盤與滑鼠,但必須透過DFU模式修改8U2/16U2的韌體。

  • 自動軟體重置,Uno:8U2/16U2的DTR連接到Atmega328P的重置線路。Leonardo:當以1200鮑率開啟虛擬序列埠並關閉時就重置

  • Uno因有一顆獨立晶片負責USB轉TTL Serial,所以當主晶片重置時,該連線並不會斷掉,但Leonardo會,原本若開啟電腦端的序列埠監控視窗,Uno就會重置,但Leonardo不會,以至於在setup()從序列埠傳出的資料,可能不會出現在電腦端,所以通常會加上while (!Serial);等待開啟序列埠。

  • 因為Leonardo重置時虛擬序列埠會消失,所以在上傳(燒錄)時,Arduino IDE會等待,直到出現新的虛擬序列埠,然後再進行上傳動作。