在安卓下控制基于树莓派的小车 皆用python实现
2014-03-30 14:57
721 查看
参照了lessisawesome的文章,http://blog.csdn.net/maninbehind/article/details/9715137
小车端(即树莓派),记得装RPI GPIO python
手机端,记得装qpython这个python环境
小车端(即树莓派),记得装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 LOW class 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 kivy from kivy.lang import Builder from kivy.uix.gridlayout import GridLayout from kivy.app import App from kivy.uix.widget import Widget from kivy.uix.button import Button from socket import * host = '10.1.1.190' port = 8888 bufsiz =1024 addr = (host, port) def SendComand(cmd): s=socket(AF_INET, SOCK_STREAM) s.connect(addr) s.send(cmd) s.close Builder.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()
相关文章推荐
- 使用Python简单的实现树莓派的WEB控制
- 用树莓派实现RGB LED的颜色控制——Python版本
- 使用Python简单的实现树莓派的WEB控制
- 使用Python简单的实现树莓派的WEB控制
- 树莓派小车By 树莓派爱好者ITJoker(通过python socket通信+mjpg实现树莓派视频小车)
- 远程控制通讯——基于树莓派 Python gpiozero 远程控制LED灯并返回控制结果
- 基于角色-功能-资源的权限控制模型的设计与实现
- 基于python网络编程实现支持购物、转账、存取钱、定时计算利息的信用卡系统
- [python] 基于k-means和tfidf的文本聚类代码简单实现
- 指数平滑--基于python实现
- python实现的基于蒙特卡洛树搜索(MCTS)与UCB的五子棋游戏
- 基于 Python 的数据结构与算法分析学习记录(6-10)—— 二叉堆实现
- python实现基于SVM手写数字识别功能
- Python + OpenCV实现基于傅里叶变换(FFT)的旋转文本校正(文字方向检测)
- 安卓中基于SlidingMenu实现侧滑功能
- Python基于有道实现英汉字典功能
- 《机器学习实战》基于朴素贝叶斯分类算法构建文本分类器的Python实现
- 教你如何用python实现语音控制报表及电脑应用
- python——wxpy模块实现微信尬聊(基于图灵机器人)
- Python爬虫实例——基于urlib、urlib和re实现