Arduino學習筆記① 初識Arduino

  • 版權聲明:本文爲博主 **單片機菜鳥** 一心一血敲出來的原創作品,未經博主允許不得轉載,多謝支持。

  • 本系列博客僅僅做個人技術交流分享,不做任何商業用途。如有不對之處,請留言,本人及時更改。

  • 如何和博主一起學習:

博主建立了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開發技巧,其他型號控制器也是類似的。

image

image

  • 處理器 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,它提供了更多的輸入/輸出接口,可以控制更多的設備,以及擁有更大的程序空間和內存,是完成較大型項目的較好選擇。

image

image

  • 控制器 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設備。
image

image

  • 微控制器 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控制器。

image

  • 微控制器 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型插座。

image

image

  • 處理器 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沒有保護電路,輸入電壓不能正負接反也不能超過閥值。

image

  • 處理器 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必須外接擴展板才能夠下載程序。

image

  • 處理器 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();
    while1{
        loop();
    }
}

    這樣就滿足c的程序結構了。

5.總結

    本篇主要講解常用的Arduino板子以及它們的硬件特性,讀者可以根據自己的實際情況購買學習,博主建議初學者可以入手Mega板子,性價比高。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章