You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
teamwk123/carsrun/car.py

147 lines
5.1 KiB

#coding:utf-8
import os
import time
import RPi.GPIO as GPIO
from base_ctrl import BaseController
#######################################
#############信号引脚定义##############
#######################################
GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)
def is_raspberry_pi5():
with open('/proc/cpuinfo', 'r') as file:
for line in file:
if 'Model' in line:
if 'Raspberry Pi 5' in line:
return True
else:
return False
base = BaseController('/dev/ttyAMA0', 115200)
class CAR:
def __init__(self):
self.LED0 = 10 #LED0的IO口定义
self.LED1 = 9 #LED1的IO口定义
self.LED2 = 25 #LED2的IO口定义
self.ENA = 13 #//L298 使能A
self.ENB = 20 #//L298 使能B
self.IN1 = 19 #//电机接口1
self.IN2 = 16 #//电机接口2
self.IN3 = 21 #//电机接口3
self.IN4 = 26 #//电机接口4
GPIO.setup(self.LED0, GPIO.OUT, initial=GPIO.HIGH) ##led0初始化为高电平
GPIO.setup(self.LED1, GPIO.OUT, initial=GPIO.HIGH) ##led1初始化为高电平
GPIO.setup(self.LED2, GPIO.OUT, initial=GPIO.HIGH) ##led2初始化为高电平
GPIO.setup(self.ENA, GPIO.OUT, initial=GPIO.LOW) ##ENA初始化为低电平
GPIO.setup(self.ENB, GPIO.OUT, initial=GPIO.LOW) ##ENB初始化为低电平
GPIO.setup(self.IN1, GPIO.OUT, initial=GPIO.LOW) ##IN1初始化为低电平
GPIO.setup(self.IN2, GPIO.OUT, initial=GPIO.LOW) ##IN2初始化为低电平
GPIO.setup(self.IN3, GPIO.OUT, initial=GPIO.LOW) ##IN3初始化为低电平
GPIO.setup(self.IN4, GPIO.OUT, initial=GPIO.LOW) ##IN4初始化为低电平
def led(self):
GPIO.output(self.LED0,False)
GPIO.output(self.LED1,False)
GPIO.output(self.LED2,False)###LED0,LED1,LED2 = 亮 亮 亮
time.sleep(0.5)
GPIO.output(self.LED0,True)
GPIO.output(self.LED1,False)
GPIO.output(self.LED2,False)###LED0,LED1,LED2 = 灭 亮 亮
time.sleep(0.5)
GPIO.output(self.LED0,False)
GPIO.output(self.LED1,True)
GPIO.output(self.LED2,False)###LED0,LED1,LED2 = 亮 灭 亮
time.sleep(0.5)
GPIO.output(self.LED0,False)
GPIO.output(self.LED1,False)
GPIO.output(self.LED2,True)###LED0,LED1,LED2 = 亮 亮 灭
time.sleep(0.5)
GPIO.output(self.LED0,False)
GPIO.output(self.LED1,False)
GPIO.output(self.LED2,False)###LED0,LED1,LED2 = 亮 亮 亮
time.sleep(0.5)
GPIO.output(self.LED0,True)
GPIO.output(self.LED1,True)
GPIO.output(self.LED2,True)###LED0,LED1,LED2 = 灭 灭 灭
time.sleep(0.5)
print("run: led")
def led_light(self):
GPIO.output(self.LED0,False)
GPIO.output(self.LED1,False)
GPIO.output(self.LED2,False)###LED0,LED1,LED2 = 亮 亮 亮
print("run: led_light")
def led_dark(self):
GPIO.output(self.LED0,True)
GPIO.output(self.LED1,True)
GPIO.output(self.LED2,True)###LED0,LED1,LED2 = 灭 灭 灭
print("run: led_dark")
def stop(self): # 停止运行
GPIO.output(self.ENA,False)
GPIO.output(self.ENB,False)
GPIO.output(self.IN1,False)
GPIO.output(self.IN2,False)
GPIO.output(self.IN3,False)
GPIO.output(self.IN4,False)
print("run: stop move")
def Q(self): # 停止的快捷键
self.stop()
def q(self):
self.stop()
def forward(self): # 前进
base.send_command({"T":1,"L":0.2,"R":0.2})
time.sleep(2)
base.send_command({"T":1,"L":0,"R":0})
print("run: move !!!!forward")
def W(self): # 前进的快捷键
self.forward()
def w(self):
self.forward()
def back(self): # 后退
GPIO.output(self.ENA,True)
GPIO.output(self.ENB,True)
GPIO.output(self.IN1,True)
GPIO.output(self.IN2,False)
GPIO.output(self.IN3,True)
GPIO.output(self.IN4,False)
print("run: move back")
def S(self): # 后退的快捷键
self.back()
def s(self):
self.back()
def left(self): # 左转
GPIO.output(self.ENA,True)
GPIO.output(self.ENB,True)
GPIO.output(self.IN1,False)
GPIO.output(self.IN2,True)
GPIO.output(self.IN3,True)
GPIO.output(self.IN4,False)
print("run: move left")
def A(self): # 左转的快捷键
self.left()
def a(self):
self.left()
def right(self): # 右转
GPIO.output(self.ENA,True)
GPIO.output(self.ENB,True)
GPIO.output(self.IN1,True)
GPIO.output(self.IN2,False)
GPIO.output(self.IN3,False)
GPIO.output(self.IN4,True)
print("run: move right")
def D(self): # 右转的快捷键
self.right()
def d(self):
self.right()