91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

python3怎么實現raspberry pi 4驅小車控制程序

發布時間:2021-05-07 11:52:38 來源:億速云 閱讀:246 作者:小新 欄目:開發技術

小編給大家分享一下python3怎么實現raspberry pi 4驅小車控制程序,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

python是什么意思

Python是一種跨平臺的、具有解釋性、編譯性、互動性和面向對象的腳本語言,其最初的設計是用于編寫自動化腳本,隨著版本的不斷更新和新功能的添加,常用于用于開發獨立的項目和大型項目。

 0. 寫在前面:

一兩個月前偶然得到一個樹莓派一代,發現還是挺強大的,然后就考慮著自己實現一個四驅小車。因為本身是學軟件的,所以利用軟件來控制實實在在可見的硬件一直是自己的一個夢想。所以當時也是花了很多時間來琢磨、實驗小車控制方面的東西。因為時間過去比較久了,這里也就只是記錄一下當時踩過的坑、實現的一些思路以及絕大部分源代碼。截止當前,我的樹莓派小車實現的主要功能是:

  • 控制小車前進、后退、左轉、右轉、后退左轉、后退右轉

  • 攝像頭兩路舵機控制(實現攝像頭上下左右旋轉)

  • 網頁版小車控制程序(小車控制程序、實時監控、攝像頭旋轉控制)

  • 微信小程序版小車控制程序(功能基本同上)

1. 準備:

  • 給樹莓派安裝系統(這個網上資料太多,一搜一大把,我裝的是raspbian)

  • 安裝python3

  • 準備四個步進電機,電機驅動,并組裝連接好(我都是在某寶上買的,電機及其組件是在“亞博智能科技”買的,驅動是在“深圳市艾爾賽科技”上買的L298N四路電機驅動)

一些可能遇到的坑:

  • 首先要注意電機驅動的輸入電壓,電壓過低很可能無法帶動電機(當然也不可過高)

  • 電機驅動輸入有一個GND,這個一定要連接樹莓派的一個GND輸出,否則可能出現電機驅動異常(我當時遇到的情況是:手接觸驅動電路中的金屬電機就可以正常轉動,手一松開電機就不能正常運轉了)

2. 基本思路:

  • 將連接端口作為一個配置文件,該配置文件定義小車需要使用的端口

  • 控制程序讀取配置文件,并實現小車的方向控制

  • 小車控制程序定義了私有的向各個方向移動的方法,然后定義一個方法接受方向參數,該方法內部再調用具體的移動方法

需要說明的是:由于使用引腳的不同,以及電機安裝位置的差異,所以不能保證以下程序能夠直接使用。

3. 配置文件內容如下(文件名為:config.ini):

[car]
# This is the parmaters that will control the car's wheels
# The number is the interface number of GPIO (GPIO.BOARD)
LEFT_FRONT_1 = 7
LEFT_FRONT_2 = 11
 
RIGHT_FRONT_1 = 13
RIGHT_FRONT_2 = 15
 
LEFT_BEHIND_1 = 31
LEFT_BEHIND_2 = 33
 
RIGHT_BEHIND_1 = 35
RIGHT_BEHIND_2 = 37

4. 小車控制程序(文件名為:car_controler.py):

