giovedì 6 giugno 2013

Raspberry PI Tutorial 3: Gestire le GPIO

RPi.GPIO è un modulo per Python per gestire le GPIO della Raspberry Pi. 
Questo modulo è ancora in sviluppo e mancano alcune parti, 
ma è possibile usarlo con le limitazioni del caso
 e anche come test. Nelle prove che ho fatto non ho trovato problemi.
Ricordate che sono a 3,3V e quindi vanno interfacciate in modo adeguato.
La documentazione sulla libreria è disponibile qui dove è possibile scaricarla. 
La trovate anche su Python Package Index
Visto che è disponibile su PyPI usiamo easy_install per installarla.
Prima di tutto dove avere installato easy_install che in Debian si trova nel package python-pip

  • installiamo python-pip
    • pi@raspberrypi:~$ sudo apt-get install python-pip 
  • ora python-dev
    • se usciamo Python 2: sudo apt-get install python-dev
    • Se usciamo Python 3: sudo apt-get install python3-dev 
  • procediamo con l'installazione di distribute
    •  pi@raspberrypi:~$ sudo pip install distribute
  • e ora il modulo RPi.GPIO
    •  pi@raspberrypi:~$ sudo pip install RPi.GPIO
  • fatto
Provate ora a vedere se il modulo è installato correttamente

pi@raspberrypi:~$ python
Python 2.6.6 (r266:84292, Dec 27 2010, 21:57:32) 
[GCC 4.4.5 20100902 (prerelease)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import RPi.GPIO as GPIO
>>> dir(GPIO)
['BCM', 'BOARD', 'IN', 'InvalidChannelException', 
'InvalidDirectionException', 'InvalidModeException', 
'OUT', 'WrongDirectionException', '_BCM', '_ExportedIds', 
'_GPIO_PINS', '_GetValidId', '_MODE', '_MODES', '__builtins__', 
'__doc__', '__file__', '__name__', '__package__', '__path__', 
'_unexport', 'atexit', 'input', 'os', 'output', 'setmode', 'setup']
>>> 



esempio 

E ora proviamo helloword che si usa con gli MCU, fare lampeggiare un led.

Per questa prova serve una resistenza da circa 330ohm e un led da collegare come da schema qui sotto.



Ora scriviamo questo piccolo codice d'esempio in python usando la libreria RPi.GPIO

import RPi.GPIO as GPIO, time

"""
possiamo chiamare i pin con il numero assegnato o come numero BCM GPIO.
usando GPIO.setmode(GPIO.BCM))usciamo i pin chiamandoli per il numero.
"""
GPIO.setup(12, GPIO.OUT) # definiamo che il pin 12 (GPIO18) è un uscita


while 1: # loop infinito
   GPIO.output(12, True)  # GPIO a 1 (HIGH), led accesso
   time.sleep(1)          # attendi 1 secondo
   GPIO.output(12, False) # GPIO a 0 (LOW), led spento
   time.sleep(1)          # attendi 1 secondo e ricomincia


esempio 2

Nel esempio precedente abbiamo visto come usare i pin chiamandoli per numero,
ora vediamo come chiamarli per BCM GPIO
Lo schema elettrico rimane lo stesso del precedente


import RPi.GPIO as GPIO, time

"""
possiamo chiamare i pin con il numero assegnato o come numero BCM GPIO.
usando GPIO.setmode(GPIO.BCM))usciamo i pin chiamandoli per GPIO
il pin num 12 corrisponde al GPIO 18
"""
GPIO.setmode(GPIO.BCM)  
GPIO.setup(18, GPIO.OUT) # definiamo che il la GPIO18 (pin12) è un uscita


while 1: # loop infinito
   GPIO.output(18, True)  # GPIO a 1 (HIGH), led accesso
   time.sleep(1)          # attendi 1 secondo
   GPIO.output(18, False) # GPIO a 0 (LOW), led spento
   time.sleep(1)          # attendi 1 secondo e ricomincia



Nessun commento:

Posta un commento

Commenta