-
版權聲明:本文爲博主 **單片機菜鳥** 一心一血敲出來的原創作品,未經博主允許不得轉載,多謝支持。
-
本系列博客僅僅做個人技術交流分享,不做任何商業用途。如有不對之處,請留言,本人及時更改。
-
如何和博主一起學習:
博主建立了ESP8266開發之旅學習羣,需要的同學請加 869920142
目錄
1.前言
近段時間,博主陸續更新了ESP8266學習筆記,主要開發平臺是Arduino。但是,對於很多無基礎的初學者來說,甚至不瞭解Arduino是什麼。因此,博主決定加入一個Arduino學習筆記,方便零基礎的初學者。初學者可以從基礎去了解Arduino,這樣才能設計自己的東西,所以博主建議初學者可以參考《ARDUINO程序設計基礎》,《Arduino-語法手冊》,請點擊 傳輸門 提取碼:0923。
注意:
- 博主建議邊學邊練,鞏固知識
2.什麼是Arduino
Arduino可以是一塊小小電路板,也可以是一個開放的電子開發平臺。它既包含了硬件,也包含了軟件——開發環境以及開發者、使用者創造出來的代碼、程序。Arduino拋開了傳統硬件開發的複雜操作,不需要了解硬件的內部結構和寄存器設置(如果是單片機開發,是需要了解寄存器並且設置各個寄存器),也不需要過多的電子知識和編程知識,開發者只需要通過簡單學習,瞭解各個引腳和函數的作用,便可利用它開發出各種出色的項目。
Arduino編譯器使用GCC,Arduino語音衍生自Wiring語言,這是一個開源的單片機編程架構,同時Arduino語言又是基於AVR-Libc這個AVR單片機擴展庫編寫的,意味着很多單片機的寄存器設置細節應該是被二次封裝了。
3.選擇一款適合自己的Arduino控制器
3.1 Arduino UNO
Arduino UNO 是目前使用最廣泛的Arduino控制器,具有Arduino的所有功能,是初學者最佳選擇。掌握UNO開發技巧,其他型號控制器也是類似的。
- 處理器 ATmega328
- 工作電壓 5V
- 輸入電壓(推薦) 7-12V
- 輸入電壓(範圍) 6-20V
- 數字IO腳 14 (其中6路作爲PWM輸出)
- 模擬輸入腳 6
- IO腳直流電流 40 mA
- 3.3V腳直流電流 50 mA
- Flash Memory 32 KB (ATmega328,其中0.5 KB 用於 bootloader)
- SRAM 2 KB (ATmega328)
- EEPROM 1 KB (ATmega328)
- 工作時鐘 16 MHz
3.2 Arduino MEGA
Arduino Mega 是一個增強型的Arduino 控制器,相對於UNO,它提供了更多的輸入/輸出接口,可以控制更多的設備,以及擁有更大的程序空間和內存,是完成較大型項目的較好選擇。
- 控制器 ATmega2560
- 工作電壓 5V
- 輸入電壓(推薦) 7-12V
- 輸入電壓(限制) 6-20V
- 數字I/0口 54 (含15路PWM輸出)
- 模擬輸入口 16
- 每個I/0口直流電流 40 mA
- 3.3v口直流電流 50 mA
- 閃存(Flash Memory) 256 KB(其中8 KB用作bootloader)
- 靜態存儲器(SRAM) 8 KB
- EEPROM 4 KB
- 時鐘 16 MHz
3.3 Arduino Leonardo
Arduino Leonardo 使用集成了USB功能的AVR單片機作爲主控芯片,具備其他型號Arduino控制器的所有功能之外還可以輕鬆模擬USB鍵盤/鼠標等USB設備。
- 微控制器 ATmega32u4
- 工作電壓 5V
- 輸入電壓(推薦) 7-12V
- 輸入電壓(限制) 6-20V
- 數字I/O引腳 20
- PWM通道 7
- 模擬輸入通道 12
- 每個I/O直流輸出能力 40毫安
- 3.3V端口輸出能力 50毫安
- Flash 32 KB(ATmega32u4)其中4 KB由引導程序使用
- SRAM 2.5 KB(ATmega32u4)
- EEPROM 1 KB(ATmega32u4)
- 時鐘速度 16MHz
3.4 Arduino Due
Arduino Due 突破性使用了32位的ARM Cortex-M3作爲主控芯片。它集成了多種外設,有着其他Arduino板無法比擬的性能,是目前最爲強大的Arduino控制器。
- 微控制器 AT91SAM3X8E
- 工作電壓 Voltage 3.3V
- 輸入電壓(推薦) 7-12V
- 輸入電壓(限制) 6-20V
- 數字I/O引腳 54 (其中12路PWM輸出)
- 模擬輸入通道 Pins 12
- 模擬輸出通道 Pins 2 (DAC)
- IO口總輸出電流 130 mA
- 3.3V端口輸出能力 800 mA
- 5V端口輸出能力 800 mA
- Flash 512 KB (所有空間都可以儲存用戶程序)
- SRAM 96 KB (兩個部分: 64KB and 32KB)
- 時鐘速率 84 MHz
3.5 小型化的Arduino
常見小型Arduino控制器有Arduino Nano,Arduino Mini,Arduino Micro,Arduino LilyPad等。
3.5.1 Arduino Nano
Arduino Nano是Arduino USB接口的微型版本,最大的不同是沒有電源插座以及USB接口是Mini-B型插座。
- 處理器 ATmega168 or ATmega328
- 工作電壓 5V
- 輸入電壓(推薦) 7-12V
- 輸入電壓(範圍) 6-20V
- 數字IO腳 14 (其中6路作爲PWM輸出)
- 模擬輸入腳 6
- IO腳直流電流 40 mA
- Flash Memory 16 or 32 KB (其中2 KB 用於 bootloader)
- SRAM 1 KB or 2 KB
- EEPROM 0.5 KB or 1 KB (ATmega328)
- FT232RL FTDI USB接口芯片
- 工作時鐘 16 MHz
3.5.2 Arduino LilyPad
Arduino 一個特殊版本,是爲可穿戴設備和電子紡織品而開發的。
Arduino LilyPad可以通過USB連接或者外部電源供電,電壓可從2.7V到5.5V,需要注意Arduino LilyPad沒有保護電路,輸入電壓不能正負接反也不能超過閥值。
- 處理器 ATmega168 or ATmega328
- 工作電壓 2.7V-5.5V
- 輸入電壓 2.7V-5.5V
- 數字IO腳 14 (其中6路作爲PWM輸出)
- 模擬輸入腳 6
- IO腳直流電流 40 mA
- 3.3V腳直流電流 50 mA
- Flash Memory 16 KB (ATmega168,其中2 KB 用於 bootloader)
- SRAM 1 KB
- EEPROM 0.5 KB
- 工作時鐘 8 MHz
3.5.3 Arduino Mini
Arduino Mini是Arduino 的最簡潔微型版本,可以插在麪包板上,適用於對尺寸要求嚴苛的場合。
Arduino MIni必須外接擴展板才能夠下載程序。
- 處理器 ATmega328
- 工作電壓 5V
- 輸入電壓 7-9V
- 輸入充電電壓 3.7-7V
- 數字IO腳 14 (其中6路作爲PWM輸出)
- 模擬輸入腳 8
- IO腳直流電流 40 mA
- Flash Memory 32 KB (其中2 KB 用於 bootloader)
- SRAM 2 KB
- EEPROM 1 KB
- 工作時鐘 16 MHz
4.第一行代碼
博主這裏不交大家安裝ArduinoIDE,請自行到Arduino官網下載最新版本,目前是1.8.9版本。當你在Arduino IDE上新增項目,默認是以下代碼:
void setup() {
// put your setup code here, to run once:
}
void loop() {
// put your main code here, to run repeatedly:
}
會發現,Arduino的程序結構與傳統的c程序結構有所不同——Arduino程序中沒有main函數。其實並不是Arduino程序中沒有main函數,而是main函數的定義隱藏在了Arduino的核心庫文件中。在進行Arduino開發中不直接操作main函數,而是使用setup和loop這兩個函數。
4.1 setup()
Arduino控制器通電或者復位後,就會開始執行Arduino的初始化配置(IO口 串口等);
4.2 loop()
setup函數執行完畢後,Arduino會接着執行loop()函數中的程序。而loop函數是一個死循環,其中的程序會不斷地重複運行。通常在loop函數中完成程序的主要功能,如驅動各種模塊和採集數據等。
所以,這個模型應該是這樣的:
int main(){
setup();
while(1){
loop();
}
}
這樣就滿足c的程序結構了。
5.總結
本篇主要講解常用的Arduino板子以及它們的硬件特性,讀者可以根據自己的實際情況購買學習,博主建議初學者可以入手Mega板子,性價比高。