溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

樹莓派實(shí)現(xiàn)移動(dòng)拍照

發(fā)布時(shí)間:2020-09-22 09:30:17 來源:腳本之家 閱讀:157 作者:不告訴你/tp 欄目:開發(fā)技術(shù)

驅(qū)動(dòng)樹莓派gpio的中間層庫函數(shù)有wiringPi,BCM2835,以及PRi.GPIO,這里我選擇使用Python語言開發(fā)的PRi.GPIO。

1、安裝RPi.GPIO

(1)先安裝python-dev,輸入以下指令。

sudo apt-get install python-dev

(2)安裝RPi.GPIO

wget https://pypi.python.org/packages/source/R/RPi.GPIO/RPi.GPIO-0.5.11.tar.gz
#解壓:
tar -zxvf RPi.GPIO-0.5.11.tar.gz
#進(jìn)入解壓之后的目錄 :
cd RPi.GPIO-0.5.3a
#啟動(dòng)安裝 :
sudo python setup.py install

2、編寫驅(qū)動(dòng)電機(jī)的程序

(1)樹莓派與XY-160D驅(qū)動(dòng)板連接方法

# 樹莓派供電:
# 5V電源正極接到樹莓派4號(hào)5V電源引腳,負(fù)極接到樹莓派39號(hào)GND引腳
# 樹莓派綠色ATC燈閃爍則SD卡正在運(yùn)行,紅色PWR燈常亮則供電正常
# 更多指示燈狀態(tài)請參照:樹莓派LED指示燈狀態(tài)的解釋

#
# 驅(qū)動(dòng)板電源端供電:
# 14.8V電源接驅(qū)動(dòng)板電源端正極,電源負(fù)極接驅(qū)動(dòng)板電源端負(fù)極
#
# 驅(qū)動(dòng)板信號(hào)端供電:
# 樹莓派1號(hào)引腳3.3V接到驅(qū)動(dòng)板信號(hào)端+5V引腳,14號(hào)引腳GND接到驅(qū)動(dòng)板信號(hào)端GND引腳
# 驅(qū)動(dòng)板供電正常則DS1指示燈亮起

(2)代碼

使用一段簡單的電機(jī)驅(qū)動(dòng)代碼進(jìn)行測試,新建motor_drive.py文件,添加如下代碼并保存:

#!/usr/bin/python2
#coding=utf-8
import RPi.GPIO as GPIO
import time
 
# 初始化設(shè)置引腳輸出
IN1 = 12     #11號(hào)引腳對應(yīng)GPIO0,12號(hào)引腳對應(yīng)GPIO1
IN2 = 11     #11號(hào)與12號(hào)引腳分別接到驅(qū)動(dòng)板IN2,IN1引腳,控制其中一側(cè)電機(jī)
IN3 = 13     #13號(hào)引腳對應(yīng)GPIO2,15號(hào)引腳對應(yīng)GPIO3
IN4 = 15     #13號(hào)與15號(hào)引腳分別接到驅(qū)動(dòng)板IN3,IN4引腳,控制另一側(cè)電機(jī)
def init():
  GPIO.setmode(GPIO.BOARD) #設(shè)置GPIO編碼為物理引腳BOARD編碼
  GPIO.setup(IN1, GPIO.OUT)
  GPIO.setup(IN2, GPIO.OUT)
  GPIO.setup(IN3, GPIO.OUT)
  GPIO.setup(IN4, GPIO.OUT)
 
# 所有引腳置低電平,用于復(fù)位、停止運(yùn)行的功能
def reset():
  GPIO.output(IN1, GPIO.LOW)
  GPIO.output(IN2, GPIO.LOW)
  GPIO.output(IN3, GPIO.LOW)
  GPIO.output(IN4, GPIO.LOW)
  
def forward(): 
  GPIO.output(IN1, GPIO.HIGH)
  GPIO.output(IN2, GPIO.LOW)
  GPIO.output(IN3, GPIO.HIGH)
  GPIO.output(IN4, GPIO.LOW)
def back():
  GPIO.output(IN1, GPIO.LOW)
  GPIO.output(IN2, GPIO.HIGH)
  GPIO.output(IN3, GPIO.LOW)
  GPIO.output(IN4, GPIO.HIGH)
 
def stop():
  reset()
if __name__ == "__main__":
  init()
  reset()
  try:
   while True:
    forward()
    time.sleep(5)
    stop()
    time.sleep(1)    
    back()
    time.sleep(1)
    stop()
    time.sleep(1)
  except KeyboardInterrupt:
   print("except")
   stop()
  GPIO.cleanup()

執(zhí)行程序,按Ctrl + c結(jié)束程序

sudo python motor_drive.py

注:

(1)#!/usr/bin/env python,定義python解析腳本的絕對路徑。
(2)# -*- coding: utf-8 -*- ,python文件為utf-8格式,否則無法寫入中文注釋。
(3)GPIO.setmode(GPIO.BOARD),采用board編號(hào)方式。
(4)python程序使用try except語言,當(dāng)按下Ctrl+C結(jié)束程序是會(huì)觸發(fā)異常,程序執(zhí)行g(shù)pio.cleanup()語句清楚GPIO管腳狀態(tài)。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持億速云。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI