m0_60123047
2021-09-17 21:31
采纳率: 0%
浏览 163
已结题

如何设计控制汽车运动的程序

求解如何设计一个控制汽车前进后退向左向右移动的程序

  • 收藏

4条回答 默认 最新

  • 漠上刀栈 2021-09-18 09:31
    
    
    ```python
    #!/usr/bin/env python
    # -*- coding:utf-8 -*-
    #Author  :
    #E-mail  :
    #Ctime   :
    #Mtime   :
    #Version :
     
     
    import RPi.GPIO as GPIO
    import time
    import sys
     
     
    ####  定义Car类
    class Car(object):
        def __init__(self):
            self.enab_pin = [5,6,13,19]
    ####  self.enab_pin是使能端的pin
            self.inx_pin = [21,22,23,24]
    ####  self.inx_pin是控制端in的pin
            self.RightAhead_pin = self.inx_pin[0]
            self.RightBack_pin = self.inx_pin[1]
            self.LeftAhead_pin = self.inx_pin[2]
            self.LeftBack_pin = self.inx_pin[3]
    ####  分别是右轮前进,右轮退后,左轮前进,左轮退后的pin
            self.setup()
     
    ####  setup函数初始化端口
        def setup(self):
            print "begin setup ena enb pin"
            GPIO.setmode(GPIO.BCM)
            GPIO.setwarnings(False)
            for pin in self.enab_pin: 
                GPIO.setup(pin,GPIO.OUT)
                GPIO.output(pin,GPIO.HIGH)
    ####  初始化使能端pin,设置成高电平
            pin = None
            for pin in self.inx_pin:
                GPIO.setup(pin,GPIO.OUT)
                GPIO.output(pin,GPIO.LOW)
    ####  初始化控制端pin,设置成低电平
            print "setup ena enb pin over"
     
    ####  fornt函数,小车前进
        def front(self):
            self.setup()
            GPIO.output(self.RightAhead_pin,GPIO.HIGH)
            GPIO.output(self.LeftAhead_pin,GPIO.HIGH)
     
    ####  leftFront函数,小车左拐弯
        def leftFront(self):
            self.setup()
            GPIO.output(self.RightAhead_pin,GPIO.HIGH)
     
    ####  rightFront函数,小车右拐弯
        def rightFront(self):
            self.setup()
            GPIO.output(self.LeftAhead_pin,GPIO.HIGH)
     
    ####  rear函数,小车后退
        def rear(self):
            self.setup()
            GPIO.output(self.RightBack_pin,GPIO.HIGH)
            GPIO.output(self.LeftBack_pin,GPIO.HIGH)
     
    ####  leftRear函数,小车左退
        def leftRear(self):
            self.setup()
            GPIO.output(self.RightBack_pin,GPIO.HIGH)
     
    ####  rightRear函数,小车右退
        def rightRear(self):
            self.setup()
            GPIO.output(self.LeftBack_pin,GPIO.HIGH)
     
    ####  定义main主函数
    def main(status):
        car = Car()
        if status == "front":
            car.front()
        elif status == "leftFront":
            car.leftFront()
        elif status == "rightFront":
            car.rightFront()
        elif status == "rear":
            car.rear()
        elif status == "leftRear":
            car.leftRear()
        elif status == "rightRear":
            car.rightRear()
        elif status == "stop":
            car.setup()
                 
     
    if __name__ == '__main__':
    
    
    

    ```

    2 打赏 评论
  • guwei4037 2021-09-17 21:35

    智能小车?下层是舵机驱动,简单点是arduino,上层是raspberry pi。

    打赏 评论
  • 靳小锅er 2021-09-18 15:07

    建议用32写个pid

    打赏 评论
  • 识时务者为俊杰 2021-09-24 20:16

    1、首先你要明确使用什么单片机驱动,如果底层已经写好,只需要通信控制那比较简单
    2、明确控制的方法,如果使用python则需要第三方通信,建议蓝牙orwifi
    3、了解通信协议,使能方式,组报文或者驱动串口发送然后进行控制
    4、如果底层没有写好,那就编写个底层驱动程序,接收驱动信号后,进行对应的移动
    ps:正常一个软件需要前后端,硬件产品的设计更要前后端分离

    打赏 评论

相关推荐 更多相似问题