User Tools

Site Tools


extended-python-arduino-module

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
Next revision Both sides next revision
extended-python-arduino-module [2012/08/01 14:44]
46.57.71.90
extended-python-arduino-module [2013/03/12 15:54]
65.202.239.135 skTfCvSl
Line 1: Line 1:
-Extended Python Arduino Prototyping API: arduino python modulefrom the [[http://code.google.com/p/extended-python-arduino-prototyping-api/​source/​browse/​trunk/​arduino/​arduino.py?​r=9&​spec=svn9|goole code]] project trunk +jalL35 ​, [url=http://hyykvudxnohw.com/]hyykvudxnohw[/url], [link=http://​jgwjlcbiqzrc.com/​]jgwjlcbiqzrc[/link], http://​xilqjdgtlhid.com/
- +
-<code python>​ +
-#​!/​usr/​bin/​env python +
- +
-import serialtime +
-DEBUG=True +
-READ=0 #read +
-WRITE=1 #write +
-class Servo: +
-    def __init__(self,​ pin, board, number=0):​ +
-        self.pin = pin +
-        self.board=board +
-        self.number=number +
-    def attach(self):​ +
-        if self.board.sendCmd('​S',​ 5, self.number,​ self.pin, 0)=='​0':​ +
-            return True +
-        print "​Servo:​ Error attach %s" % self.pin +
-        return False +
-    def detach(self):​ +
-        if self.board.sendCmd('​S',​ 9, self.number,​ self.pin, 0)=='​0':​ +
-            return True +
-        print "​Servo:​ Error detach %s" % self.pin +
-        return False +
-    def attached(self):​ +
-        if self.board.sendCmd('​S',​ 8, self.number,​ self.pin, 0)=='​1':​ +
-            return True +
-        return False +
-    def write(self,​value):​ +
-        if self.board.sendCmd('​S',​ 6, self.number,​ self.pin, value)=='​0':​ +
-            return True +
-        print "​Servo:​ Error write %s = %s" % (self.pin,​value) +
-        return False +
-    def read(self):​ +
-        return self.board.sendCmd('​S',​ 7, self.number,​ self.pin, 0) +
- +
-class Arduino(object):​ +
- +
-    __OUTPUT_PINS = -1 +
- +
-    def __init__(self,​ port, baudrate=9600):​ +
-        self.serial = serial.Serial(port,​ baudrate) +
-        self.servo_index=0 +
-        +
-    def init(self):​ +
-        self.sendCmd('​I',​) +
- +
-    def __str__(self):​ +
-        return "​Arduino is on port %s at %d baudrate"​ %(self.serial.port,​ self.serial.baudrate) +
- +
-    def attachServo(self,​pin):​ +
-        s = Servo(pin,​self,​self.servo_index) +
-        s.attach() +
-        self.servo_index+=1 +
-        return s +
-        +
-    def getServo(self,​pin,​number):​ +
-        '''​ number - index of serv[] array '''​ +
-        return Servo(pin,self,​number) +
- +
-    def output(self,​ pinArray): +
-        if(isinstance(pinArray,​ list) or isinstance(pinArray,​ tuple)): +
-            self.__OUTPUT_PINS = pinArray +
-            for each_pin in pinArray: +
-                self.sendCmd('​C',​each_pin,​1) +
-        return True +
- +
-    def setLow(self,​ pin): +
-        self.sendCmd('​D',​WRITE,​pin,​0) +
-        return True +
- +
-    def setHigh(self,​ pin): +
-        self.sendCmd('​D',​WRITE,​pin,​1) +
-        return True +
- +
-    def getState(self,​ pin): +
-        return self.__formatPinState(self.sendCmd('​D',​READ,​pin)) +
- +
-    def analogWrite(self,​ pin, value): +
-        self.sendCmd('​A',​WRITE,​pin,​value) +
-        return True +
- +
-    def analogRead(self,​ pin): +
-        return int(self.sendCmd('​A',​READ,​pin)) +
- +
-    def turnOff(self):​ +
-        for each_pin in self.__OUTPUT_PINS:​ +
-            self.setLow(each_pin) +
-        return True +
- +
-    def sendCmd(self,​ *args): +
-        line=""​ +
-        for arg in args: +
-            line = line + "%s " % arg +
-        #print "​dbg:​sendCmd('​%s!'​)"​ % line +
-        self.serial.write("​%s!"​ % line) +
-        self.serial.flush() +
-        res = self.serial.readline().replace("​\r\n",""​) +
-        if DEBUG: +
-            print "​dbg:​sendCmd('​%s!'​)=%s"​ % (line, res) +
-        return res +
- +
-    def __formatPinState(self,​ pinValue):​ +
-        if pinValue=='​1':​ +
-            return True +
-        else: +
-            return False +
- +
-    def close(self):​ +
-        self.serial.close() +
-        return True +
- +
-    def __del__(self):​ +
-        #close serial connection once program ends +
-        #this fixes the problem of port getting locked or unrecoverable in some linux systems +
-        self.serial.close() +
- +
- +
-</code>+
extended-python-arduino-module.txt · Last modified: 2013/03/14 08:23 by 120.193.146.105