def analogWrite(self, pin, value):
        """Establece el estado de un pin análogo"""
        if not (type(pin) == type(1)): raise PynguinoError(2)
        if not (type(value) == type(1)): raise PynguinoError(6)
        if value < 0 or value > 1023: raise PynguinoError(7)

        self.Send("analogWrite(" + str(pin) + "," + str(value) + ")")
 def LCD_begin(self,par1,par2):
     if type(par1)!=type(1): raise PynguinoError(13)
     if type(par2)!=type(1): raise PynguinoError(13)
     
     self.pinguino.write('begin')
     self.pinguino.write(str(par1).rjust(2,'0'))
     self.pinguino.write(str(par2).rjust(2,'0'))
 def LCD_setCursor(self,par1,par2):
     if type(par1)!=type(1): raise PynguinoError(13)
     if type(par2)!=type(1): raise PynguinoError(13)
     
     self.pinguino.write('setCursor')
     self.pinguino.write(str(par1).rjust(2,'0'))
     self.pinguino.write(str(par2).rjust(2,'0'))
    def LCD_saveChar(self,position,char):
        if type(position)!=type(1): raise PynguinoError(16)

        self.LCD_command(position);
        for fila in char:
            if type(fila)!=type(1): raise PynguinoError(16)
            self.LCD_write(fila)     
예제 #5
0
    def pinMode(self, pin, mode):
        """Define como se comportará el pin, como entrada o como salida"""
        if type(pin) != type(1): raise PynguinoError(2)
        if not (mode == 'input' or mode == 'output'): raise PynguinoError(4)

        self.pinguino.write('setup')
        self.pinguino.write(str(pin).rjust(2, '0'))
        self.pinguino.write(mode)
        self.pin_modes[pin] = mode
예제 #6
0
    def analogWrite(self, pin, value):
        """Establece el estado de un pin análogo"""
        if not (type(pin) == type(1)): raise PynguinoError(2)
        if not (type(value) == type(1)): raise PynguinoError(6)
        if value < 0 or value > 1023: raise PynguinoError(7)

        self.pinguino.write('write')
        self.pinguino.write(str(pin).rjust(2, '0'))
        self.pinguino.write('analog')
        self.pinguino.write(str(value).rjust(4, '0'))
예제 #7
0
    def digitalWrite(self, pin, value):
        """Establece el estado de un pin, alto o bajo"""
        if not (type(pin) == type(1)): raise PynguinoError(2)
        if not (value == 'high' or value == 'low'): raise PynguinoError(5)

        self.pinguino.write('write')
        self.pinguino.write(str(pin).rjust(2, '0'))
        self.pinguino.write('digital')
        if value == 'high': self.pinguino.write('1')
        elif value == 'low': self.pinguino.write('0')
        self.pin_states[pin] = value
예제 #8
0
    def analogRead(self, pin):
        """Lee el estado de un pin análogo"""
        if not (type(pin) == type(1)): raise PynguinoError(2)

        self.pinguino.write('read')
        self.pinguino.write(str(pin).rjust(2, '0'))
        self.pinguino.write('analog')
        #Para evitar ValueError: null byte in argument for int()
        #simplemente se eliminan todos los'\x00'
        #más una función de recursividad
        cont = 0
        while cont <= 10:
            try:
                read_analog = self.pinguino.read(5)
                value = int(read_analog.replace('\x00', ''))
                return value
            except:
                cont += 1
        raise PynguinoError(11)
 def Conect(self,puerto):
     """Inicializa la comunicación"""
     try:
         self.pinguino=serial.Serial(puerto,timeout=1)
         self.pinguino.write('PinnoProcessing')
         if self.pinguino.read(9)=='Conectado':
             self.pin_modes=range(29)
             self.pin_states=range(29)
             return True
     except: raise PynguinoError(1)
예제 #10
0
    def digitalRead(self, pin):
        """Lee el estado de un pin"""
        if not (type(pin) == type(1)): raise PynguinoError(2)

        self.pinguino.write('read')
        self.pinguino.write(str(pin).rjust(2, '0'))
        self.pinguino.write('digital')
        read = self.pinguino.read(1)
        if read == '1': return 'high'
        elif read == '0': return 'low'
def detectar_metodo(cadena):
    comandos_processing = ("Conect", "RecursiveConect", "pinMode",
                           "digitalWrite", "digitalRead", "analogRead",
                           "analogWrite", "GetPinMode", "GetPinState",
                           "allInput", "allOutput", "allHigh", "allLow",
                           "reset", "setProcessingTimeout",
                           "setProcessingWriteTimeout", "ProcessingClose",
                           "GetPinguinoCode")
    if comandos_processing.count(cadena[:cadena.find("(")]) != 0:
        ret = []
        ret.append(cadena[:cadena.find("(")])
        ret.append(cadena[cadena.find("(") + 1:cadena.find(",")])
        if cadena.count(",") == 1:
            ret.append(cadena[cadena.find(",") + 1:cadena.find(")")])
        return ret
    else:
        raise PynguinoError(8)
#! /usr/bin/python
#-*- coding: utf-8 -*- 

#Copyright (c) <2011> Yeison Nolberto Cardona Álvarez <*****@*****.**>
#https://sites.google.com/site/yeisoneng/
#All rights reserved.

