久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 6837|回復: 7
收起左側

openmv舵機云臺 自動追蹤色塊 STM32源程序

  [復制鏈接]
ID:516644 發表于 2019-10-13 21:05 | 顯示全部樓層 |閱讀模式
  之前做的舵機云臺自動瞄色塊的裝置 現在已經拆掉了,所以沒有圖片

就是類似19年國賽電磁的發揮部分要求

單片機源程序如下:
  1. #include "control.h"

  2. u8 key = 0;
  3. u8 mode = 0;
  4. u8 sign = 0;
  5. u16 mode_r = 0;
  6. u16 mode_p = 0;

  7. void TIM1_UP_IRQHandler(void)   //TIM1中斷
  8. {
  9.         if(TIM_GetITStatus(TIM1,TIM_IT_Update) != RESET) //檢查指定的TIM中斷發生與否:TIM 中斷源
  10.         {
  11.                         TIM_ClearITPendingBit(TIM1,TIM_IT_Update);  //清除TIMx的中斷待處理位:TIM 中斷源                 
  12.                         key = KEY_Scan();
  13.                   mode = click_N_Double(50);

  14.                         if(key == 1)
  15.                         {
  16.                                 LED0 = 1;
  17.                                 mode_r++;
  18.                                 if(mode_r <= 6)
  19.                                         roll = 1500 + 110 * mode_r; //9.9度
  20.                                 if(mode_r > 6)
  21.                                         roll = 1500 - 110 * (mode_r - 6);
  22.                                 if(mode_r > 12)
  23.                                 {
  24.                                         roll = 1500;
  25.                                         mode_r = 0;
  26.                                 }
  27.                                 delay_ms(100);
  28.                                 LED0 = 0;
  29.                         }
  30.                         if(key == 2)
  31.                         {
  32.                                 LED1 = 1;
  33.                                 mode_p++;
  34.                                 if(mode_p <= 3)
  35.                                         pitch = 1000 + 110 * mode_p; //9.9度
  36.                                 if(mode_p > 3)
  37.                                         pitch = 1000 - 110 * (mode_p - 3); //9.9度
  38.                                 if(mode_p > 6)
  39.                                 {
  40.                                         pitch = 1000;
  41.                                         mode_p = 0;
  42.                                 }
  43.                                 delay_ms(100);
  44.                                 LED1 = 0;
  45.                         }
  46.                         
  47.                  if(key == 3)
  48.                  {
  49.                          LED0 = 1;
  50.                          LED1 = 1;
  51.                          TIM_SetCompare1(TIM4,roll);
  52.                          TIM_SetCompare2(TIM4,pitch);
  53.                          delay_ms(100);
  54.                          LED0 = 0;
  55.                          LED1 = 0;
  56.                  }
  57.                  if(mode == 2)
  58.                          sign = 1;
  59.                  if(sign == 1)
  60.                         autoaid();
  61.         }
  62. }

  63. void autoaid(void)
  64. {
  65.         delay_ms(100);
  66.         if(OpenMV_Rx_BUF[0] < 140)
  67.         {
  68.                 roll += 33;
  69.                 if(roll >= 2160)
  70.                         roll -= 33;
  71.                 TIM_SetCompare1(TIM4,roll);
  72.         }
  73.         if(OpenMV_Rx_BUF[0] > 180)
  74.         {
  75.                 roll -= 33;
  76.                 if(roll <= 840)
  77.                         roll += 33;
  78.                 TIM_SetCompare1(TIM4,roll);
  79.         }
  80.         if(OpenMV_Rx_BUF[1] < 90)//0x5F 95
  81.         {
  82.                 pitch += 33;
  83.                 if(pitch >= 1440)
  84.                         pitch -= 33;
  85.                 TIM_SetCompare2(TIM4,pitch);
  86.         }
  87.         if(OpenMV_Rx_BUF[1] > 140)//0x87  135
  88.         {
  89.                 pitch -= 33;
  90.                 if(pitch <= 670)
  91.                         pitch += 33;
  92.                 TIM_SetCompare2(TIM4,pitch);
  93.         }
  94. }
