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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

已制成樹莓派控制六足機器人,參考樹莓派實驗室,具體學(xué)習(xí)及制作過程見附件

[復(fù)制鏈接]
ID:583802 發(fā)表于 2019-7-14 10:04 | 顯示全部樓層 |閱讀模式

一:前期準(zhǔn)備工作:

硬件部分:

(1)材料:

樹莓派3b+,超聲波測距模塊,手機(提供熱點),towerpro sg 5100電機三個,towerpro sg 90電機一個,杜邦線若干,面包板,電阻,四個五號電池連起來的電池盒兩個,五號電池八節(jié),鋁板,亞克力板,螺絲螺帽若干,

(2)圖紙:

機器人本體部分:

各條腿:

制備安裝好之后是這個樣子的:

軟件部分:

(1)先配置樹莓派,開啟遠(yuǎn)程連接,由于步驟過于簡單,在此省略,請參照2制作日志或登陸樹莓派實驗室之初級教程。

詳見樹莓派實驗室初級教程,

  • 理解伺服電機的操作原理:

1定義:伺服馬達(dá)受不同長度的脈沖控制。基本上可以這樣理解,伺服電機接收到1個脈沖,就會旋轉(zhuǎn)1個脈沖對應(yīng)的角度,從而實現(xiàn)位移。詳細(xì)定義請自行百度,

2樹莓派如何操作:

在這個網(wǎng)址下,有關(guān)于樹莓派上操作gpio端口的全部詳細(xì)解釋,https://www.cnblogs.com/dongxiaodong/p/9877734.html

簡單概括為:樹莓派的管腳有兩種命名方式,分別為wpi和bcm碼,需要在代碼中說明,

以下是一個實例,示范調(diào)用代碼的格式

1、首先對 RPi.GPIO 進行設(shè)置

import RPi.GPIO as GPIO

GPIO.setmode(GPIO.BOARD) #物理引腳編碼

GPIO.setup(12, GPIO.OUT)

2、設(shè)置某個輸出針腳狀態(tài)為高電平:

GPIO.output(12, GPIO.HIGH)

# 或者

GPIO.output(12, 1)

# 或者

GPIO.output(12, True)

3、設(shè)置某個輸出針腳狀態(tài)為低電平:

GPIO.output(12, GPIO.LOW)

# 或者

GPIO.output(12, 0)

# 或者

GPIO.output(12, False)

4、程序結(jié)束后進行清理

GPIO.cleanup()

二:開發(fā)程序:

了解了對于gpio接口的控制之后我們開始寫程序,

源程序在附于最后,寫完后使用樹莓派連接,進入目標(biāo)文件夾

即:

cd Desktop

Cd pythfiles

執(zhí)行命令:python hexapod1.py m f

即可使機器人前進,連線圖如下圖所示

實際的布線圖如下圖所示

最終成品視頻附于附件一

