树莓派控制超声波和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复位
 
 

发布了13 篇原创文章 · 获赞 5 · 访问量 1014

猜你喜欢

转载自blog.csdn.net/weixin_44868057/article/details/104942125