功能介紹放開(kāi)頭, 使用便捷無(wú)需愁
這是全網(wǎng)最詳細(xì)、性價(jià)比最高的STM32實(shí)戰(zhàn)項(xiàng)目入門(mén)教程,通過(guò)合理的硬件設(shè)計(jì)和詳細(xì)的視頻筆記介紹,硬件使用STM32F103主控資料多方便學(xué)習(xí),通過(guò)3萬(wàn)字筆記、12多個(gè)小時(shí)視頻、20多章節(jié)代碼手把手教會(huì)你如何開(kāi)發(fā)和調(diào)試。讓你更快掌握嵌入式系統(tǒng)開(kāi)發(fā)。
V3.3.0-STM32智能小車(chē)
視頻: https://www.bilibili.com/video/BV16x4y1M7EN/?spm_id_from=333.337.search-card.all.click
V3:HAL庫(kù)開(kāi)發(fā)、功能:PID速度控制、PID循跡、PID跟隨、遙控、避障、PID角度控制、視覺(jué)控制、電磁循跡、RTOS等功能。
19.5-STM32接收數(shù)據(jù)-根據(jù)狀態(tài)控制電機(jī)
前面我們測(cè)試了openmv能夠正確識(shí)別,正確發(fā)送數(shù)據(jù)、STM32能夠正確接收、那么下面STM32單片機(jī)就要開(kāi)始控制電機(jī)了。
這里控制電機(jī)其實(shí)和我們紅外循跡PID基本一致。
需要注意的 因?yàn)槲覀兊臄z像頭更加前瞻,距離車(chē)輪更遠(yuǎn),所以電機(jī)同樣的擺動(dòng)幅度,攝像頭擺動(dòng)更大。
先分析一下之前的代碼,然后明白我們要改什么了就
所以我們需要上面紅色減藍(lán)色 的部分
這里我們先定義一個(gè)結(jié)構(gòu)體,這個(gè)是攝像頭PID循跡,仿造那個(gè)紅外對(duì)管的就可以。
tPid pidOpenmv_Tracking;//openmv攝像頭的PID結(jié)構(gòu)體類(lèi)型變量
pidOpenmv_Tracking.actual_val=0.0;
pidOpenmv_Tracking.target_val=0.00;//攝像頭PID 的目標(biāo)值為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先調(diào)整的小一些
pidOpenmv_Tracking.Ki=0;
pidOpenmv_Tracking.Kd=0.10;
聲明一下
extern tPid pidOpenmv_Tracking;//攝像頭的PID
sprintf((char*)OledString, "lHW:%d ", g_lHW_State);//視覺(jué)識(shí)別結(jié)果
OLED_ShowString(0,0,OledString,12);//這個(gè)是oled驅(qū)動(dòng)里面的,是顯示位置的一個(gè)函數(shù),
g_fHW_PID_Out = PID_realize(&pidOpenmv_Tracking,g_cThisState);//PID計(jì)算輸出目標(biāo)速度 這個(gè)速度,會(huì)和基礎(chǔ)速度加減
g_fHW_PID_Out1 = 0.5 + g_fHW_PID_Out;//電機(jī)1速度=基礎(chǔ)速度+循跡PID輸出速度
g_fHW_PID_Out2 = 0.5 - g_fHW_PID_Out;//電機(jī)1速度=基礎(chǔ)速度-循跡PID輸出速度
if(g_fHW_PID_Out1 >1.2) g_fHW_PID_Out1 =1.2;//進(jìn)行限幅 限幅速度在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;//進(jìn)行限幅 限幅速度在0-1.2之間
if(g_fHW_PID_Out2 < 0) g_fHW_PID_Out2 =0;
if(g_cThisState != g_cLastState)//如何這次狀態(tài)不等于上次狀態(tài)、就進(jìn)行改變目標(biāo)速度和控制電機(jī)、在定時(shí)器中依舊定時(shí)控制電機(jī)
{
motorPidSetSpeed(g_fHW_PID_Out1,g_fHW_PID_Out2);//通過(guò)計(jì)算的速度控制電機(jī)
}
g_cLastState = g_cThisState;//保存上次紅外對(duì)管狀態(tài)
注意攝像頭不能仰角太大
審核編輯 黃宇
-
STM32
+關(guān)注
關(guān)注
2281文章
10974瀏覽量
360624 -
小車(chē)
+關(guān)注
關(guān)注
0文章
55瀏覽量
21158 -
單片機(jī)通信
+關(guān)注
關(guān)注
1文章
12瀏覽量
15462 -
控制電機(jī)
+關(guān)注
關(guān)注
0文章
243瀏覽量
18485 -
openMV
+關(guān)注
關(guān)注
3文章
39瀏覽量
10101
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
第19.1 章-星瞳科技 OpenMV視覺(jué)循跡功能 超詳細(xì)OpenMV與STM32單片機(jī)通信

19.3-星曈科技 openmv Hopenmv發(fā)送五個(gè)uchar Openmv+STM32F103C8T6視覺(jué)巡線小車(chē) STM32循跡小車(chē)系列教程

19.4-STM32接收數(shù)據(jù)-狀態(tài)顯示在屏幕 openMV尋跡與小車(chē)控制 Openmv+STM32F103C8T6視覺(jué)巡線小車(chē)

怎樣設(shè)計(jì)OPENMV和STM32的識(shí)別追蹤小車(chē)
OpenMv和STM32通信問(wèn)題
STM32與openmv通信的相關(guān)資料分享
基于OPENMV和STM32的識(shí)別追蹤小車(chē)設(shè)計(jì)實(shí)現(xiàn)
OpenMv與stm32簡(jiǎn)單串口通信

【星曈科技】OpenMv筆記——利用OpenMV與STM32進(jìn)行串口通信

OpenMV識(shí)別色塊并且與STM32串口通信

STM32與openmv通信(HAL庫(kù))

OpenMV與單片機(jī)串口通信交互

OPENMV和STM32的識(shí)別追蹤小車(chē)(詳細(xì)版)之OPENMV端

【DIY】基于OpenMV的STM32追球小車(chē)

評(píng)論