#Este módulo es distribuido bajo licencia libre, ver archivo licence.

from raiseError import PynguinoError

import os,serial
if not(os.name=='nt' or  os.name=='posix'): 
    raise PynguinoError(9)

from PinguinoProcessing import PinguinoProcessing
from PinguinoSockets import PinguinoSockets
from PinguinoLCD import PinguinoLCD
    def digitalRead(self, pin):
        """Lee el estado de un pin"""
        if not (type(pin) == type(1)): raise PynguinoError(2)

        self.Send("digitalRead(" + str(pin) + ")")
예제 #14
0
    def GetPinState(self, pin):
        """Retorna el estado de un pin basado en la informacion enviada"""
        if not (type(pin) == type(1)): raise PynguinoError(2)

        if type(self.pin_states[pin]) == type(1): return 'low'
        else: return self.pin_states[pin]
예제 #15
0
    def GetPinMode(self, pin):
        """Retorna el modo de un pin basado en la informacion enviada"""
        if not (type(pin) == type(1)): raise PynguinoError(2)

        if type(self.pin_modes[pin]) == type(1): return 'output'
        else: return self.pin_modes[pin]
    def analogRead(self, pin):
        """Lee el estado de un pin análogo"""
        if not (type(pin) == type(1)): raise PynguinoError(2)

        self.Send("analogRead(" + str(pin) + ")")
    def digitalWrite(self, pin, value):
        """Establece el estado de un pin, alto o bajo"""
        if not (type(pin) == type(1)): raise PynguinoError(2)
        if not (value == 'high' or value == 'low'): raise PynguinoError(5)

        self.Send("digitalWrite(" + str(pin) + ",'" + str(value) + "')")
예제 #18
0
#                       OSC 2 -#     #- GND                                      Analog In 20 -#         #- GND
#              Digital I/O 10 -#     #- Digital I/O 9                                     VCC -#         #- Digital I/O 28
#  Digital I/O, Analog Out 11 -#     #- Digital I/O 8                                     GND -#         #- Digital I/O 27
#  Digital I/O, Analog Out 12 -#     #- D+                                               OSC 1-#         #- Digital I/O 26
#                        VUSB -#######- D-                                               OSC 2-#         #- Digital I/O 25
#                                                                              Digital I/O 10 -#         #- Digital I/O 9
#                                                                  Digital I/O, Analog Out 11 -#         #- Digital I/O 8
#                                                                  Digital I/O, Analog Out 12 -#         #- D+
#                                                                                        VUSB -#         #- D-
#                                                                              Digital I/O 21 -#         #- Digital I/O 24
#                                                                              Digital I/O 22 -###########- Digital I/O 23

try:
    import serial
except:
    PynguinoError(3)

import os
from raiseError import PynguinoError


########################################################################
class PinguinoProcessing():

    # Modificado Jue 7 Julio 2011 - Para Adaptar a PinguiBLOQUES
    pin_modes = range(29)
    pin_states = range(29)

    #----------------------------------------------------------------------
    def Conect(self, puerto):
        """Inicializa la comunicación"""
 def LCD_print(self,to_send):
     """LCD_prind soporta todo formato (int, float, string)"""
     if not ((type(to_send)==type(1)) or (type(to_send)==type(1.0)) or (type(to_send)==type("N"))): raise PynguinoError(14)
     
     if type(to_send)==type(1): to_send=str(to_send)
     if type(to_send)==type(1.0): to_send=str(to_send)
     self.pinguino.write('print')
     self.pinguino.write(to_send)
    def GetPinState(self, pin):
        """Retorna el estado de un pin basado en la informacion enviada"""
        if not (type(pin) == type(1)): raise PynguinoError(2)

        self.Send("GetPinState(" + str(pin) + ")")
    def pinMode(self, pin, mode):
        """Define como se comportará el pin, como entrada o como salida"""
        if type(pin) != type(1): raise PynguinoError(2)
        if not (mode == 'input' or mode == 'output'): raise PynguinoError(4)

        self.Send("pinMode(" + str(pin) + ",'" + mode + "')")
 def LCD_write(self,value):
     if type(value)!=type(1): raise PynguinoError(14)
     
     self.pinguino.write('write') 
     self.pinguino.write(str(value))     
 def LCD_command(self,value):
     if type(value)!=type(1): raise PynguinoError(13)
     
     self.pinguino.write('command') 
     self.pinguino.write(str(value)) 
#! /usr/bin/python
#-*- coding: utf-8 -*- 

try: import serial
except: PynguinoError(3)

import os
from raiseError import PynguinoError
        
########################################################################
class PinguinoLCD():
    #----------------------------------------------------------------------
    def Conect(self,puerto):
        """Inicializa la comunicación"""
        try:
            self.pinguino=serial.Serial(puerto,timeout=1)
            self.pinguino.write('PinnoProcessing')
            if self.pinguino.read(9)=='Conectado':
                self.pin_modes=range(29)
                self.pin_states=range(29)
                return True
        except: raise PynguinoError(1)
        
    #----------------------------------------------------------------------
    def RecursiveConect(self,max_puertos=20):
        """Se conecta estomáticamente con el primer pinguino que encuentre habilitado."""
        cont=0
        while cont<=max_puertos:
            try:
                if os.name=='posix':
                    self.Conect('/dev/ttyACM'+str(cont))