源代碼:

  1. <font style="font-size: 15pt">import RPi.GPIO as GPIO
  2. import pigpio
  3. import time
  4. GPIO.setmode(GPIO.BCM)
  5. GPIO.setwarnings(False)
  6. tilt = 4
  7. br = 21
  8. bl = 6
  9. trig = 23
  10. echo = 24
  11. GPIO.setup(trig, GPIO.OUT)
  12. GPIO.setup(echo, GPIO.IN)
  13. pi = pigpio.pi()
  14. def backward():
  15.     pi.set_servo_pulsewidth(tilt, 800)
  16.     time.sleep(0.15)
  17.     pi.set_servo_pulsewidth(bl, 800)   
  18.     time.sleep(0.15)
  19.     pi.set_servo_pulsewidth(tilt, 2000)
  20.     time.sleep(0.15)
  21.     pi.set_servo_pulsewidth(br, 1800)
  22.     time.sleep(0.15)
  23.     pi.set_servo_pulsewidth(tilt, 1500)
  24.     time.sleep(0.15)
  25.     pi.set_servo_pulsewidth(bl, 1500)  
  26.     time.sleep(0.15)
  27.     pi.set_servo_pulsewidth(br, 1500)  
  28.     time.sleep(0.15)
  29.     return;
  30. def forward():
  31.     pi.set_servo_pulsewidth(tilt, 800)
  32.     time.sleep(0.15)
  33.     pi.set_servo_pulsewidth(bl, 1800)      
  34.     time.sleep(0.15)
  35.     pi.set_servo_pulsewidth(tilt, 2000)
  36.     time.sleep(0.15)
  37.     pi.set_servo_pulsewidth(br, 800)
  38.     time.sleep(0.15)
  39.     pi.set_servo_pulsewidth(tilt, 1500)
  40.     time.sleep(0.15)
  41.     pi.set_servo_pulsewidth(bl, 1500)  
  42.     time.sleep(0.15)
  43.     pi.set_servo_pulsewidth(br, 1500)  
  44.     time.sleep(0.15)
  45.     return;
  46. def left():
  47.     pi.set_servo_pulsewidth(tilt, 800)
  48.     time.sleep(0.15)
  49.     pi.set_servo_pulsewidth(bl, 1800)      
  50.     time.sleep(0.15)
  51.     pi.set_servo_pulsewidth(tilt, 2000)
  52.     time.sleep(0.15)
  53.     pi.set_servo_pulsewidth(br, 1800)
  54.     time.sleep(0.15)
  55.     pi.set_servo_pulsewidth(tilt, 1500)
  56.     time.sleep(0.15)
  57.     pi.set_servo_pulsewidth(bl, 1500)  
  58.     time.sleep(0.15)
  59.     pi.set_servo_pulsewidth(br, 1500)  
  60.     time.sleep(0.15)
  61.     return;
  62. def right():
  63.     pi.set_servo_pulsewidth(tilt, 800)
  64.     time.sleep(0.15)
  65.     pi.set_servo_pulsewidth(bl, 800)   
  66.     time.sleep(0.15)
  67.     pi.set_servo_pulsewidth(tilt, 2000)
  68.     time.sleep(0.15)
  69.     pi.set_servo_pulsewidth(br, 800)
  70.     time.sleep(0.15)
  71.     pi.set_servo_pulsewidth(tilt, 1500)
  72.     time.sleep(0.15)
  73.     pi.set_servo_pulsewidth(bl, 1500)  
  74.     time.sleep(0.15)
  75.     pi.set_servo_pulsewidth(br, 1500)  
  76.     time.sleep(0.15)
  77.     return;
  78.      
  79. def stop():
  80.     pi.set_servo_pulsewidth(tilt, 0)
  81.     time.sleep(0.15)
  82.     pi.set_servo_pulsewidth(bl, 0)  
  83.     time.sleep(0.15)
  84.     pi.set_servo_pulsewidth(br, 0)  
  85.     time.sleep(0.15)
  86.      
  87.     return
  88. def obstacleDetected():
  89.     backward()
  90.     backward()
  91.     backward()
  92.     backward()
  93.     backward()
  94.     right()
  95.     right()
  96.     right()
  97.      
  98.     return
  99. def turnHead():
  100.     pi.set_servo_pulsewidth(head, 700)
  101.     time.sleep(0.5)
  102.     pi.set_servo_pulsewidth(head, 2100)
  103.     time.sleep(0.5)
  104.     pi.set_servo_pulsewidth(head, 1500)
  105.     time.sleep(0.5)
  106.     return
  107. def autoMode():
  108.     print ("Running in auto mode!")
  109.     turnHead()
  110.      
  111.     time.sleep(0.5)
  112.     GPIO.output(trig, 0)
  113.     time.sleep(0.5)
  114.      
  115.     GPIO.output(trig,1)
  116.     time.sleep(0.00001)
  117.     GPIO.output(trig,0)
  118.      
  119.     while GPIO.input(echo) == 0:
  120.         pulse_start = time.time()
  121.      
  122.     while GPIO.input(echo) == 1:
  123.         pulse_end = time.time()
  124.     pulse_duration = pulse_end - pulse_start
  125.      
  126.     distance = pulse_duration * 17150
  127.      
  128.     distance = round(distance, 2)
  129.      
  130.     if distance > 1 and distance < 35:
  131.         obstacleDetected()
  132.     else:
  133.         forward()
  134.         forward()
  135.         forward()
  136.      
  137.     pi.set_servo_pulsewidth(head, 2100)
  138.     time.sleep(0.5)
  139.     return
  140.      
  141. def manualMode():
  142.      
  143.         move = str(sys.argv[2])
  144.         if move == "F" or move == "f":
  145.         print("Moving forward!")
  146.         forward()
  147.     elif move == "B" or move == "b":
  148.         print("Moving backward!")
  149.         backward()
  150.     elif move == "L" or move == "l":
  151.         print("Moving left!")
  152.         left()
  153.     elif move == "R" or move == "r":
  154.         print("Moving right!")
  155.         right()
  156.     else:
  157.         print("Invalid argument!")
  158.      
  159.     return
  160.      
  161. def main():
  162.     opt = str(sys.argv[1])
  163.      
  164.     if opt == "A" or opt == "a":
  165.         autoMode()
  166.     elif opt == "M" or opt == "m":
  167.         manualMode()
  168.      
  169.     return
  170.          
  171. while True:
  172.     main()
  173. GPIO.cleanup()
  174. pi.stop()
  175. </font>
復(fù)制代碼

以上的Word格式文檔51黑下載地址:

3六足機器人制作文檔.docx (1.8 MB, 下載次數(shù): 29)

評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 欧美日韩高清 | 91久久综合 | 国产精品久久久久国产a级 欧美日韩国产免费 | 伊人伊人网 | 国产精品精品视频一区二区三区 | 国内精品99 | 爱爱免费视频网站 | 国产高清免费 | 国产精品久久久久久久久久三级 | 中文字幕第三页 | 一级毛片视频免费观看 | 成人黄色在线 | 久久av在线播放 | 免费视频久久 | 久久久.com | 四色成人av永久网址 | 亚洲二区视频 | 精品国产一区二区国模嫣然 | 免费观看日韩精品 | 日韩免费网站 | 成人污污视频 | 亚洲一区在线播放 | 黄色片免费看 | 97视频网站 | 中文字幕成人免费视频 | 久久精品青青大伊人av | 一区二区三区精品视频 | 中文字幕在线观看一区 | 亚洲视频在线播放 | 精品国产欧美一区二区 | 国产精品一区2区 | 久久久人成影片一区二区三区 | 精品一区二区三区四区外站 | 日韩精品一区二区三区免费视频 | 亚洲精品久久久久久一区二区 | 国产精品美女一区二区三区 | 不卡视频一区二区三区 | 午夜电影福利 | 精品美女在线观看 | 欧美在线观看一区二区 | 欧美一级黄色片 |