网站建设的目录浏览,西安的互联网公司,惠州seo计费,天津 网站备案一、准备工作
有关OPENMV最大色块追踪及与STM32通信内容#xff0c;详情见【STM32HAL】与OpenMV通信
有关七针OLED屏显示内容#xff0c;详情见【STM32HAL】七针OLED(SSD1306)配置(SPI版) 二、所用工具
1、芯片#xff1a;STM32F407ZGT6
2、CUBEMX配置软件
3、KEIL5
4…一、准备工作
有关OPENMV最大色块追踪及与STM32通信内容详情见【STM32HAL】与OpenMV通信
有关七针OLED屏显示内容详情见【STM32HAL】七针OLED(SSD1306)配置(SPI版) 二、所用工具
1、芯片STM32F407ZGT6
2、CUBEMX配置软件
3、KEIL5
4、OPENMV 三、实现功能
二维云台追踪最大色块并显示中心x,y坐标至OLED 四、HAL配置步骤
1、生成两路PWM波控制舵机
周期为20ms 2、中断配置 五、KEIL填写代码
1、ptz.c
#include ptz.h
#include string.h
#include stdio.h
#include stdlib.h
#include main.h
#include tim.h
#include usart.h#define RXBUFFERSIZE 256
#define CCR_UD TIM2-CCR2 //up and down.... RANGE:420-2000
#define CCR_LR TIM2-CCR3 //Left and Right.... RANGE:420-2500
#define Cen_x 160 //x轴中心坐标值
#define Cen_y 120 //y轴中心坐标值#define sp1 7 //x轴速度
#define sp2 6 //y轴速度
#define range 40 //识别范围char RxBuffer[RXBUFFERSIZE],rx_buf[RXBUFFERSIZE];
uint8_t aRxBuffer;
uint8_t Uart1_Rx_Cnt 0;int cnt_rx0,cnt_dt0;
int cx0,cy0;void Tilt(void)
{if(cx (Cen_x-range)) CCR_LR (CCR_LR2450)?2450:CCR_LRsp1;else if (cx (Cen_xrange)) CCR_LR (CCR_LR450)?450:CCR_LR -sp1;else CCR_LR CCR_LR;if(cy (Cen_y-range)) CCR_UD (CCR_UD420)?420:CCR_UD -sp2;else if (cy (Cen_yrange)) CCR_UD (CCR_UD1800)?1800:CCR_UDsp2;else CCR_UD CCR_UD;
}void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{UNUSED(huart);if(huarthuart2){RxBuffer[Uart1_Rx_Cnt] aRxBuffer;Uart1_Rx_Cnt;if((RxBuffer[Uart1_Rx_Cnt-1] 0xb3)(RxBuffer[Uart1_Rx_Cnt-2] 0xb3)) cnt_rx1; //帧头判定else if((RxBuffer[Uart1_Rx_Cnt-2] 0x0d)(RxBuffer[Uart1_Rx_Cnt-1] 0x0a)) cnt_rx2; //帧尾判定else cnt_rx0;switch (cnt_rx){case 1:Uart1_Rx_Cnt 0;memset(RxBuffer,0x00,sizeof(RxBuffer));break;case 2:RxBuffer[Uart1_Rx_Cnt-1] \0;RxBuffer[Uart1_Rx_Cnt-2] \0;strcpy(rx_buf,RxBuffer);int st0; //有效数值开始位置cnt_dt0; //空格数for(int i0;rx_buf[i];i){if(cnt_dt4) break;if(rx_buf[i] ) {cnt_dt;int temp0;for(int jst;ji;j)temptemp*10(rx_buf[j]-0);switch (cnt_dt){case 1:cxtemp;break;case 2:cytemp;break;}sti1;}}while(HAL_UART_GetState(huart2) HAL_UART_STATE_BUSY_TX);Uart1_Rx_Cnt 0;memset(RxBuffer,0x00,sizeof(RxBuffer));break;default:break;}HAL_UART_Receive_IT(huart2, (uint8_t *)aRxBuffer, 1);}
}2、main.c /* USER CODE BEGIN 2 */OLED_Init();HAL_UART_Receive_IT(huart2, (uint8_t *)aRxBuffer, 1);TIM2-CCR2 420-1;TIM2-CCR3 1400-1;HAL_TIM_PWM_Start (htim2, TIM_CHANNEL_2);HAL_TIM_PWM_Start (htim2, TIM_CHANNEL_3);/* USER CODE END 2 *//* Infinite loop *//* USER CODE BEGIN WHILE */while (1){OLED_ShowNum(30,20,cx,3,16);OLED_ShowNum(30,40,cy,3,16);OLED_Refresh();/* USER CODE END WHILE *//* USER CODE BEGIN 3 */if(flag) Tilt();}/* USER CODE END 3 */
}3、按键控制暂停
/* USER CODE BEGIN 4 */void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{if(GPIO_Pin KEY0_Pin){HAL_Delay(20); //延时消抖if(GPIO_Pin KEY0_Pin){flag0;}}
}
/* USER CODE END 4 */六、巨人之肩
【毕业设计】基于STM32及OpenMV的云台追踪装置
电赛二维云台控制
【毕业设计】基于STM32F103C8T6最小系统板与OpenMV的二维云台PID控制追踪系统 后续优化方案PID调控
位置式PID与增量式PID区别浅析 七、源码提供
【STM32OPENMV】二维云台颜色识别及追踪【无PID版】