在安卓下控制基于树莓派的小车 皆用python实现
来源:互联网 发布:mac硬盘清理工具 编辑:程序博客网 时间:2024/05/21 06:36
参照了lessisawesome的文章,http://blog.csdn.net/maninbehind/article/details/9715137
小车端(即树莓派),记得装RPI GPIO python
import RPi.GPIO as GPIO #GPIO package from socket import * import sys import time #import car # for example# GPIO.setmode(GPIO.BOARD) #set mode # GPIO.setup(13, GPIO.OUT) #set gpio in or out # GPIO.setup(15, GPIO.OUT) #set gpio in or out # GPIO.output(13, GPIO.HIGH) #set out HIGH or LOW# GPIO.output(15, GPIO.LOW) #set out HIGH or LOWclass Wheel: pins ={'a':[13,15],'b':[16,18],'c':[19,21],'d':[22,24]}# four (wheel-gpio prot) dict def __init__(self,name): self.name = name self.pin = Wheel.pins[self.name] GPIO.setmode(GPIO.BOARD) GPIO.setup(self.pin[0],GPIO.OUT) GPIO.setup(self.pin[1],GPIO.OUT) self.stop() def forward(self): GPIO.output(self.pin[0],GPIO.HIGH) GPIO.output(self.pin[1],GPIO.LOW) def stop(self): GPIO.output(self.pin[0],False) GPIO.output(self.pin[1],False) def back(self): GPIO.output(self.pin[0],False) GPIO.output(self.pin[1],True) class Car: wheels=[Wheel('a'),Wheel('b'),Wheel('c'),Wheel('d')] @staticmethod def init(): GPIO.setmode(GPIO.BOARD) @staticmethod def forward(): for wheel in Car.wheels: wheel.forward() @staticmethod def back(): for wheel in Car.wheels: wheel.back() @staticmethod def left(): Car.wheels[0].forward() Car.wheels[1].forward() Car.wheels[3].back() Car.wheels[2].back() @staticmethod def right(): Car.wheels[2].forward() Car.wheels[3].forward() Car.wheels[0].back() Car.wheels[1].back() @staticmethod def stop(): Car.wheels[0].stop() Car.wheels[1].stop() Car.wheels[3].stop() Car.wheels[2].stop() ######################################################### commands ={'forward':Car.forward, 'back':Car.back, 'stop':Car.stop, 'left':Car.left, 'right':Car.right } def execute(command): print command commands[command]() HOST ='10.1.1.190' #the ip of rapberry pi PORT = 8888 s= socket(AF_INET, SOCK_STREAM) s.bind((HOST, PORT)) s.listen(1) print ('listening on 8888') while 1: conn, addr = s.accept() print ('Connected by:', addr) while 1: command= conn.recv(1024).replace('\n','') if not command:break execute(command) conn.close()
手机端,记得装qpython这个python环境
#-*- coding:utf-8 -*-import kivyfrom kivy.lang import Builderfrom kivy.uix.gridlayout import GridLayoutfrom kivy.app import Appfrom kivy.uix.widget import Widgetfrom kivy.uix.button import Buttonfrom socket import * host = '10.1.1.190'port = 8888bufsiz =1024addr = (host, port)def SendComand(cmd):s=socket(AF_INET, SOCK_STREAM)s.connect(addr)s.send(cmd)s.closeBuilder.load_string('''<CarControlScreen>: cols: 1 Button: text: 'forward' on_release: root.forward()Button: text: 'back' on_release: root.back() Button: text: 'left' on_release: root.left() Button: text: 'right' on_release: root.right() Button: text: 'stop' on_release: root.stop()''')class CarControlScreen(GridLayout): def left(self): print "Left"SendComand('left') def right(self): print "Right"SendComand('right') def forward(self): print "forward"SendComand('forward') def back(self): print "back"SendComand('back') def stop(self): print "Stop"SendComand('stop')class myApp(App): def build(self):return CarControlScreen() if __name__ == '__main__': myApp().run()
1 0
- 在安卓下控制基于树莓派的小车 皆用python实现
- 基于android和arduino 的小车控制
- 【51】基于51单片机的蓝牙控制小车的简单实现(有源代码,无图)
- 基于2440智能小车控制
- 基于单片机控制的智能小车的设计
- 一种构思:基于手机移动平台的远程小车控制
- 基于android系统的智能小车控制软件开发
- 基于UDP协议的小车控制android软件
- 基于TQ2440的小车(4)网络编程控制
- 基于51单片机和蓝牙控制的红外小车
- 基于ROS平台的移动机器人-2-小车底盘控制
- 基于神经网络的智能RC小车(Python+OpenCV)
- 蓝牙远程控制小车实现
- 类似滴滴打车,多辆小车在地图上平滑移动的实现,基于百度地图实现(轨迹已画好)
- 类似滴滴打车,多辆小车在地图上平滑移动的实现,基于百度地图实现(无轨迹)
- (一)基于2440智能小车控制
- zrobot----------小车的运动控制
- ROS仿真小车python键盘控制测试
- Java Web 三层架构详解
- 使用openssl解密c#的DESCryptoServiceProvider的密文
- 【LeetCode】Binary Tree Preorder Traversal
- Windows核心编程(七)用户模式下的线程同步
- delphi中cardinal类型
- 在安卓下控制基于树莓派的小车 皆用python实现
- 4Sum
- 关于Python Package下的Module import方式
- 将tomcat、Nginx、memcache、MongoDB等免安装软件注册成win系统的服务
- matching_to_many_images运行错误
- Ruby on Rails 新建Bolg项目
- linux网络编程二:基础socket, bind, listen, accept, connect
- 新长城 郁闷的一道面试题(把C盘文件复制到D盘)
- Oracle 字段类型