林委鋒
“老師,我們學習完了機器人的‘大腦,這次我們要學習什么呢?”
“這次我們學習的是機器人的‘眼睛,當然機器人的眼睛和我們的眼睛還是有區(qū)別的,機器人的眼睛更像是蝙蝠的嘴和耳的功能。蝙蝠在黑夜中能夠自由地飛行,利用的是超聲波,超聲波有很強的方向性,當遇到障礙物時會反射回來。蝙蝠的耳朵利用嘴中發(fā)出的超聲波再被反射回來的時間計算出自己和障礙物之間的距離,及時準確地避開障礙物。這次我們就用超聲波傳感器來給機器人裝一個能夠檢測障礙物的眼睛?!?/p>
如圖1所示,超聲波傳感器的引腳有4根,分別是:1.VCC電源端;2.TRIG控制端;3.ECHO接收端;4.GND地線。
超聲波傳感器和Arduino電路板的連接如圖3所示:1腳VCC和Arduino板5V的VCC腳連接;2、3腳和Arduino板的任意兩個數(shù)字端口連接,如TRIG接2號口,ECHO連3號口;4腳接對應(yīng)的GND口。
此時,Arduino板在TRIG端輸出一個高電平,維持10微秒以上,同時傳感器在ECHO端會輸出一個高電平,一旦傳感器接收到反射回來的超聲波,ECHO就會跳轉(zhuǎn)為低電平。于是,我們可以根據(jù)此高電平的維持時間 t 來計算與障礙物之間的距離(如圖2)。
在實際編程的過程中,ArduBlock軟件提供了一個自動檢測和計算距離的超聲波傳感器模塊,只要在模塊中標明TRIG和ECHO所連接的端口就可以了,超聲波傳感器模塊會生成自動檢測和計算距離的程序,如圖4所示。
程序分成兩個部分,第一部分的作用是檢測計算與障礙物之間的距離,并將計算結(jié)果給變量“dis”,如圖5所示。程序中,超聲波傳感器模塊的“trigger”和“echo”要寫入之前電路連接時所選擇的數(shù)字引腳端口號。
“set decimal number variable”這個模塊的作用是把超聲波傳感器模塊傳送來的數(shù)據(jù)儲存到變量“dis”中。變量就像一個倉庫,用來儲存數(shù)據(jù)。如果有新的數(shù)據(jù)存入,則原來的數(shù)據(jù)就被替換?!癲ecimal number”表示變量“dis”是一個帶小數(shù)的數(shù)據(jù),也稱為浮點數(shù)。
第二個部分“串行打印”的作用是把儲存在變量“dis”中的與障礙物之間距離的數(shù)值輸出到串口監(jiān)視器中?!癲istance”是提示符,可以自行寫入。輸出到串口監(jiān)視器的數(shù)據(jù)必須是字符串類型,變量“dis”是一個浮點數(shù),所以,在輸出前要把它轉(zhuǎn)換為字符串類型,程序中的“和模擬量結(jié)合”即是完成這個作用。程序最后要加一條延時2秒的指令,否則超聲波傳感器會把檢測到的距離數(shù)據(jù)連續(xù)不斷發(fā)送到串口監(jiān)視器中(如圖6)。
程序編寫好后,下載并運行,在ArduBlock菜單欄的Arduino選項中打開串口監(jiān)視器選項,用手慢慢靠近超聲波傳感器,從近到遠,觀察串口監(jiān)視器接收到的數(shù)據(jù)變化(如圖7)。
現(xiàn)在,你有一個神奇的機器人眼睛了。