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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 6967|回復(fù): 7
收起左側(cè)

openmv舵機(jī)云臺(tái) 自動(dòng)追蹤色塊 STM32源程序

  [復(fù)制鏈接]
ID:516644 發(fā)表于 2019-10-13 21:05 | 顯示全部樓層 |閱讀模式
  之前做的舵機(jī)云臺(tái)自動(dòng)瞄色塊的裝置 現(xiàn)在已經(jīng)拆掉了,所以沒有圖片

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

單片機(jī)源程序如下:
  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中斷發(fā)生與否: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. }
復(fù)制代碼
  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. #關(guān)閉白平衡。白平衡是默認(rèn)開啟的,在顏色識(shí)別中,需要關(guān)閉白平衡。

  11. clock = time.clock()

  12. uart = UART(3, 115200)

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

  14. while(True):
  15.     clock.tick()
  16.     img = sensor.snapshot()
  17.     blob = img.find_blobs(threshold, area_threshold=300)
  18.     if blob: #如果找到了目標(biāo)顏色
  19.        # print(blob)
  20.        # uart.write("B3 B3 ")    #一幀數(shù)據(jù)的幀頭
  21.         FH = bytearray([0xb3,0xb3])
  22.         uart.write(FH)
  23.         for b in blob:
  24.         #迭代找到的目標(biāo)顏色區(qū)域
  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)
復(fù)制代碼


所有資料51hei提供下載:
原—顏色 數(shù)傳.rar (807 Bytes, 下載次數(shù): 173)
自動(dòng)瞄 - 改.7z (184.28 KB, 下載次數(shù): 164)


回復(fù)

使用道具 舉報(bào)

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

使用道具 舉報(bào)

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

使用道具 舉報(bào)

ID:516644 發(fā)表于 2020-2-29 19:34 | 顯示全部樓層
在openmv的程序里,因?yàn)楫?dāng) x > 256時(shí),數(shù)據(jù)會(huì)超過0XFF,所以我在程序里將 x - 70;其實(shí)可以將x的百位十位個(gè)位分別求出來, 再逐個(gè)進(jìn)行傳輸。

評(píng)分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

ID:480013 發(fā)表于 2020-7-8 11:22 | 顯示全部樓層
LOVEqing 發(fā)表于 2020-2-29 19:34
在openmv的程序里,因?yàn)楫?dāng) x > 256時(shí),數(shù)據(jù)會(huì)超過0XFF,所以我在程序里將 x - 70;其實(shí)可以將x的百位十位個(gè) ...

學(xué)到了學(xué)到了/&#128077;
回復(fù)

使用道具 舉報(bào)

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

使用道具 舉報(bào)

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

同問這個(gè)問題
回復(fù)

使用道具 舉報(bào)

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

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 日韩电影免费在线观看中文字幕 | 在线免费观看a级片 | 91在线视频网址 | 亚洲欧美一区二区三区国产精品 | 午夜伦理影院 | 伊人网站在线观看 | 欧美日韩一区二区视频在线观看 | 欧美精品一区二区三 | 一级在线毛片 | 久草新在线 | 国产精品自拍视频网站 | 欧美一级欧美一级在线播放 | 91成人精品 | 日本精品视频一区二区 | av网站在线播放 | 日韩欧美国产综合 | 欧美伊人影院 | av网站免费在线观看 | 欧美日韩精品一区二区三区视频 | 国产一级在线观看 | 久久一久久 | 欧美一区二区三区在线观看视频 | 中国一级大毛片 | 视频一区二区三区中文字幕 | 免费在线国产视频 | 黄网站免费在线 | 色综合网站 | 日日干夜夜操 | 亚洲高清视频在线 | 99热激情| 免费在线性爱视频 | 国产精品视频免费观看 | 国产精品久久国产精品 | 91在线免费观看网站 | 黑人一级片视频 | 给我免费的视频在线观看 | 91视频在线观看免费 | 一级片在线观看 | 亚洲一区二区久久 | 国产综合精品一区二区三区 | 欧美日本韩国一区二区三区 |