可以識別兩種顏色并反饋到STM32進行解析,標記并區分兩種顏色的,內還有stm32追小球的云臺圖為,STM32通過串口與PC端通信上傳數據的效果,幀率很高很穩定!
1.png (46.99 KB, 下載次數: 88)
下載附件
2019-11-26 19:42 上傳
單片機源程序如下:
- #include "led.h"
- #include "delay.h"
- #include "key.h"
- #include "sys.h"
- #include "usart.h"
- #include "holder.h"
- #include "oled.h"
- #include "mpu6050.h"
- #include "control.h"
- #include "HMI.h"
- #include "usart2.h"
- #include "openmv.h"
- /*全局變量*/
- int PWM=1665;
- int16_t p_x=100;
- int Holder_PID(int8_t Xerror,int8_t Dzone) ;
- int main(void)
- {
- delay_init(); //延時函數初始化
- NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //設置NVIC中斷分組2:2位搶占優先級,2位響應優先級
- uart_init(115200); /*opemv串口接收*/
-
- uart3_init(9600); /*串口屏*/
- uart2_init(9600); /*串口發送printf*/
-
- while(1)
- {
-
- printf("\n\r X偏移=%d Y偏移=%d \n\r" ,OpenMV_RX ,OpenMV_RY); /*X軸左負右正 red */
- printf("\n\r X偏移=%d Y偏移=%d \n\r" ,OpenMV_GX ,OpenMV_GY); /*X軸左負右正 green */
- printf("\n\r 顏色合=%d \n\r",OpenMV_add); /*0x00沒檢測到0x01red 0x02green 0x03都有*/
-
- }
- }
- int Holder_PID(int8_t Xerror,int8_t Dzone) /*PWM在1750-1950之間對應0~180°*/
- {
- static float kp=0.08,kd=0.18,Ki=0;
- static float LastError,SumError,LastPWM,PWM_PID;
- float Error,dError;
- char flag;
- Error=Xerror;
- /*積分*/
- SumError+=Error;
-
- if(Xerror<=Dzone&&Xerror>=-Dzone)
- {
- return LastPWM;
- }
- /*微分*/
- dError=Error-LastError;
- LastError=Error;
-
- PWM_PID=(kp*Error+kd*dError+flag*Ki*SumError);
- if(PWM_PID<=Dzone&&PWM_PID>0.5)PWM_PID=1;
- if(PWM_PID>=-Dzone&&PWM_PID<-0.5)PWM_PID=-1;
-
- PWM=PWM+PWM_PID-2;
-
- /*限幅*/
- if(PWM>=1755)PWM=1755;
- if(PWM<=1575)PWM=1575;
- LastPWM=PWM;
-
- return PWM;
- }
復制代碼
所有資料51hei提供下載:
識別兩種顏色.7z
(273.48 KB, 下載次數: 196)
2019-11-26 19:44 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|