復制代碼
  1. import sensor, image, time
  2. from pyb import UART
  3. import json

  4. threshold = [(32, 60, 127, 41, -128, 127)]

  5. sensor.reset()
  6. sensor.set_pixformat(sensor.RGB565)
  7. sensor.set_framesize(sensor.QVGA)
  8. sensor.skip_frames(time = 2000 )
  9. sensor.set_auto_whitebal(False)
  10. #關閉白平衡。白平衡是默認開啟的,在顏色識別中,需要關閉白平衡。

  11. clock = time.clock()

  12. uart = UART(3, 115200)

  13. uart.init(115200, bits=8, parity=None, stop=1)  #8位數據位,無校驗位,1位停止位、

  14. while(True):
  15.     clock.tick()
  16.     img = sensor.snapshot()
  17.     blob = img.find_blobs(threshold, area_threshold=300)
  18.     if blob: #如果找到了目標顏色
  19.        # print(blob)
  20.        # uart.write("B3 B3 ")    #一幀數據的幀頭
  21.         FH = bytearray([0xb3,0xb3])
  22.         uart.write(FH)
  23.         for b in blob:
  24.         #迭代找到的目標顏色區域
  25.             img.draw_rectangle(b[0:4]) # rect
  26.             img.draw_cross(b[5], b[6]) # cx, cy
  27.             x = b.cx()
  28.             y = b.cy()
  29.             #area = b.area()
  30.             if x >= 256:
  31.                 x -= 70
  32.             if x < 256:
  33.                 print(x, y,'\n')
  34.                 data = bytearray([x,y])
  35.                 uart.write(data)
復制代碼


所有資料51hei提供下載:
原—顏色 數傳.rar (807 Bytes, 下載次數: 173)
回復

使用道具 舉報

ID:504404 發表于 2019-10-19 12:19 | 顯示全部樓層
老哥這個很厲害啊,我研究一上午他倆的通訊,你這個強
回復

使用道具 舉報

ID:473410 發表于 2019-11-3 17:26 | 顯示全部樓層
這第二個文件是用python寫的嗎?
回復

使用道具 舉報

ID:516644 發表于 2020-2-29 19:34 | 顯示全部樓層
在openmv的程序里,因為當 x > 256時,數據會超過0XFF,所以我在程序里將 x - 70;其實可以將x的百位十位個位分別求出來, 再逐個進行傳輸。

評分

參與人數 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

ID:480013 發表于 2020-7-8 11:22 | 顯示全部樓層
LOVEqing 發表于 2020-2-29 19:34
在openmv的程序里,因為當 x > 256時,數據會超過0XFF,所以我在程序里將 x - 70;其實可以將x的百位十位個 ...

學到了學到了/&#128077;
回復

使用道具 舉報

ID:817192 發表于 2020-9-30 09:44 | 顯示全部樓層
老哥,這個不用pid的嗎?
回復

使用道具 舉報

ID:775369 發表于 2020-10-7 13:07 | 顯示全部樓層
我愛住牛棚 發表于 2020-9-30 09:44
老哥,這個不用pid的嗎?

同問這個問題
回復

使用道具 舉報

ID:1110541 發表于 2024-2-1 22:28 | 顯示全部樓層
舵機PID使用他本來自帶的嗎?
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 91精品91久久久 | 欧美h版| 欧美精品久久久久久久久老牛影院 | 五月婷婷激情网 | 毛片高清 | 91精品综合久久久久久五月天 | 久久精品中文字幕 | 99热电影| 午夜av一区二区 | 欧美三级视频在线观看 | 午夜a区 | 亚洲欧美日韩精品久久亚洲区 | 欧美人妇做爰xxxⅹ性高电影 | 国产91久久久久蜜臀青青天草二 | 狠狠操狠狠操 | 中文精品视频 | 一区二区三区视频免费观看 | 精品国产一区二区三区久久狼黑人 | 一级黄色影片在线观看 | 午夜天堂精品久久久久 | 国产一区二区三区在线看 | 99伊人网| 特黄级国产片 | 91av久久久 | 国产一区二区三区在线视频 | 男人影音| 国产精品久久久免费 | 成人性生交大免费 | 亚洲午夜电影 | 国产成人精品免费 | 成人免费在线电影 | 免费观看一级视频 | 天天夜天天操 | 视频一区二区在线观看 | 亚洲高清在线 | 麻豆天堂| 免费午夜电影 | 亚洲一区二区三区福利 | 日韩在线精品视频 | 精品videossex高潮汇编 | av中文在线观看 |