免费99精品国产自在现线观看_人妻少妇精品视频区性色_丝袜 屁股 在线 国产_无码视频在线免费观看

2023年元旦新篇章——我的Arduino C 硬件編程入門,獻(xiàn)給家長(zhǎng)朋友們(arduino編程指南75個(gè)硬件pdf)

—— 本文獻(xiàn)給2023新年里想和孩子一起學(xué)習(xí)、成長(zhǎng)的家長(zhǎng)朋友們!

一、Arduino C是什么?

很多人把Arduino編程語(yǔ)言稱為Arduino C,大概是因?yàn)樗恼Z(yǔ)言是基于C/C 的。Arduino C封裝了Arduino各種硬件的API接口,不需要學(xué)習(xí)底層知識(shí)就可以控制Arduino硬件,這樣對(duì)孩子和硬件入門者都是非常友好的。

經(jīng)過(guò)多年的開源,Arduino C有非常多實(shí)用的開源庫(kù),可以直接使用,用來(lái)方便的控制各類傳感器,比如舵機(jī)超聲波、紅外等,當(dāng)然你也可以自己編寫好用、實(shí)用的庫(kù),開源給別人使用,這也是Arduino的精神。

二、Arduino C的開發(fā)工具是什么?

我是使用官方的Arduino IDE工具開發(fā)和調(diào)試Arduino程序的,我在頭條發(fā)過(guò)幾期短視頻《2分鐘硬件編程系列》,里面就是使用的Arduino IDE。雖然相對(duì)于我工作中經(jīng)常使用的VS和Eclipse,Arduino IDE的功能過(guò)于簡(jiǎn)單,不夠智能化,但對(duì)于簡(jiǎn)單的硬件接口編程來(lái)說(shuō),已經(jīng)夠用了。

我目前使用的Arduino IDE工具版本是1.8.9,不過(guò)arduino.cc已經(jīng)推出了最新的穩(wěn)定版本2.0.3,社區(qū)反饋不錯(cuò),我比較看重的是增加了自動(dòng)糾錯(cuò)和自動(dòng)補(bǔ)充功能,可以有效減少代碼錯(cuò)誤并提高效率,等我試用過(guò)后,下期單獨(dú)寫一篇文章詳細(xì)介紹給大家。

IDE工具怎么得到:Arduino IDE官方 https://www.arduino.cc/en/software

2023年元旦新篇章——我的Arduino C 硬件編程入門,獻(xiàn)給家長(zhǎng)朋友們(arduino編程指南75個(gè)硬件pdf)

我的Arduino IDE1.8.9主界面

三、Arduino C的程序結(jié)構(gòu)

我在《2分鐘硬件編程系列》中,每個(gè)短視頻都詳細(xì)介紹了每一句代碼,和我們大學(xué)時(shí)代學(xué)習(xí)的C語(yǔ)言相比,Arduino C非常簡(jiǎn)單,很容易入門,包括10歲左右的孩子。

一個(gè)簡(jiǎn)單而完整的Arduino C程序,只需編寫setup和loop函數(shù)就可以了。Setup函數(shù)里做初始化工作,而loop函數(shù)里則是主程序,所以一個(gè)完整的Arduino C程序結(jié)構(gòu)就是這樣簡(jiǎn)單:

  • 結(jié)構(gòu)第1部分:引入第三方庫(kù),定義引腳。
  • 結(jié)構(gòu)第2部分:setup()初始化代碼,只運(yùn)行一次。
  • 結(jié)構(gòu)第3部分:loop()主程序代碼,可反復(fù)執(zhí)行。

四、Arduino C 源碼例子詳解——超聲波避障小車

下面看一段《2分鐘硬件編程系列》中超聲波小車的源代碼,這段代碼實(shí)現(xiàn)的功能很簡(jiǎn)單,就是超聲波探測(cè)到小車前方有障礙物體時(shí),完成自動(dòng)停車。

源碼:

//結(jié)構(gòu)第1部分:

const int leftPin1=5;// 左側(cè)電機(jī)引腳

const int leftPin2=6; // 左側(cè)電機(jī)引腳

const int rightPin1=11; // 右側(cè)電機(jī)引腳

const int rightPin2=3; // 右側(cè)電機(jī)引腳

const int trigPin=7; // 超聲波trig引腳

const int echoPin=8; // 超聲波echo引腳

int disVal=0;//超聲波探測(cè)距離變量

//問(wèn)題(1):為什么定義引腳需要const修飾,而定義disVal不需要const修飾呢?我在后面再講。

//結(jié)構(gòu)第2部分:

void setup() {

//初始化代碼,這里只運(yùn)行一次:

pinMode(leftPin1,OUTPUT);//電機(jī)引腳設(shè)置為輸出模式

pinMode(leftPin2,OUTPUT); //電機(jī)引腳設(shè)置為輸出模式

pinMode(rightPin1,OUTPUT); //電機(jī)引腳設(shè)置為輸出模式

pinMode(rightPin2,OUTPUT); //電機(jī)引腳設(shè)置為輸出模式

pinMode(trigPin,OUTPUT); //超聲波trig引腳設(shè)置為輸出模式

pinMode(echoPin,INPUT); //超聲波echo引腳設(shè)置為輸入模式

}

//結(jié)構(gòu)第3部分:

void loop() {

//主程序代碼,會(huì)反復(fù)運(yùn)行:

digitalWrite(trigPin,LOW); //超聲波trig引腳輸出低電平初始化,以便得到干凈的高電平。

delayMicroseconds(2); //延時(shí)2微秒。

digitalWrite(trigPin,HIGH); //超聲波trig引腳輸出高電平,觸發(fā)超聲波發(fā)射8個(gè)40KHz的方波。

delayMicroseconds(10); //延時(shí)10微秒。

digitalWrite(trigPin,LOW); //超聲波trig引腳輸出低電平結(jié)束本次觸發(fā)動(dòng)作。

disVal = pulseIn(echoPin,HIGH)/58.0;

//問(wèn)題(2):這里通過(guò)一個(gè)通用的公式得到超聲波探測(cè)前方障礙物的距離(單位cm),那么,這個(gè)公式原理是什么呢?這個(gè)問(wèn)題也放在后面講。

//判斷前方障礙物的距離

if(disVal >10){

//如果前方障礙物的距離超過(guò)10厘米,則執(zhí)行如下前進(jìn)操作:

analogWrite(leftPin1,0);

analogWrite(leftPin2,130);//啟動(dòng)左側(cè)電機(jī)(帶動(dòng)小車左輪)

analogWrite(rightPin1,0);

analogWrite(rightPin2,130); //啟動(dòng)右側(cè)電機(jī)(帶動(dòng)小車右輪)

}else{

//如果前方障礙物的距離不超過(guò)10厘米,則執(zhí)行如下停止操作:

analogWrite(leftPin1,0);

analogWrite(leftPin2,0);//停止

analogWrite(rightPin1,0);

analogWrite(rightPin2,0); //停止

}

}

這樣就是一個(gè)完整的程序了,Arduino IDE編譯完成后,通過(guò)串口上傳至Arduino主控板即可調(diào)試。運(yùn)行效果:2分鐘硬件編程(3):超聲波主動(dòng)避障

2023年元旦新篇章——我的Arduino C 硬件編程入門,獻(xiàn)給家長(zhǎng)朋友們(arduino編程指南75個(gè)硬件pdf)

我搭建的超聲波小車

在前面還留了兩個(gè)問(wèn)題:

(1) 為什么定義引腳需要const修飾,而定義disVal不需要const修飾呢?

const作為C語(yǔ)言中的常變量修飾符,一個(gè)變量使用const修飾之后,其值將不允許再次被改變,否則編程會(huì)出現(xiàn)錯(cuò)誤。

比如用const修飾int變量leftPin1(電機(jī)引腳):const int leftPin1=5;

這時(shí)leftPin1成為了常變量,其引腳值不能在程序中動(dòng)態(tài)修改。

而超聲波探測(cè)距離是實(shí)時(shí)在改變著的,所以變量disVal也是需要不停改變的,所以不能用const修飾,直接這樣定義即可:int disVal=0;

(2) pulseIn(echoPin,HIGH)/58.0這個(gè)公式原理是什么呢?

超聲波發(fā)射8個(gè)40KHz的方波完成探測(cè)后,echo引腳會(huì)持續(xù)輸出高電平,持續(xù)時(shí)間就是方波發(fā)射到返回的時(shí)間,pulseIn()函數(shù)可以得到這個(gè)時(shí)間(微秒單位)。

那么我們?nèi)绻堰@個(gè)時(shí)間(微秒)轉(zhuǎn)換成距離(厘米)呢?

方波的速度(也就是聲速)是340 米/秒,可以換算為0.034cm/微秒,速度乘以時(shí)間就是距離,所以0.034*pulseIn()得到的是方波往返的距離,然后需要除2,才是真正到前方障礙物的距離,因此完整的公式是:

0.034*pulseIn()/2

這個(gè)公式可以進(jìn)一步簡(jiǎn)化為:

pulseIn()/58

五、Arduino C 近期一些源碼例子推薦

2分鐘硬件編程(4):一起動(dòng)手制作Arduino C紅外遙控超聲波小車

2分鐘硬件編程(5):隨動(dòng)小車出現(xiàn)車身抖動(dòng)現(xiàn)象,看如何完美解決?

2分鐘硬件編程(6):自己動(dòng)手做一輛追著光飛馳的小車(Arduino C)

2023年元旦新篇章——我的Arduino C 硬件編程入門,獻(xiàn)給家長(zhǎng)朋友們(arduino編程指南75個(gè)硬件pdf)

我的紅外超聲波小車

再有10分鐘就是新年了!

2022年注定是所有人刻骨銘心的一年,很多人永遠(yuǎn)地離開了,包括自己的一些親人。但我們依舊希望這個(gè)世界一年比一年好。

雖然會(huì)很難,但”希望“永遠(yuǎn)是人類存在的價(jià)值,我們相信希望,我們帶著美好的希望在新的2023年里繼續(xù)努力,希望可以激發(fā)學(xué)習(xí)和生活的動(dòng)力,希望可以激發(fā)創(chuàng)造的力量,希望可以讓文明更進(jìn)步。

借用《基督山伯爵》的結(jié)尾,人生的智慧都集中在兩個(gè)詞,希望與等待。

所有人,2023,新年好!

相關(guān)新聞

聯(lián)系我們
聯(lián)系我們
在線咨詢
分享本頁(yè)
返回頂部