看看男人日女人,亚洲欧美日韩日本国产三,国产精品欧美日韩区二区,妓女影库妓女网在线视频

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

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

一、Arduino C是什么?

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

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

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

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

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

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

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

我的Arduino IDE1.8.9主界面

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

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

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

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

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

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

源碼:

//結(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;//超聲波探測距離變量

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

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

void setup() {

//初始化代碼,這里只運行一次:

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() {

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

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

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

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

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

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

disVal = pulseIn(echoPin,HIGH)/58.0;

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

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

if(disVal >10){

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

analogWrite(leftPin1,0);

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

analogWrite(rightPin1,0);

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

}else{

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

analogWrite(leftPin1,0);

analogWrite(leftPin2,0);//停止

analogWrite(rightPin1,0);

analogWrite(rightPin2,0); //停止

}

}

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

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

我搭建的超聲波小車

在前面還留了兩個問題:

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

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

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

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

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

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

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

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

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

0.034*pulseIn()/2

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

pulseIn()/58

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

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

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

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

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

我的紅外超聲波小車

再有10分鐘就是新年了!

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

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

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

所有人,2023,新年好!

相關(guān)新聞

聯(lián)系我們
聯(lián)系我們
在線咨詢
分享本頁
返回頂部
泗水县| 莲花县| 哈密市| 南安市| 外汇| 乌鲁木齐县| 衡阳县| 威宁| 阳江市| 武威市| 南乐县| 西昌市| 荥经县| 成都市| 阳曲县| 福建省| 保德县| 阳原县| 通州区| 旬邑县| 孟连| 太保市| 北京市| 田东县| 芜湖县| 土默特左旗| 铁力市| 丰都县| 长汀县| 景洪市| 石景山区| 桐乡市| 昭觉县| 曲周县| 万年县| 石屏县| 综艺| 江山市| 抚远县| 武平县| 苏尼特右旗|