又大又粗又猛免费视频久久_国产理论在线播放_久久男人av资源网站免费软件_99国产精品无码

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

—— 本文獻給2023新年里想和孩子一起學習、成長的家長朋友們!

一、Arduino C是什么?

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

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

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

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

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

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

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

我的Arduino IDE1.8.9主界面

三、Arduino C的程序結構

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

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

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

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

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

源碼:

//結構第1部分:

const int leftPin1=5;// 左側電機引腳

const int leftPin2=6; // 左側電機引腳

const int rightPin1=11; // 右側電機引腳

const int rightPin2=3; // 右側電機引腳

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

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

int disVal=0;//超聲波探測距離變量

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

//結構第2部分:

void setup() {

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

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

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

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

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

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

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

}

//結構第3部分:

void loop() {

//主程序代碼,會反復運行:

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

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

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

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

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

disVal = pulseIn(echoPin,HIGH)/58.0;

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

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

if(disVal >10){

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

analogWrite(leftPin1,0);

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

analogWrite(rightPin1,0);

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

}else{

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

analogWrite(leftPin1,0);

analogWrite(leftPin2,0);//停止

analogWrite(rightPin1,0);

analogWrite(rightPin2,0); //停止

}

}

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

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

我搭建的超聲波小車

在前面還留了兩個問題:

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

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

比如用const修飾int變量leftPin1(電機引腳):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()函數可以得到這個時間(微秒單位)。

那么我們如果把這個時間(微秒)轉換成距離(厘米)呢?

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

0.034*pulseIn()/2

這個公式可以進一步簡化為:

pulseIn()/58

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

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

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

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

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

我的紅外超聲波小車

再有10分鐘就是新年了!

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

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

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

所有人,2023,新年好!

相關新聞

聯系我們
聯系我們
在線咨詢
分享本頁
返回頂部