樹莓派控制超聲波和l298n代碼

import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BCM)
trig=5 #send-pin
echo=6 #receive-pin
GPIO.setup(trig,GPIO.OUT,initial=GPIO.LOW)
GPIO.setup(echo,GPIO.IN)
 
def Measure():
 
    #send
    GPIO.output(trig,True)
    time.sleep(0.00001) #1us
    GPIO.output(trig,False)
 
    #start recording
    while GPIO.input(echo)==0:
        pass
    start=time.time()
 
    #end recording
    while GPIO.input(echo)==1:
        pass
    end=time.time()
 
    #compute distance
    distance=round((end-start)*343/2*100,2)
    print("distance:{0}cm,{1}m".format(distance,distance/100))
    
while True:
    Measure()
    time.sleep(1)
    
GPIO.cleanup();

import RPi.GPIO as GPIO         # 引入GPIO模塊
import time                     # 引入time模塊
 
ENB = 21
ENA = 5
IN1 = 19
IN2 = 26
IN3 = 13
IN4 = 6
 
if __name__ == '__main__':
    try:
        # 初始化
        GPIO.setmode(GPIO.BCM)          # 使用BCM編號方式
        GPIO.setup(ENA, GPIO.OUT)       # 將連接ENA的GPIO引腳設置爲輸出模式
        GPIO.setup(IN1, GPIO.OUT)       # 將連接IN1的GPIO引腳設置爲輸出模式
        GPIO.setup(IN2, GPIO.OUT)       # 將連接IN2的GPIO引腳設置爲輸出模式
        GPIO.setup(ENB, GPIO.OUT)       # 將連接ENA的GPIO引腳設置爲輸出模式
        GPIO.setup(IN3, GPIO.OUT)       # 將連接IN1的GPIO引腳設置爲輸出模式
        GPIO.setup(IN4, GPIO.OUT)
 
        while True:
            # 驅動電機正向旋轉5秒
            GPIO.output(IN1, False)     # 將IN1設置爲0
            GPIO.output(IN2, True)      # 將IN2設置爲1
            GPIO.output(ENA, True)      # 將ENA設置爲1,啓動A通道電機
            GPIO.output(IN3, False)     # 將IN1設置爲0
            GPIO.output(IN4, True)      # 將IN2設置爲1
            GPIO.output(ENB, True)
            time.sleep(2)               # 等待電機轉動5秒
 
            # 電機停止2秒
            GPIO.output(ENA, False)     # 將ENA設置爲0
            GPIO.output(ENB, False)
            time.sleep(1)               # 等待電機停止2秒
 
            # 驅動電機反向旋轉5秒
            GPIO.output(IN1, True)      # 將IN1設置爲1
            GPIO.output(IN2, False)     # 將IN2設置爲0
            GPIO.output(ENA, True)      # 將ENA設置爲1,啓動A通道電機
            GPIO.output(IN3, True)      # 將IN1設置爲1
            GPIO.output(IN4, False)     # 將IN2設置爲0
            GPIO.output(ENB, True)
            time.sleep(2)               # 等待電機轉動5秒
 
            # 電機停止2秒
            GPIO.output(ENA, False)     # 將ENA設置爲0
            GPIO.output(ENB, False) 
            time.sleep(1)               # 等待電機停止2秒
 
    finally:
        pwm.stop()                      # 停止PWM
        GPIO.cleanup()                  # 清理釋放GPIO資源,將GPIO復位
 
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章