找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 3302|回復(fù): 2
收起左側(cè)

Arduino學(xué)習(xí)筆記

[復(fù)制鏈接]
ID:174343 發(fā)表于 2021-5-21 13:13 | 顯示全部樓層 |閱讀模式
通過了解學(xué)習(xí)arduino,感覺特別適合一些業(yè)余愛好者們使用,新人容易上手。Arduino 你不需要知道單片機(jī)編程繁瑣的細(xì)節(jié),提供給你的是一套容易使用的工具包。 但同其它系統(tǒng)相比Arduino在很多地方更具有優(yōu)越性:價(jià)格便宜,編程環(huán)境簡(jiǎn)單,與Processing 編程環(huán)境很相似。
Arduino是一款能夠用來感應(yīng)和控制現(xiàn)實(shí)物理世界的一套工具(積木式硬件拼接方式),它是一款開放源碼的硬件平臺(tái)且資料多,可以自己動(dòng)手做開發(fā)板,有需要的也可以加我一起相互學(xué)習(xí),其它啰嗦的話就不多說了,也靠平時(shí)網(wǎng)上查資料一點(diǎn)點(diǎn)積累,所以還是總結(jié)一下學(xué)到的一些知識(shí)點(diǎn),方便以后查看,分享,當(dāng)然也參考了別人的一下筆記(表示感謝)。 arduino平臺(tái)的基礎(chǔ)就是AVR指令集單片機(jī)(主要芯片Atmega328P-PU、Atmega2560)。開發(fā)軟件版本 Arduino 1.6.4   已有更新版本。

以Atmega328為例:
Digital I/O 數(shù)字輸入/輸出端口0—13。
Analog I/O 模擬輸入/輸出端口0-5。

下圖為自制的Mage2560:(Arduino Uno版本Atmega328的忘記拍照了)
51hei.png
1、Arduino基礎(chǔ)、基本函數(shù)梳理 (詳見后面3):
unsigned long millis();      //返回時(shí)間函數(shù)(單位ms)
delayMicroseconds(1000);   //微秒延時(shí)函數(shù) 1000微妙=1毫秒
delay(1000) ;                 //毫秒延時(shí)函數(shù) 1000毫秒=1秒
Serial.read();              //讀取持續(xù)輸入的數(shù)據(jù)。
Serial.print(數(shù)據(jù),數(shù)據(jù)的進(jìn)制);  //串行0輸出數(shù)據(jù)。
Serial.print(數(shù)據(jù));         //默認(rèn)為十進(jìn)制等于Serial.print(數(shù)據(jù),DEC)。
Serial.println(數(shù)據(jù),數(shù)據(jù)的進(jìn)制);   //從串行端口輸出數(shù)據(jù),跟隨一個(gè)回車和一個(gè)換行符。這個(gè)函數(shù)所取得的值與 Serial.print()一樣。
pinMode(pin, mode) ;
下面以引腳2為例,其它引腳根據(jù)具體自身開發(fā)使用的引腳來定義:

pinMode(2, OUTPUT);                設(shè)置引腳2為輸出模式
pinMode(2, INPUT);               設(shè)置引腳2為輸入模式
digitalWrite(2, LOW);                  控制引腳2輸出低電平
digitalWrite(2, HIGH);                控制引腳2輸出高電平
boolean  flag = digitalRead(2) ;       讀取引腳2的電平(1 or 0)
analogWrite(5,num);      引腳5輸出模擬量(PWM),num的數(shù)值范圍0~255,腳位通常會(huì)在3、5、6、9、10與11,具體根據(jù)開發(fā)板的。
unsigned int num= analogRead(A3); 引腳A3讀取電壓值0~5V(數(shù)值:0~1023)

矩陣按鍵4*4的程序應(yīng)用:
#include "Keypad.h"    //頭文件
const byte ROWS = 4;
const byte COLS = 4;
char keys[ROWS][COLS] = {
{'1','2','3','4'},
{'5','6','7','8'},
{'A','B','9','C'},
{'*','0','#','D'}       };
byte rowPins[ROWS] = {39, 41, 43, 45};  //矩陣按鍵端口
byte colPins[COLS] = {44, 42, 40, 38};  //
Keypad  keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );

int key = keypad.getKey();//讀取到的鍵值

2、開發(fā)板介紹:
因其開源特性,生產(chǎn)arduino控制板的廠商眾多,多種顏色。
  
對(duì)于一些對(duì)電路板大小要求比較嚴(yán)格的地方,arduino團(tuán)隊(duì)提供了arduino Nano開發(fā)板,此板體積做的非常小。

arduino開發(fā)板特殊端口的說明:

VIN端口:VIN是input voltage的縮寫,表示有外部電源時(shí)的輸入端口。

AREF:  Reference voltage for the analog inputs(模擬輸入的基準(zhǔn)電壓)。使用analogReference()命令調(diào)用。

ICSP:也有稱為ISP(In System Programmer),就是一種線上即時(shí)燒錄,目前比較新的芯片都支持這種燒錄模式。只需要準(zhǔn)備一條R232線(連接燒錄器),以及一條連接燒錄器與燒錄芯片針腳的連接線就可以。電源的+5V,GND,兩條負(fù)責(zé)傳輸燒錄信息的針腳,再加上一個(gè)燒錄電壓針腳,這樣就可以燒錄了。

3、實(shí)例及C語言關(guān)鍵字:

void setup()
{
  Serial.begin(9600); // 打開串口,設(shè)置波特率為9600 bps
}
void loop()
{
      int val;
      val=analogRead(5);//傳感器接到模擬口5,數(shù)值根據(jù)自己的需要可變
      Serial.println(val,DEC);//從串口發(fā)送字符串并換行         
      delay(100);
}
/*************基礎(chǔ)C語言*************/
結(jié)構(gòu)
•    void setup()   初始化變量,管腳模式,調(diào)用庫(kù)函數(shù)等
•    void loop()   連續(xù)執(zhí)行函數(shù)內(nèi)的語句 即主函數(shù)main
關(guān)鍵字:
•    if
•    if...else
•    for
•    switch case
•    while
•    do... while
•    break
•    continue
•    return
•    goto
語法符號(hào):
•    ;
•    {}
•    //
•    /* */

完整的Word格式文檔51黑下載地址:
Arduino學(xué)習(xí)筆記 陸 龍.doc (8.24 MB, 下載次數(shù): 47)

評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

ID:889490 發(fā)表于 2021-6-26 10:46 | 顯示全部樓層
很好,有更新嗎?
回復(fù)

使用道具 舉報(bào)

ID:138707 發(fā)表于 2021-7-3 20:55 | 顯示全部樓層
進(jìn)來看看 學(xué)習(xí)一下謝謝分享
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表