import firmata class TAArduino(object): def __init__(self, dev='/dev/ttyUSB0', baud=115200): object.__init__(self) self._dev = dev self._baud = baud self._arduino = None # Do not initialize this now self.HIGH = firmata.HIGH self.LOW = firmata.LOW self.INPUT = firmata.INPUT self.OUTPUT = firmata.OUTPUT self.PWM = firmata.PWM self.SERVO = firmata.SERVO def _check_init(self): if self._arduino is None: self._arduino = firmata.Arduino(port = self._dev, \ baudrate=self._baud) self._arduino.parse() def delay(self, secs): # Do not use this. The firmata module uses time.sleep() to # implement this, which breaks gtk+ (unresponsive window) self._check_init() self._arduino.delay(secs) def pin_mode(self, pin, mode): self._check_init() self._arduino.pin_mode(int(pin), mode) def analog_write(self, pin, value): self._check_init() self._arduino.analog_write(int(pin), int(value)) def digital_write(self, pin, value): self._check_init() self._arduino.digital_write(int(pin), value) def analog_read(self, pin): self._check_init() self._arduino.parse() #XXX: Not sure why I have to do this here. return self._arduino.analog_read(int(pin)) def digital_read(self, pin): self._check_init() return self._arduino.digital_read(int(pin))