之前做的舵機云臺自動瞄色塊的裝置 現在已經拆掉了,所以沒有圖片
就是類似19年國賽電磁的發揮部分要求
單片機源程序如下:
- #include "control.h"
- u8 key = 0;
- u8 mode = 0;
- u8 sign = 0;
- u16 mode_r = 0;
- u16 mode_p = 0;
- void TIM1_UP_IRQHandler(void) //TIM1中斷
- {
- if(TIM_GetITStatus(TIM1,TIM_IT_Update) != RESET) //檢查指定的TIM中斷發生與否:TIM 中斷源
- {
- TIM_ClearITPendingBit(TIM1,TIM_IT_Update); //清除TIMx的中斷待處理位:TIM 中斷源
- key = KEY_Scan();
- mode = click_N_Double(50);
- if(key == 1)
- {
- LED0 = 1;
- mode_r++;
- if(mode_r <= 6)
- roll = 1500 + 110 * mode_r; //9.9度
- if(mode_r > 6)
- roll = 1500 - 110 * (mode_r - 6);
- if(mode_r > 12)
- {
- roll = 1500;
- mode_r = 0;
- }
- delay_ms(100);
- LED0 = 0;
- }
- if(key == 2)
- {
- LED1 = 1;
- mode_p++;
- if(mode_p <= 3)
- pitch = 1000 + 110 * mode_p; //9.9度
- if(mode_p > 3)
- pitch = 1000 - 110 * (mode_p - 3); //9.9度
- if(mode_p > 6)
- {
- pitch = 1000;
- mode_p = 0;
- }
- delay_ms(100);
- LED1 = 0;
- }
-
- if(key == 3)
- {
- LED0 = 1;
- LED1 = 1;
- TIM_SetCompare1(TIM4,roll);
- TIM_SetCompare2(TIM4,pitch);
- delay_ms(100);
- LED0 = 0;
- LED1 = 0;
- }
- if(mode == 2)
- sign = 1;
- if(sign == 1)
- autoaid();
- }
- }
- void autoaid(void)
- {
- delay_ms(100);
- if(OpenMV_Rx_BUF[0] < 140)
- {
- roll += 33;
- if(roll >= 2160)
- roll -= 33;
- TIM_SetCompare1(TIM4,roll);
- }
- if(OpenMV_Rx_BUF[0] > 180)
- {
- roll -= 33;
- if(roll <= 840)
- roll += 33;
- TIM_SetCompare1(TIM4,roll);
- }
- if(OpenMV_Rx_BUF[1] < 90)//0x5F 95
- {
- pitch += 33;
- if(pitch >= 1440)
- pitch -= 33;
- TIM_SetCompare2(TIM4,pitch);
- }
- if(OpenMV_Rx_BUF[1] > 140)//0x87 135
- {
- pitch -= 33;
- if(pitch <= 670)
- pitch += 33;
- TIM_SetCompare2(TIM4,pitch);
- }
- }
復制代碼- import sensor, image, time
- from pyb import UART
- import json
- threshold = [(32, 60, 127, 41, -128, 127)]
- sensor.reset()
- sensor.set_pixformat(sensor.RGB565)
- sensor.set_framesize(sensor.QVGA)
- sensor.skip_frames(time = 2000 )
- sensor.set_auto_whitebal(False)
- #關閉白平衡。白平衡是默認開啟的,在顏色識別中,需要關閉白平衡。
- clock = time.clock()
- uart = UART(3, 115200)
- uart.init(115200, bits=8, parity=None, stop=1) #8位數據位,無校驗位,1位停止位、
- while(True):
- clock.tick()
- img = sensor.snapshot()
- blob = img.find_blobs(threshold, area_threshold=300)
- if blob: #如果找到了目標顏色
- # print(blob)
- # uart.write("B3 B3 ") #一幀數據的幀頭
- FH = bytearray([0xb3,0xb3])
- uart.write(FH)
- for b in blob:
- #迭代找到的目標顏色區域
- img.draw_rectangle(b[0:4]) # rect
- img.draw_cross(b[5], b[6]) # cx, cy
- x = b.cx()
- y = b.cy()
- #area = b.area()
- if x >= 256:
- x -= 70
- if x < 256:
- print(x, y,'\n')
- data = bytearray([x,y])
- uart.write(data)
復制代碼
所有資料51hei提供下載:
原—顏色 數傳.rar
(807 Bytes, 下載次數: 173)
2019-10-13 21:05 上傳
點擊文件名下載附件
自動瞄 - 改.7z
(184.28 KB, 下載次數: 164)
2019-10-13 21:22 上傳
點擊文件名下載附件
|