功能介紹放開頭, 使用便捷無需愁
這是全網最詳細、性價比最高的STM32實戰項目入門教程,通過合理的硬件設計和詳細的視頻筆記介紹,硬件使用STM32F103主控資料多方便學習,通過3萬字筆記、12多個小時視頻、20多章節代碼手把手教會你如何開發和調試。讓你更快掌握嵌入式系統開發。
V3.3.0-STM32智能小車
視頻: https://www.bilibili.com/video/BV16x4y1M7EN/?spm_id_from=333.337.search-card.all.click
V3:HAL庫開發、功能:PID速度控制、PID循跡、PID跟隨、遙控、避障、PID角度控制、視覺控制、電磁循跡、RTOS等功能。
19.5-STM32接收數據-根據狀態控制電機
前面我們測試了openmv能夠正確識別,正確發送數據、STM32能夠正確接收、那么下面STM32單片機就要開始控制電機了。
這里控制電機其實和我們紅外循跡PID基本一致。
需要注意的 因為我們的攝像頭更加前瞻,距離車輪更遠,所以電機同樣的擺動幅度,攝像頭擺動更大。
先分析一下之前的代碼,然后明白我們要改什么了就
所以我們需要上面紅色減藍色 的部分
這里我們先定義一個結構體,這個是攝像頭PID循跡,仿造那個紅外對管的就可以。
tPid pidOpenmv_Tracking;//openmv攝像頭的PID結構體類型變量
pidOpenmv_Tracking.actual_val=0.0;
pidOpenmv_Tracking.target_val=0.00;//攝像頭PID 的目標值為0
pidOpenmv_Tracking.err=0.0;
pidOpenmv_Tracking.err_last=0.0;
pidOpenmv_Tracking.err_sum=0.0;
pidOpenmv_Tracking.Kp=-0.4;//攝像頭循跡PID的K和d先調整的小一些
pidOpenmv_Tracking.Ki=0;
pidOpenmv_Tracking.Kd=0.10;
聲明一下
extern tPid pidOpenmv_Tracking;//攝像頭的PID
sprintf((char*)OledString, "lHW:%d ", g_lHW_State);//視覺識別結果
OLED_ShowString(0,0,OledString,12);//這個是oled驅動里面的,是顯示位置的一個函數,
g_fHW_PID_Out = PID_realize(&pidOpenmv_Tracking,g_cThisState);//PID計算輸出目標速度 這個速度,會和基礎速度加減
g_fHW_PID_Out1 = 0.5 + g_fHW_PID_Out;//電機1速度=基礎速度+循跡PID輸出速度
g_fHW_PID_Out2 = 0.5 - g_fHW_PID_Out;//電機1速度=基礎速度-循跡PID輸出速度
if(g_fHW_PID_Out1 >1.2) g_fHW_PID_Out1 =1.2;//進行限幅 限幅速度在0-1.2之間
if(g_fHW_PID_Out1 < 0) g_fHW_PID_Out1 =0;
if(g_fHW_PID_Out2 >1.2) g_fHW_PID_Out2 =1.2;//進行限幅 限幅速度在0-1.2之間
if(g_fHW_PID_Out2 < 0) g_fHW_PID_Out2 =0;
if(g_cThisState != g_cLastState)//如何這次狀態不等于上次狀態、就進行改變目標速度和控制電機、在定時器中依舊定時控制電機
{
motorPidSetSpeed(g_fHW_PID_Out1,g_fHW_PID_Out2);//通過計算的速度控制電機
}
g_cLastState = g_cThisState;//保存上次紅外對管狀態
注意攝像頭不能仰角太大
審核編輯 黃宇
-
STM32
+關注
關注
2273文章
10926瀏覽量
357767 -
小車
+關注
關注
0文章
54瀏覽量
21040 -
單片機通信
+關注
關注
1文章
12瀏覽量
15421 -
控制電機
+關注
關注
0文章
241瀏覽量
18262 -
openMV
+關注
關注
3文章
39瀏覽量
9880
發布評論請先 登錄
相關推薦
19.3-星曈科技 openmv Hopenmv發送五個uchar Openmv+STM32F103C8T6視覺巡線小車 STM32循跡小車系列教程
![19.3-<b class='flag-5'>星</b><b class='flag-5'>曈</b>科技 <b class='flag-5'>openmv</b> Hopenmv發送五個uchar <b class='flag-5'>Openmv+STM32</b>F103C8T6視覺巡線<b class='flag-5'>小車</b> <b class='flag-5'>STM32</b>循跡<b class='flag-5'>小車</b>系列教程](https://file1.elecfans.com/web2/M00/03/DF/wKgaoma-11WAeNKnAARmh75k2yc492.png)
OpenMv和STM32通信問題
OpenMv與stm32簡單串口通信
![<b class='flag-5'>OpenMv</b>與<b class='flag-5'>stm32</b>簡單串口<b class='flag-5'>通信</b>](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
【星曈科技】OpenMv筆記——利用OpenMV與STM32進行串口通信
![【<b class='flag-5'>星</b><b class='flag-5'>曈</b>科技】<b class='flag-5'>OpenMv</b>筆記——利用<b class='flag-5'>OpenMV</b>與<b class='flag-5'>STM32</b>進行串口<b class='flag-5'>通信</b>](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
OpenMV識別色塊并且與STM32串口通信
![<b class='flag-5'>OpenMV</b><b class='flag-5'>識別</b>色塊并且與<b class='flag-5'>STM32</b>串口<b class='flag-5'>通信</b>](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
STM32與openmv通信(HAL庫)
![<b class='flag-5'>STM32</b>與<b class='flag-5'>openmv</b><b class='flag-5'>通信</b>(HAL庫)](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
OpenMV與單片機串口通信交互
![<b class='flag-5'>OpenMV</b>與<b class='flag-5'>單片機</b>串口<b class='flag-5'>通信</b>交互](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
【DIY】基于OpenMV的STM32追球小車
![【DIY】基于<b class='flag-5'>OpenMV</b>的<b class='flag-5'>STM32</b>追球<b class='flag-5'>小車</b>](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
評論