python控制树莓派小车_在安卓下控制基于树莓派的小车 皆用python实现

参照了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 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('''

:

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()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值