【太極創(chuàng)客】零基礎(chǔ)入門(mén)學(xué)用Arduino 第一部分 合輯

1、arduino官方硬件。

2、核實(shí)芯片的型號(hào)

3、3部分端口

數(shù)字信號(hào)只有兩種狀態(tài),0,1。
數(shù)字輸入/輸出的端口0、1比較特殊,一般最后再使用。也就是當(dāng)沒(méi)有別的端口可以使用的時(shí)候,再考慮使用端口0和端口1。
//單行注釋
/*
*/
之間為多行注釋。
語(yǔ)句結(jié)尾用分號(hào),即;
變顏色的詞為關(guān)鍵詞,如int ,HIGH,LOW等,有特殊的含義和功能,不能隨便使用。
void setup() {
}
及 void loop() {
}
為函數(shù)。setup及l(fā)oop為函數(shù)名稱(chēng)。

- 變量名不能有空格,不能帶#,不能用數(shù)字開(kāi)頭,不能使用關(guān)鍵字,如HIG H。
- 若變量由兩個(gè)單詞組成,單詞之間可以使用下劃線(xiàn)連接,方便理解和閱讀。
- 若整數(shù)型變量未被賦值,arduino會(huì)默認(rèn)該變量的值為0.
- 定義變量時(shí)可以同時(shí)賦值,如下所示。

- p7 程序結(jié)構(gòu)
- 通電后,setup函數(shù)只運(yùn)行一次,loop函數(shù)則會(huì)反復(fù)運(yùn)行。
- 定義 delayTime變量,并賦值3000,在下段代碼中,則delay3秒。
- 練習(xí):在loop函數(shù)中,增加delayTime 的數(shù)值變化,實(shí)現(xiàn)led燈亮滅隨時(shí)間延長(zhǎng)而變化。
- 定義數(shù)據(jù)類(lèi)型,如int時(shí),其實(shí)目的是告訴arduino要給這個(gè)變量預(yù)留多大的空間。根據(jù)變量可能到的最大值,來(lái)選擇合適的定義。
- 變量定義要考慮作用域,分全局變量和局部變量。
2.p8
- delay是arduino里的函數(shù),函數(shù)的使用有一定的規(guī)則,且有返回值。所有函數(shù)可以在arduino官網(wǎng)或者太極創(chuàng)客的網(wǎng)站查詢(xún)。
3.p9
- LED_BUILTIN 即引腳13。
如:pinMode (LED_BULITIN, OUTPUT);
等同于pinMode(13, OUTPUT);
使用LED_BUILTIN而不用引腳編號(hào)13是為了方便程序在不同的開(kāi)發(fā)板之間直接使用。
電流特性:電流約20毫安。

電壓特性:約2伏特的電壓降。

計(jì)算機(jī)電路模擬軟件fritzing,如下圖:

附:Virtual_Breadboard或者proteus或者tinkercad或者wokwi也可以模擬。
程序編輯可以使用,vscode的arduino擴(kuò)展。

電阻的計(jì)算,如下:


開(kāi)關(guān)信號(hào),即數(shù)字信號(hào)。

開(kāi)關(guān)未被按下時(shí),引腳2為高電平。如下圖:

開(kāi)關(guān)被按下時(shí),引腳2為低電平,如下圖。


電阻r1=10kΩ為上拉電阻。如下:

引腳懸空時(shí), 此時(shí)引腳處于隨機(jī)的狀態(tài),可能是高電平,也可能是低電平,隨時(shí)變化。

串口通訊可以幫助我們監(jiān)控變量的變化,通過(guò)串口通訊讓arduino將變量發(fā)送到電腦屏幕上,從而實(shí)現(xiàn)變量的監(jiān)控。

Serial.begin
其中Serial為庫(kù),begin為庫(kù)函數(shù)。
庫(kù)由arduino幫我們建立的。

通過(guò)語(yǔ)句
int buttonState = digitalRead(pushButton);
可以看出,HIGH 和 LOW可以存入int變量中。
loop()函數(shù)結(jié)尾可以加個(gè)delay(1);保證程序運(yùn)行的正確。

待辦:驗(yàn)證inputpullupSerial 程序。

定義一個(gè)布爾類(lèi)型的數(shù)據(jù),并賦值后,除了0以外,其他數(shù)據(jù)都會(huì)被當(dāng)成1。
bool 和 boolean都可以用作定義。
使用布爾變量作為判斷條件時(shí),可以不用比較符,如==,如下所示:

在輸入上拉模式下,按下按鍵,引腳為低電平,不按按鍵,引腳為高電平。如下圖。

! ,||, && 布爾運(yùn)算的三個(gè)運(yùn)算符。

1位8段共陰極LED數(shù)碼管



注意while 和 do while 的區(qū)別:
以下為while:

以下為do while:

和while循環(huán)不同,do while 循環(huán)體至少會(huì)執(zhí)行一次。





Serial.println("");能輸出空白行。
即,Serial.print("");打印后不換行,Serial.println("")打印后換行。

因?yàn)閍rduino IDE 沒(méi)有設(shè)置斷點(diǎn)功能,所以可以使用串口監(jiān)視器來(lái)實(shí)現(xiàn)監(jiān)控程序運(yùn)行狀態(tài)。
int i;即使后面沒(méi)寫(xiě)i = 0,i也是0 ,因?yàn)閕nt 類(lèi)型默認(rèn)值就是0。
這個(gè)我簡(jiǎn)單說(shuō)一下,randow的隨機(jī)數(shù)和“種子“有關(guān),有一個(gè)函數(shù)可以設(shè)定種子的數(shù),你不設(shè)定種子不變,所以這叫偽隨機(jī)。

如何破除這種偽隨機(jī)呢,需要下面一段函數(shù)代碼:

下面這種myNumber變量只能在if語(yǔ)句中使用,運(yùn)行后系統(tǒng)就會(huì)報(bào)錯(cuò),如下所示:

修改為以下即可;



在調(diào)用analogWrite()函數(shù)前,可不使用pinMode()函數(shù)來(lái)設(shè)置該引腳。
用到analogWrite()的即pwm.






電位器常用于分壓電路中,如下所示:


通過(guò)調(diào)節(jié)旋鈕,2號(hào)引腳的電壓會(huì)從0-5v之間變化。若1接地,3接5v,則左旋調(diào)小,右旋調(diào)大。與收音機(jī)的使用習(xí)慣保持一致,音量旋鈕右轉(zhuǎn)增大音量。
但若1接5v,3接地,則左旋調(diào)大,右旋調(diào)小。

10位即2的10次方即1024。

map等比映射.



