很多設(shè)備調(diào)試,程序編寫都是自己一個人一行一行一根線一根線調(diào)試出來的, 從中體會到了很多酸甜苦辣。其中調(diào)試小車讓其識別拐彎與平時的輕度彎曲的直線之間的區(qū)別是最讓人痛苦的,不過小車最后還是跑出了全專業(yè)最快的10秒/圈的速度。
PS:此文中的小車的
循跡程序,尋光程序,Android遙控程序,重力感應(yīng)程序,循跡與尋光自由切換程序已全部上傳至網(wǎng)上。
最終效果
小車最終外觀

處理器用的是STM32F4

后面兩個輪子為驅(qū)動輪,前面一個輪子為從動輪
循跡

GIF演示
這只是初期程序的效果,考核的時候已經(jīng)不會在直線上扭來扭去了。但其實有的人的車不調(diào)也能到達(dá)差不多的效果,但無奈我的兩個馬達(dá)轉(zhuǎn)速差別太大,調(diào)節(jié)也無法完全走直線。所以必須用程序做到將其完全可控。
并且程序在檢測到需要轉(zhuǎn)彎時兩個輪子是一前一后地轉(zhuǎn)動,能夠以最大限度的提供動力使車身轉(zhuǎn)向并且還在直線上,當(dāng)檢測到轉(zhuǎn)過的角度到達(dá)時車會立即繼續(xù)向前開動。
最終程序源代碼:https://github.com/hongfeiyucode/find_way_car
尋光

這架在上面的是就是尋光傳感器,最后考核很是蛋疼,很多人寫的程序直接就是轉(zhuǎn)180度然后car_forward() 檢測到光直接停下,這種當(dāng)然是最快的,但是因為前面說過的我這小車無法直行最后跑的不是很快。
但是程序的邏輯還是很具有參考價值的:
https://github.com/hongfeiyucode/find_light_car
循跡與尋光自由切換
這個主要是利用芯片上的一個按鈕將其進(jìn)行程序之間的切換。程序檢測一個值,檢測這個鍵是否按下,還有什么時候彈起,來達(dá)到兩個程序之間切換的功能。
這樣相當(dāng)于一個程序完成了兩個程序的功能!
也另外寫了一個程序,程序還是很簡潔明了的:
https://github.com/hongfeiyucode/car_find_way_and_light
Android遙控程序
這個是工程量比較大的一個項目,程序都是自己寫的,這里把源代碼也開源了:https://github.com/hongfeiyucode/Car_remote_control
最后的程序大致界面,基本是重新改寫了一遍。后期還加了重力感應(yīng)這一功能。


操作說明:
- 打開程序
- 點(diǎn)擊主界面的
打開藍(lán)牙 - 拖出側(cè)面的側(cè)邊欄
- 點(diǎn)擊
查找藍(lán)牙設(shè)備 - 匹配小車的藍(lán)牙
- 連接成功后已經(jīng)開始進(jìn)入重力感應(yīng)遙控模式了
-
右下角的按鈕可以切換重力感應(yīng)與鍵盤操作模式 - 兩種模式各有各的特點(diǎn),找到自己的喜歡的就好

重力感應(yīng)模式


重力感應(yīng)遙控說明:
- 將手機(jī)樹立起來時小車是停止?fàn)顟B(tài)
- 想象手機(jī)是一個遙桿
- 往前傾(手機(jī)上端遠(yuǎn)離自己)是向前,往后是后退
- 左右傾斜分別是向左轉(zhuǎn)向右轉(zhuǎn)
覺得好的就表示一下唄 _(:з」∠)_
PS:別忘了star或者fork一下我的程序哦