|
發布時間: 2019-8-10 16:57
正文摘要:先貼本人自己寫出來的程序吧。 問題是在環島掃到全黑的情況與全黑停車情況的判斷,車子掃到全黑時總是突然開始倒車并附有卡頓挺迷的。希望大家能給個好建議。 PS.如果輪子轉速太快紅外測速無法記錄外部中斷 ... |
| 隨便說說:其實這種路線使用4個紅外循跡模塊的話是可以更加容易的實現區分環島和停車點的。使用4個傳感器全部放在車頭排放位置類似于色子上的4,只不過前面的兩個稍微寬一些 |
| 代碼問題有點多。首先你的PWM頻率太低了吧,20Hz?,電機控制起碼是幾千Hz的這樣你走起來就會很抖的,還有就是PWM電平反轉的判斷語句,也不對的能用可以說是巧合,C的if判斷不能這么寫,然后就是你的最后一塊兒代碼邏輯不對。你的停車線比較寬,用計時的方法判斷是進環島還是停車可以,但是代碼寫得很不對,你要在檢測到雙黑線后開始time計數,繼續前進延時一段時間后再檢測一次是不是全黑,是的話停車不是就繼續循跡。最后,倒車這個我倒不確定,但是抖動就是你最后那塊兒沒寫好?赡苁嵌吨吨约汉笸肆,跟你驅動頻率太低也可能有關系。 |
| 判斷式應該是連續的,而不是單獨的,如if(right2 == left2 == 0 && right1 == left1 == 1)。。else if(right2 == left2 == 0 && right1 == left1 == 1)這樣;if(R_flag) xunji();這樣試看 |
xianfajushi 發表于 2019-8-10 19:59 R_flag 的判斷內容要寫些什么呢?是對紅外的判斷還是? |
| 隨便說說,首先不要直接使用 int char 應使用unsigned int這樣的;2邏輯簡化這當然不是必要的,只是可以簡化代碼如 if(right2 == left2 == 0 && right1 == left1 == 1);3調用尋跡前添加判斷R_flag |
| 隨便說說,首先不要直接使用 int char 應使用unsigned int這樣的;2邏輯簡化這當然不是必要的,只是可以簡化代碼如 if(right2 == left2 == 0 && right1 == left1 == 1);3調用尋跡前添加判斷R_flag這是猜測的。 |