找回密码
 立即注册

QQ登录

【树莓派小车】第4课——小车加入用户控制

来源: 奥松-Neil 2015-11-9 17:14 显示全部楼层 |阅读模式
由于我们没有给树莓派小车加入传感器,所以小车无法自主运动,但是可以使用键盘鼠标进行小车的控制,或者使用远程连接到小车进行控制。下面我们就讲解一下这个功能是如何实现的。
1.打开python编译器
点击右上角树莓派标志——编程——python3
2.修改python3字体
点击option——configure IDLE进行字体设置,设置成较大的字体,方便查看
QQ图片20151108184906.png

3.程序编译
在python中新建一个文件,输入下列程序,点击保存,将python程序文件保存到alsrobot文件夹中,命名为robot3
  1. import RPi.GPIO as gpio
  2. import time
  3. import sys
  4. import Tkinter as tk
  5. def init ():
  6.     gpio.setmode (gpio.BOARD)
  7.     gpio.setup (7, gpio.OUT)
  8.     gpio.setup (11,gpio.OUT)
  9.     gpio.setup (13,gpio.OUT)
  10.     gpio.setup (15,gpio.OUT)

  11. def forward (tf):
  12.     gpio.output (7,False)
  13.     gpio.output (11,True)
  14.     gpio.output (13,True)
  15.     gpio.output (15,False)
  16.     time.sleep (tf)
  17.     gpio.cleanup ()

  18. def reverse (tf):
  19.     gpio.output (7,True)
  20.     gpio.output (11,False)
  21.     gpio.output (13,False)
  22.     gpio.output (15,True)
  23.     time.sleep (tf)
  24.     gpio.cleanup ()

  25. def turn_right (tf):
  26.     gpio.output (7,False)
  27.     gpio.output (11,True)
  28.     gpio.output (13,False)
  29.     gpio.output (15,False)
  30.     time.sleep (tf)
  31.     gpio.cleanup ()

  32. def turn_left (tf):
  33.     gpio.output (7,False)
  34.     gpio.output (11,False)
  35.     gpio.output (13,True)
  36.     gpio.output (15,False)
  37.     time.sleep (tf)
  38.     gpio.cleanup ()

  39. def pivot_left (tf):
  40.     gpio.output (7,True)
  41.     gpio.output (11,False)
  42.     gpio.output (13,True)
  43.     gpio.output (15,False)
  44.     time.sleep (tf)
  45.     gpio.cleanup ()

  46. def pivot_right (tf):
  47.     gpio.output (7,False)
  48.     gpio.output (11,True)
  49.     gpio.output (13,False)
  50.     gpio.output (15,True)
  51.     time.sleep (tf)
  52.     gpio.cleanup ()

  53. def key_input(event):
  54.     init()
  55.     print 'Key:', event.char
  56.     key_press = event.char
  57.     sleep_time = 0.030

  58.     if key_press.lower() == 'w':
  59.         forward(sleep_time)
  60.     elif key_press.lower() == 's':
  61.         reverse(sleep_time)
  62.     elif key_press.lower() == 'a':
  63.         turn_left(sleep_time)
  64.     elif key_press.lower() == 'd':
  65.         turn_right(sleep_time)
  66.     elif key_press.lower() == 'q':
  67.         pivot_left(sleep_time)
  68.     elif key_press.lower() == 'e':
  69.         pivot_right(sleep_time)


  70. command = tk.Tk()
  71. command.bind('<KeyPress>',key_input)
  72. command.mainloop()
复制代码
4.程序运行
首先进入到alsrobot目录下,然后运行robot3.py程序文件
  1. cd alsrobot
  2. sudo python robot3.py
复制代码
5.程序效果
点击运行后,会弹出一个对话框,点击对话框,输入‘w’,'s','a','d','q','e',就可以控制小车的相应运动。
QQ图片20151108184417.png

回复

使用道具 举报

大神点评4

起风了 2016-3-1 15:41 显示全部楼层
你好,我想问一下,如果要通过PWM来实现对小车速度的调控,那么该如何来做呢,希望能示范一下
回复 支持 反对

使用道具 举报

起风了 发表于 2016-3-1 15:41
你好,我想问一下,如果要通过PWM来实现对小车速度的调控,那么该如何来做呢,希望能示范一下 ...

如果没记错的话只,树莓派只有一个口可以输出PWM,所以简单的解决方案是,利用一片arduino输出多路PWM,树莓派跟arduino通信就好了。可以是I2C也可以是串口。或者还可以添加PWM信号输出模块。
回复 支持 反对

使用道具 举报

jimmyyjh 2017-2-11 00:08 显示全部楼层
进行深入学习,谢谢楼主!!
回复 支持 反对

使用道具 举报

您可能感兴趣的文章

您需要登录后才可以回帖 登录 | 立即注册

关注0

粉丝8

帖子147

发布主题
社区热门 MORE+
    社区热帖 MORE+