Cyber遙控車製作

2021-10-12 07:45:58 字數 1088 閱讀 6840

**部分

-lxy

第十六屆智慧型車競賽取消了對k60晶元的使用,大量晶元論斤賣,發揮一下晶元的餘熱,基於上一次的uart串列埠通訊內容,製作一輛遙控車。

車上的板子就是實驗室流傳下來的板子,大致功能就是給電機、晶元供電以及接收uart串列埠訊號實現微控制器之間的雙向通訊。

遙控器是自己用洞洞板做的,飛了很多線。晶元用的是k60,供電用的是3.7v鋰電池經過穩壓晶元穩壓後供電。

製作的模型仿照ps手柄,有側邊按鍵以及遙感,但是是非常的粗製濫造。

搖桿相當於電位器,要求是5v供電,但是微控制器adc訊號採集只有3.3v,因此採用3.3v供電即可。另加入無線通訊模組即可通過**來實現微控制器之間的通訊。

**傳送很簡單,只要呼叫山外庫的uart_putchar函式就可以傳送乙個位元組的資料了,但是乙個位元組是遠遠不夠用的,因此可以把資料拆分成多個位元組進行使用。如果一次傳送多個位元組的資料,因為傳送端微控制器是在一直傳送,所以接收端就要識別資料的頭和尾,因此接受**就顯得尤為重要。

接受**使用的是uart串列埠中斷,因為uart_getchar函式如果沒有接收到資料就會處於等待狀態,微控制器程式就會卡住。放到中斷後,有資料到來時才執行這個函式,就不會導致程式的卡死。

眾所周知,想要識別真正的資料,資料就要有頭和尾。

方案一

一開始我使用了原子哥的stm32中uart串列埠通訊實驗的**,但是接收到的資料效果十分不好,經過計算發現經常丟失乙個位元組,於是我就換了一種思路。

方案二

我在傳送的資料的頭部加入了兩個八位校驗碼,也就是符號{

和符號,因為如果只有一位,那麼符號的ascii碼有可能和資料相同造成干擾,但是兩位檢驗碼出錯的概率就會變小。當然,也可以找那些在資料範圍以外的字元組合作為校驗碼,這樣就會大大減小出錯的概率。

注意事項

在實驗中還發現oled顯示函式所占用的時間還是很大的,不能放到串列埠中斷中,否則會造成程式的卡死。

JZOJ B組 遙控車

description 平平帶著韻韻來到了遊樂園,看到了n輛漂亮的遙控車,每輛車上都有乙個唯一的名字name i 韻韻早就迫不及待地想玩名字是s的遙控車。可是韻韻畢竟還小,她想象的名字可能是一輛車名字的字首 也就是說能確定乙個i,使s是name i 的字首 這時她就能玩第i輛車 或者是乙個無中生有的...

遙控車(洛谷 2030)

平平帶著韻韻來到了遊樂園,看到了n輛漂亮的遙控車,每輛車上都有乙個唯一的名字name i 韻韻早就迫不及待地想玩名字是s的遙控車。可是韻韻畢竟還小,她想象的名字可能是一輛車名字的字首 也就是說能確定乙個i,使s是name i 的字首 這時她就能玩第i輛車 或者是乙個無中生有的名字,即s不是任何一輛車...

遙控車動力部分的驅動檔案

1 car.件,進行管腳定義 函式原型宣告和通訊編碼的巨集定義 ifndef car h define car h include 開發板的紅外遙控器發來的通訊編碼的巨集定義,如果用開發板的遙控器,則啟用下面的巨集定義 define forward instruction 0x40 前進 defin...