树莓派小车

本文介绍了一款基于树莓派的遥控小车项目。利用树莓派的GPIO接口及pygame库实现对小车的前进、后退及转向等功能。通过键盘输入控制信号,能够精确调整小车的速度和方向。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第一次的设计之树莓派小车
用到了树莓派的gpio库,pygame 非常的简单方便

– coding: utf-8 –

w i

#a s d j k l
#低速 高速度

import RPi.GPIO as GPIO
import time
import pygame
pygame.init()
screen = pygame.display.set_mode((196, 60))
pygame.display.set_caption(“pygame.key”)
str=pygame.key.name(pygame.K_a)
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM)
GPIO.setup(4,GPIO.OUT)#in1
GPIO.setup(17,GPIO.OUT)#in2
GPIO.setup(5,GPIO.OUT)#in3
GPIO.setup(22,GPIO.OUT)#in4
GPIO.setup(18,GPIO.OUT)#pwm1
GPIO.setup(12,GPIO.OUT)#pwm2
p=GPIO.PWM(18,25000)
wp=GPIO.PWM(12,25000)
while True:
event = pygame.event.wait()
keys = pygame.key.get_pressed()
if (keys[pygame.K_UP]):
if (keys[pygame.K_UP]) and keys[pygame.K_LEFT]:
print(“前进左转”)
p.start(85)
wp.start(100)
GPIO.output(17,GPIO.HIGH)
GPIO.output(4,GPIO.LOW)
GPIO.output(22,GPIO.HIGH)
GPIO.output(5,GPIO.LOW)
time.sleep(0.1)
wp.stop()
p.stop()
if (keys[pygame.K_UP]) and keys[pygame.K_RIGHT]:
print(“前进右转”)
p.start(100)
wp.start(85)
GPIO.output(17,GPIO.HIGH)
GPIO.output(4,GPIO.LOW)
GPIO.output(22,GPIO.HIGH)
GPIO.output(5,GPIO.LOW)
time.sleep(0.1)
wp.stop()
p.stop()
if (keys[pygame.K_DOWN]):
if (keys[pygame.K_DOWN]) and keys[pygame.K_LEFT]:
print(“后退左转”)
p.start(85)
wp.start(100)
GPIO.output(4,GPIO.HIGH)
GPIO.output(17,GPIO.LOW)
GPIO.output(5,GPIO.HIGH)
GPIO.output(22,GPIO.LOW)
time.sleep(0.1)
wp.stop()
p.stop()
if (keys[pygame.K_DOWN]) and keys[pygame.K_RIGHT]:
print(“后退右转”)
p.start(100)
wp.start(85)
GPIO.output(4,GPIO.HIGH)
GPIO.output(17,GPIO.LOW)
GPIO.output(5,GPIO.HIGH)
GPIO.output(22,GPIO.LOW)
time.sleep(0.1)
wp.stop()
p.stop()
if (keys[pygame.K_RIGHT]):
p.start(100)
wp.start(100)
GPIO.output(17,GPIO.HIGH)
GPIO.output(4,GPIO.LOW)
GPIO.output(5,GPIO.HIGH)
GPIO.output(22,GPIO.LOW)
time.sleep(0.04)
wp.stop()
p.stop()
print(“右转”)
if (keys[pygame.K_LEFT]):
p.start(100)
wp.start(100)
GPIO.output(4,GPIO.HIGH)
GPIO.output(17,GPIO.LOW)
GPIO.output(22,GPIO.HIGH)
GPIO.output(5,GPIO.LOW)
time.sleep(0.04)
wp.stop()
p.stop()
print(“左转”)

if (keys[pygame.K_DOWN]):
            p.start(100)
            wp.start(100)
            GPIO.output(4,GPIO.HIGH)
            GPIO.output(17,GPIO.LOW)
            GPIO.output(5,GPIO.HIGH)
            GPIO.output(22,GPIO.LOW)
            print("后退")
            time.sleep(0.1)
            wp.stop() 
            p.stop()
if (keys[pygame.K_UP]):
        p.start(100)
        wp.start(100)
        GPIO.output(17,GPIO.HIGH)
        GPIO.output(4,GPIO.LOW)
        GPIO.output(22,GPIO.HIGH)
        GPIO.output(5,GPIO.LOW)
        print("前进")
        time.sleep(0.1)
        wp.stop() 
        p.stop()
if event.type == pygame.KEYDOWN:
    x=pygame.key.name(event.key)  #获取按键标识符对应的名字
    if(x=="s"):
        p.start(100)
        wp.start(100)
        GPIO.output(4,GPIO.HIGH)
        GPIO.output(17,GPIO.LOW)
        GPIO.output(5,GPIO.HIGH)
        GPIO.output(22,GPIO.LOW)
        print("后退")
        time.sleep(0.1)
        wp.stop() 
        p.stop() 
    if(x=="w"):
        p.start(100)
        wp.start(100)
        GPIO.output(17,GPIO.HIGH)
        GPIO.output(4,GPIO.LOW)
        GPIO.output(22,GPIO.HIGH)
        GPIO.output(5,GPIO.LOW)
        print("前进")
        time.sleep(0.1)
        wp.stop() 
        p.stop()
    if(x=="d"):
        p.start(100)
        wp.start(100)
        GPIO.output(17,GPIO.HIGH)
        GPIO.output(4,GPIO.LOW)
        GPIO.output(5,GPIO.HIGH)
        GPIO.output(22,GPIO.LOW)
        time.sleep(0.04)
        wp.stop() 
        p.stop()
        print("右转")
        
    if(x=="a"):
        p.start(100)
        wp.start(100)
        GPIO.output(4,GPIO.HIGH)
        GPIO.output(17,GPIO.LOW)
        GPIO.output(22,GPIO.HIGH)
        GPIO.output(5,GPIO.LOW)
        time.sleep(0.04)
        wp.stop() 
        p.stop()
        print("左转")
    if(x=="i"):
        p.start(100)
        wp.start(100)
        GPIO.output(17,GPIO.HIGH)
        GPIO.output(4,GPIO.LOW)
        GPIO.output(22,GPIO.HIGH)
        GPIO.output(5,GPIO.LOW)
        print("加速前进")
        time.sleep(0.2)
        wp.stop() 
        p.stop()
    if(x=="k"):
        p.start(100)
        wp.start(100)
        GPIO.output(4,GPIO.HIGH)
        GPIO.output(17,GPIO.LOW)
        GPIO.output(5,GPIO.HIGH)
        GPIO.output(22,GPIO.LOW)
        print("加速后退")
        time.sleep(0.2)
        wp.stop() 
        p.stop()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值