找回密码
 立即注册

QQ登录

【Raspberry Pi 3 小车】8、键盘控制小车

来源: 奥松-Neil 2016-12-2 13:28 显示全部楼层 |阅读模式
1、实验介绍
(1)实验目的:使用putty通过WiFi登录Raspberry Pi 3控制器,通过无线键鼠来控制小车运动
(2)实验环境
硬件环境:Raspberry Pi 3代4WD移动平台,无线键鼠(连接到PC的USB接口上作为电脑的键盘)
软件环境:FTP文件传输工具、远程登录
(3)使用接口分析
由于本节中我们不需要使用任何的传感器,所以使用接口与控制平台基本运动使用的接口是相同的,即为:
Raspberry Pi 电机驱动板要使用的接口:电机接口A、电机接口B
Raspberry Pi 控制器要使用到的GPIO接口:
  • A口方向控制接口GPIO25
  • A口使能控制接口GPIO17
  • B口方向控制接口GPIO4
  • B口使能控制接口GPIO10
2、例子程序
将例子程序输入到Notepad++ 文档编辑器中,保存名为robot8.py文件,使用FTP软件将文件上传到Raspberry Pi控制器pi目录下的alsrobot文件夹中
  1. import RPi.GPIO
  2. import time
  3. import sys
  4. import Tkinter as tk

  5. directionA = 25
  6. EA = 17
  7. directionB = 4
  8. EB = 10

  9. def init ():
  10.         RPi.GPIO.setmode(RPi.GPIO.BCM)
  11.         RPi.GPIO.setup(EA,RPi.GPIO.OUT)
  12.         RPi.GPIO.setup(directionA,RPi.GPIO.OUT)
  13.         RPi.GPIO.setup(EB,RPi.GPIO.OUT)
  14.         RPi.GPIO.setup(directionB,RPi.GPIO.OUT)

  15. def forward (tf):
  16.         RPi.GPIO.output(EA,True)
  17.         RPi.GPIO.output(directionA,True)
  18.         RPi.GPIO.output(EB,True)
  19.         RPi.GPIO.output(directionB,True)
  20.         time.sleep (tf)
  21.         RPi.GPIO.output(EA,False)
  22.         RPi.GPIO.output(EB,False)
  23.         
  24. def back (tf):
  25.         RPi.GPIO.output(EA,True)
  26.         RPi.GPIO.output(directionA,False)
  27.         RPi.GPIO.output(EB,True)
  28.         RPi.GPIO.output(directionB,False)
  29.         time.sleep (tf)
  30.         RPi.GPIO.output(EA,False)
  31.         RPi.GPIO.output(EB,False)

  32. def right (tf):
  33.         RPi.GPIO.output(EA,True)
  34.         RPi.GPIO.output(directionA,True)
  35.         RPi.GPIO.output(EB,True)
  36.         RPi.GPIO.output(directionB,False)
  37.         time.sleep (tf)
  38.         RPi.GPIO.output(EA,False)
  39.         RPi.GPIO.output(EB,False)

  40. def left (tf):
  41.         RPi.GPIO.output(EA,True)
  42.         RPi.GPIO.output(directionA,False)
  43.         RPi.GPIO.output(EB,True)
  44.         RPi.GPIO.output(directionB,True)
  45.         time.sleep (tf)
  46.         RPi.GPIO.output(EA,False)
  47.         RPi.GPIO.output(EB,False)

  48. def stop(tf):
  49.         RPi.GPIO.output(EA,False)
  50.         RPi.GPIO.output(directionA,False)
  51.         RPi.GPIO.output(EB,False)
  52.         RPi.GPIO.output(directionB,False)
  53.         time.sleep (tf)
  54.         RPi.GPIO.cleanup()

  55. def key_input(event):
  56.         init()
  57.         print 'Key:', event.char
  58.         key_press = event.char
  59.         sleep_time = 1
  60.         
  61.         if key_press.lower() == 'w':
  62.                 forward(sleep_time)
  63.         elif key_press.lower() == 's':
  64.                 back(sleep_time)
  65.         elif key_press.lower() == 'a':
  66.                 left(sleep_time)
  67.         elif key_press.lower() == 'd':
  68.                 right(sleep_time)
  69.                
  70. command = tk.Tk()
  71. command.bind('<KeyPress>',key_input)
  72. command.mainloop()
复制代码
3、程序执行
游客,如果您要查看本帖隐藏内容请回复
回复

使用道具 举报

大神点评53

惠成功 发表于 2017-1-2 19:34
树莓派输出的PWM是否够稳定?
这个驱动板直接接上两个130电机能不能稳定驱动? ...

这个实验没有输出PWM信号,树莓派的硬件PWM引脚只有一个,其他都需要用软件模拟PWM信号。
电机驱动板每路的输出峰值是1A,5V,是否可以稳定驱动,您需要根据电机参数
回复 支持 1 反对 0

使用道具 举报

学习一下,谢谢分享
回复 支持 反对

使用道具 举报

yonghua 2016-12-15 12:58 显示全部楼层
这隐藏是什么意思呀?
回复 支持 反对

使用道具 举报

奥松-Neil 2016-12-16 10:01 显示全部楼层
yonghua 发表于 2016-12-15 12:58
这隐藏是什么意思呀?

主要是为了看看大家更感兴趣的是什么,有针对性的制作教程
回复 支持 反对

使用道具 举报

hskkk 2016-12-19 09:16 显示全部楼层
ssssssssssssssssssssssssssssssssssssssss
回复 支持 反对

使用道具 举报

zjhyn 2016-12-20 02:15 显示全部楼层
hi,all................................
回复

使用道具 举报

rosaz 2016-12-20 02:19 显示全部楼层
我好想看隐藏的内容,真是太好玩了啊啊啊啊啊啦啦啦啦
回复 支持 反对

使用道具 举报

huangyilele 2016-12-26 17:51 来自手机 显示全部楼层
xuexuexixi
回复 支持 反对

使用道具 举报

惠成功 2017-1-2 19:34 显示全部楼层
树莓派输出的PWM是否够稳定?
这个驱动板直接接上两个130电机能不能稳定驱动?
回复 支持 反对

使用道具 举报

您可能感兴趣的文章

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

关注0

粉丝8

帖子147

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