加入星計劃,您可以享受以下權(quán)益:

  • 創(chuàng)作內(nèi)容快速變現(xiàn)
  • 行業(yè)影響力擴(kuò)散
  • 作品版權(quán)保護(hù)
  • 300W+ 專業(yè)用戶
  • 1.5W+ 優(yōu)質(zhì)創(chuàng)作者
  • 5000+ 長期合作伙伴
立即加入

TurnipBit改造智能小車套件

2018/06/13
42
服務(wù)支持:
技術(shù)交流群

完成交易后在“購買成功”頁面掃碼入群,即可與技術(shù)大咖們分享疑惑和經(jīng)驗、收獲成長和認(rèn)同、領(lǐng)取優(yōu)惠和紅包等。

虛擬商品不可退

當(dāng)前內(nèi)容為數(shù)字版權(quán)作品,購買后不支持退換且無法轉(zhuǎn)移使用。

加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點資訊討論
相關(guān)方案
  • 方案介紹
  • 相關(guān)文件
  • 相關(guān)推薦
  • 電子產(chǎn)業(yè)圖譜
申請入駐 產(chǎn)業(yè)圖譜

urnipBit改造智能小車套件所需器材:

電機(jī)驅(qū)動和超聲波的安裝 超聲波模塊共4個引腳,分別是VCC、GND、Trig和Echo。VCC接TurnipBit擴(kuò)展板的+5V引腳,GND接TurnipBit擴(kuò)展板的GND引腳,Trig觸發(fā)引腳接P5,Echo回傳引腳接P8。L298N電機(jī)驅(qū)動模塊左側(cè)OUT3、OUT4接線端子對應(yīng)接入左輪電機(jī)的下側(cè)、上側(cè)側(cè)銅片,右側(cè)也是。L298N的輸入端IN1、IN2、IN3、IN4分別接入擴(kuò)展板的P19、P13、P12、P11。詳細(xì)見下表:

TurnipBit擴(kuò)展板 超聲波模塊 L298N
+5V VCC +12V、+5V
GND GND GND
P5 Trig
P8 Echo
P11 IN4
P12 IN3
P13 IN2
P14 IN1

程序設(shè)計偽代碼分析

讓我們先用偽代碼來分析一下避障車的程序邏輯。首先,我們通過小車的超聲波模塊來檢測前方是否存在障礙物,計算出與障礙物之間的距離。當(dāng)與障礙物的距離小于或等于我們預(yù)設(shè)的安全距離時,控制小車進(jìn)行轉(zhuǎn)向避開障礙物;當(dāng)與障礙物的距離大于我們預(yù)設(shè)的安全距離時,控制小車進(jìn)行繼續(xù)前進(jìn);邏輯順序如下:第一步,觸犯超聲波模塊開始檢測;第二步:計算出與前方障礙物的距離;第三步:判斷與障礙物的距離是否小于設(shè)定的安全距離;第四步:若小于或等于則進(jìn)行轉(zhuǎn)向,避開障礙物;第五步:若大于則繼續(xù)保持前進(jìn)。

根據(jù)偽代碼,畫成流程圖如下:

 

代碼分析會思考的避障車整體代碼,可參考右側(cè)代碼顯示區(qū),如下。

from microbit import *

display.show(Image.ARROW_N)

pin11.write_digital(0)

pin12.write_digital(1)

pin13.write_digital(0)

pin19.write_digital(1)

while True:

num = 0

pin5.write_digital(0)

pin5.write_digital(1)

sleep(0.01)

if pin8.read_digital() != True:

pin5.write_digital(0)

pin5.write_digital(1)

sleep(0.01)

while pin8.read_digital():

num = num + 1

if num <= 8:

display.show(Image.ARROW_W)

pin11.write_digital(1)

pin12.write_digital(0)

pin13.write_digital(0)

pin19.write_digital(1)

sleep(1000)

display.show(Image.ARROW_N)

pin11.write_digital(0)

pin12.write_digital(1)

pin13.write_digital(0)

pin19.write_digital(1)

接下來,我們一起來分析一下代碼。通過上面的代碼,不難發(fā)現(xiàn),控制避障車前進(jìn)的代碼部分我們重復(fù)編寫了兩遍,在實際項目中這種寫法是不合理的。為了讓代碼更加簡潔,優(yōu)雅,我們將控制前進(jìn)的代碼部分提取出來建立名稱為Go()的函數(shù),在需要執(zhí)行前進(jìn)的地方直接調(diào)用Go()函數(shù)即可。

from microbit import *

def Go():

display.show(Image.ARROW_N)

pin11.write_digital(0)

pin12.write_digital(1)

pin13.write_digital(0)

pin19.write_digital(1)

Go()

while True:

num = 0

pin5.write_digital(0)

pin5.write_digital(1)

sleep(0.01)

if pin8.read_digital() != True:

pin5.write_digital(0)

pin5.write_digital(1)

sleep(0.01)

while pin8.read_digital():

num = num + 1

if num <= 8:

display.show(Image.ARROW_W)

pin11.write_digital(1)

pin12.write_digital(0)

pin13.write_digital(0)

pin19.write_digital(1)

sleep(1000)

Go()

按照同樣的方式,我們將控制轉(zhuǎn)向和檢測障礙物的代碼分別建立Turn()和Detection()函數(shù)。

from microbit import *

def Go():

display.show(Image.ARROW_N)

pin11.write_digital(0)

pin12.write_digital(1)

pin13.write_digital(0)

pin19.write_digital(1)

def Turn():

display.show(Image.ARROW_W)

pin11.write_digital(1)

pin12.write_digital(0)

pin13.write_digital(0)

pin19.write_digital(1)

def Detection():

num=0

pin5.write_digital(0)

pin5.write_digital(1)

sleep(0.01)

if pin8.read_digital() != True:

pin5.write_digital(0)

pin5.write_digital(1)

sleep(0.01)

while pin8.read_digital():

num = num + 1

return num

Go()

while True:

num = Detection()

if num <= 8:

Turn()

sleep(1000)

Go()

代碼如上 ,拼插編程代碼見附件。

轉(zhuǎn)自Geek-bodasister。

  • 圖形拼插代碼.rar
    描述:圖形拼插代碼

相關(guān)推薦

電子產(chǎn)業(yè)圖譜