两个传感器的循迹小车程序
时间: 2024-05-13 08:16:48 浏览: 66
以下是两个红外线传感器的循迹小车程序:
```python
import RPi.GPIO as GPIO
import time
# 设置GPIO口模式
GPIO.setmode(GPIO.BOARD)
# 设置左右轮电机引脚
motorL1 = 11
motorL2 = 13
motorR1 = 16
motorR2 = 18
# 设置红外线传感器引脚
irL = 7
irR = 12
# 设置GPIO口为输出模式
GPIO.setup(motorL1, GPIO.OUT)
GPIO.setup(motorL2, GPIO.OUT)
GPIO.setup(motorR1, GPIO.OUT)
GPIO.setup(motorR2, GPIO.OUT)
# 设置GPIO口为输入模式
GPIO.setup(irL, GPIO.IN)
GPIO.setup(irR, GPIO.IN)
# 向前
def forward():
GPIO.output(motorL1, True)
GPIO.output(motorL2, False)
GPIO.output(motorR1, True)
GPIO.output(motorR2, False)
# 向后
def backward():
GPIO.output(motorL1, False)
GPIO.output(motorL2, True)
GPIO.output(motorR1, False)
GPIO.output(motorR2, True)
# 左转
def turn_left():
GPIO.output(motorL1, False)
GPIO.output(motorL2, True)
GPIO.output(motorR1, True)
GPIO.output(motorR2, False)
# 右转
def turn_right():
GPIO.output(motorL1, True)
GPIO.output(motorL2, False)
GPIO.output(motorR1, False)
GPIO.output(motorR2, True)
# 停止
def stop():
GPIO.output(motorL1, False)
GPIO.output(motorL2, False)
GPIO.output(motorR1, False)
GPIO.output(motorR2, False)
try:
while True:
if GPIO.input(irL) == 0 and GPIO.input(irR) == 0: # 两个传感器都检测到黑线
forward()
elif GPIO.input(irL) == 1 and GPIO.input(irR) == 0: # 左传感器检测到白线,右传感器检测到黑线
turn_right()
elif GPIO.input(irL) == 0 and GPIO.input(irR) == 1: # 左传感器检测到黑线,右传感器检测到白线
turn_left()
else: # 两个传感器都检测到白线
backward()
time.sleep(0.01)
except KeyboardInterrupt:
GPIO.cleanup()
```
以上代码是使用GPIO.BOARD模式进行编写,如果使用GPIO.BCM模式需要修改引脚号。
以下是两个巡线传感器的循迹小车程序:
```python
import RPi.GPIO as GPIO
import time
# 设置GPIO口模式
GPIO.setmode(GPIO.BOARD)
# 设置左右轮电机引脚
motorL1 = 11
motorL2 = 13
motorR1 = 16
motorR2 = 18
# 设置巡线传感器引脚
lineL = 7
lineR = 12
# 设置GPIO口为输出模式
GPIO.setup(motorL1, GPIO.OUT)
GPIO.setup(motorL2, GPIO.OUT)
GPIO.setup(motorR1, GPIO.OUT)
GPIO.setup(motorR2, GPIO.OUT)
# 设置GPIO口为输入模式
GPIO.setup(lineL, GPIO.IN)
GPIO.setup(lineR, GPIO.IN)
# 向前
def forward():
GPIO.output(motorL1, True)
GPIO.output(motorL2, False)
GPIO.output(motorR1, True)
GPIO.output(motorR2, False)
# 向后
def backward():
GPIO.output(motorL1, False)
GPIO.output(motorL2, True)
GPIO.output(motorR1, False)
GPIO.output(motorR2, True)
# 左转
def turn_left():
GPIO.output(motorL1, False)
GPIO.output(motorL2, True)
GPIO.output(motorR1, True)
GPIO.output(motorR2, False)
# 右转
def turn_right():
GPIO.output(motorL1, True)
GPIO.output(motorL2, False)
GPIO.output(motorR1, False)
GPIO.output(motorR2, True)
# 停止
def stop():
GPIO.output(motorL1, False)
GPIO.output(motorL2, False)
GPIO.output(motorR1, False)
GPIO.output(motorR2, False)
try:
while True:
if GPIO.input(lineL) == 0 and GPIO.input(lineR) == 0: # 两个传感器都检测到黑线
forward()
elif GPIO.input(lineL) == 1 and GPIO.input(lineR) == 0: # 左传感器检测到白线,右传感器检测到黑线
turn_right()
elif GPIO.input(lineL) == 0 and GPIO.input(lineR) == 1: # 左传感器检测到黑线,右传感器检测到白线
turn_left()
else: # 两个传感器都检测到白线
backward()
time.sleep(0.01)
except KeyboardInterrupt:
GPIO.cleanup()
```
以上代码使用的是巡线传感器,和红外线传感器的差别是在引脚读取上。
阅读全文
相关推荐
![-](https://img-home.csdnimg.cn/images/20241231045053.png)
![-](https://img-home.csdnimg.cn/images/20241231045021.png)
![-](https://img-home.csdnimg.cn/images/20241231044901.png)
![-](https://img-home.csdnimg.cn/images/20241231044930.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![doc](https://img-home.csdnimg.cn/images/20241231044833.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![doc](https://img-home.csdnimg.cn/images/20241231044833.png)
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)
![docx](https://img-home.csdnimg.cn/images/20241231044901.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![-](https://img-home.csdnimg.cn/images/20241231045053.png)