# coding=utf-8
import RPi.GPIO as GPIO
import time
import configparser
 
 
class FourWheelDriveCar():
 # Define the number of all the GPIO that will used for the 4wd car
 
 def __init__(self):
  '''
  1. Read pin number from configure file
  2. Init all GPIO configureation
  '''
  config = configparser.ConfigParser()
  config.read("config.ini")
  self.LEFT_FRONT_1 = config.getint("car", "LEFT_FRONT_1")
  self.LEFT_FRONT_2 = config.getint("car", "LEFT_FRONT_2")
 
  self.RIGHT_FRONT_1 = config.getint("car", "RIGHT_FRONT_1")
  self.RIGHT_FRONT_2 = config.getint("car", "RIGHT_FRONT_2")
 
  self.LEFT_BEHIND_1 = config.getint("car", "LEFT_BEHIND_1")
  self.LEFT_BEHIND_2 = config.getint("car", "LEFT_BEHIND_2")
 
  self.RIGHT_BEHIND_1 = config.getint("car", "RIGHT_BEHIND_1")
  self.RIGHT_BEHIND_2 = config.getint("car", "RIGHT_BEHIND_2")
 
  GPIO.setmode(GPIO.BOARD)
  GPIO.setwarnings(False)
  GPIO.setup(self.LEFT_FRONT_1, GPIO.OUT)
  GPIO.setup(self.LEFT_FRONT_2, GPIO.OUT)
  GPIO.setup(self.RIGHT_FRONT_1, GPIO.OUT)
  GPIO.setup(self.RIGHT_FRONT_2, GPIO.OUT)
  GPIO.setup(self.LEFT_BEHIND_1, GPIO.OUT)
  GPIO.setup(self.LEFT_BEHIND_2, GPIO.OUT)
  GPIO.setup(self.RIGHT_BEHIND_1, GPIO.OUT)
  GPIO.setup(self.RIGHT_BEHIND_2, GPIO.OUT)
 
 def reset(self):
  # Rest all the GPIO as LOW
  GPIO.output(self.LEFT_FRONT_1, GPIO.LOW)
  GPIO.output(self.LEFT_FRONT_2, GPIO.LOW)
  GPIO.output(self.RIGHT_FRONT_1, GPIO.LOW)
  GPIO.output(self.RIGHT_FRONT_2, GPIO.LOW)
  GPIO.output(self.LEFT_BEHIND_1, GPIO.LOW)
  GPIO.output(self.LEFT_BEHIND_2, GPIO.LOW)
  GPIO.output(self.RIGHT_BEHIND_1, GPIO.LOW)
  GPIO.output(self.RIGHT_BEHIND_2, GPIO.LOW)
 
 def __forword(self):
  self.reset()
  GPIO.output(self.LEFT_FRONT_1, GPIO.HIGH)
  GPIO.output(self.LEFT_FRONT_2, GPIO.LOW)
  GPIO.output(self.RIGHT_FRONT_1, GPIO.HIGH)
  GPIO.output(self.RIGHT_FRONT_2, GPIO.LOW)
  GPIO.output(self.LEFT_BEHIND_1, GPIO.HIGH)
  GPIO.output(self.LEFT_BEHIND_2, GPIO.LOW)
  GPIO.output(self.RIGHT_BEHIND_1, GPIO.HIGH)
  GPIO.output(self.RIGHT_BEHIND_2, GPIO.LOW)
 
 def __backword(self):
  self.reset()
  GPIO.output(self.LEFT_FRONT_2, GPIO.HIGH)
  GPIO.output(self.LEFT_FRONT_1, GPIO.LOW)
  GPIO.output(self.RIGHT_FRONT_2, GPIO.HIGH)
  GPIO.output(self.RIGHT_FRONT_1, GPIO.LOW)
  GPIO.output(self.LEFT_BEHIND_2, GPIO.HIGH)
  GPIO.output(self.LEFT_BEHIND_1, GPIO.LOW)
  GPIO.output(self.RIGHT_BEHIND_2, GPIO.HIGH)
  GPIO.output(self.RIGHT_BEHIND_1, GPIO.LOW)
 
 def __turnLeft(self):
  '''
  To turn left, the LEFT_FRONT wheel will move backword
  All other wheels move forword
  '''
  self.reset()
  GPIO.output(self.LEFT_FRONT_2, GPIO.HIGH)
  GPIO.output(self.LEFT_FRONT_1, GPIO.LOW)
  GPIO.output(self.RIGHT_FRONT_1, GPIO.HIGH)
  GPIO.output(self.RIGHT_FRONT_2, GPIO.LOW)
  GPIO.output(self.LEFT_BEHIND_1, GPIO.HIGH)
  GPIO.output(self.LEFT_BEHIND_2, GPIO.LOW)
  GPIO.output(self.RIGHT_BEHIND_1, GPIO.HIGH)
  GPIO.output(self.RIGHT_BEHIND_2, GPIO.LOW)
 
 def __turnRight(self):
  '''
  To turn right, the RIGHT_FRONT wheel move backword
  All other wheels move forword
  '''
  self.reset()
  GPIO.output(self.LEFT_FRONT_1, GPIO.HIGH)
  GPIO.output(self.LEFT_FRONT_2, GPIO.LOW)
  GPIO.output(self.RIGHT_FRONT_2, GPIO.HIGH)
  GPIO.output(self.RIGHT_FRONT_1, GPIO.LOW)
  GPIO.output(self.LEFT_BEHIND_1, GPIO.HIGH)
  GPIO.output(self.LEFT_BEHIND_2, GPIO.LOW)
  GPIO.output(self.RIGHT_BEHIND_1, GPIO.HIGH)
  GPIO.output(self.RIGHT_BEHIND_2, GPIO.LOW)
 
 def __backLeft(self):
  '''
  To go backword and turn left, the LEFT_BEHIND wheel move forword
  All other wheels move backword
  '''
  self.reset()
  GPIO.output(self.LEFT_FRONT_2, GPIO.HIGH)
  GPIO.output(self.LEFT_FRONT_1, GPIO.LOW)
  GPIO.output(self.RIGHT_FRONT_2, GPIO.HIGH)
  GPIO.output(self.RIGHT_FRONT_1, GPIO.LOW)
  GPIO.output(self.LEFT_BEHIND_1, GPIO.HIGH)
  GPIO.output(self.LEFT_BEHIND_2, GPIO.LOW)
  GPIO.output(self.RIGHT_BEHIND_2, GPIO.HIGH)
  GPIO.output(self.RIGHT_BEHIND_1, GPIO.LOW)
 
 def __backRight(self):
  '''
  To go backword and turn right, the RIGHT_BEHIND wheel move forword
  All other wheels move backword
  '''
  self.reset()
  GPIO.output(self.LEFT_FRONT_2, GPIO.HIGH)
  GPIO.output(self.LEFT_FRONT_1, GPIO.LOW)
  GPIO.output(self.RIGHT_FRONT_2, GPIO.HIGH)
  GPIO.output(self.RIGHT_FRONT_1, GPIO.LOW)
  GPIO.output(self.LEFT_BEHIND_2, GPIO.HIGH)
  GPIO.output(self.LEFT_BEHIND_1, GPIO.LOW)
  GPIO.output(self.RIGHT_BEHIND_1, GPIO.HIGH)
  GPIO.output(self.RIGHT_BEHIND_2, GPIO.LOW)
 
 def __stop(self):
  self.reset()
 
 def carMove(self, direction):
  '''
  Car move according to the input paramter - direction
  '''
  if direction == 'F':
   self.__forword()
  elif direction == 'B':
   self.__backword()
  elif direction == 'L':
   self.__turnLeft()
  elif direction == 'R':
   self.__turnRight()
  elif direction == 'BL':
   self.__backLeft()
  elif direction == 'BR':
   self.__backRight()
  elif direction == 'S':
   self.__stop()
  else:
   print("The input direction is wrong! You can just input: F, B, L, R, BL,BR or S")
 
 
if __name__ == "__main__":
 raspCar = FourWheelDriveCar()
 while(True):
  direction = input("Please input direction: ")
  raspCar.carMove(direction)

以上是“python3怎么實現raspberry pi 4驅小車控制程序”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

菏泽市| 抚松县| 石柱| 南皮县| 瓦房店市| 新宾| 鹤壁市| 夏河县| 丹巴县| 郑州市| 环江| 广灵县| 璧山县| 利川市| 玉田县| 磐安县| 荔波县| 伊金霍洛旗| 江孜县| 深州市| 湘西| 阿拉善盟| 尖扎县| 万宁市| 海丰县| 冕宁县| 勐海县| 醴陵市| 仙游县| 衡南县| 南京市| 萨迦县| 浠水县| 日土县| 合肥市| 巩义市| 武清区| 桂东县| 平安县| 新竹市| 望江县|