Raspberry Pi
Programmazione

ultimo aggiornamento 13 ottobre 2012

 

Il linguaggio di programmazione Python

Per la scrittura del programma di gestione della Demo-board personalmente ho scelto Il linguaggio di programmazione Python che è di tipo ad alto livello, orientato agli oggetti, adatto, tra gli altri usi, per sviluppare applicazioni distribuite, scripting, computazione numerica e system testing.
Altri linguaggi cui Python è spesso paragonato sono Perl, Java, JavaScript, Visual Basic.

Il linguaggio fu ideato da Guido Van Rossum all'inizio degli anni novanta. Il nome fu scelto per via della passione dell'ideatore per i Monty Python.
Python è un linguaggio pseudocompilato: un interprete si occupa di analizzare il codice sorgente (semplici file testuali con estensione .py) e, se sintatticamente corretto, di eseguirlo. In Python, non esiste una fase di compilazione separata (come avviene in C, per esempio) che generi un file eseguibile partendo dal sorgente.
L'essere pseudointerpretato rende Python un linguaggio portabile.
Una volta scritto un sorgente, esso può essere interpretato ed eseguito sulla gran parte delle piattaforme attualmente utilizzate, siano esse di casa Apple (Mac) che PC (Microsoft Windows e GNU/Linux).
Semplicemente, basta la presenza della versione corretta dell'interprete.
Un’altra particolarità è che Python è free software: non solo il download dell'interprete per la propria piattaforma, ma anche per l'uso di Python nelle proprie applicazioni.
Queste caratteristiche hanno fatto di Python il protagonista di un enorme diffusione in tutto il mondo. Questo perché garantisce lo sviluppo rapido (e divertente) di applicazioni di qualsiasi complessità in tutti i contesti: dal desktop al web, passando dallo sviluppo di videogiochi e dallo scripting.
Per quanto riguarda l’interprete questo è già installato all’interno del sistema Operativo Raspbian sarà sufficiente fare un doppio clic sull’icona posta sul desktop denominata IDLE 3, in questo modo sarà caricato il programma interprete che si presenta come un’editor dei testi che ci permetterà di scrivere, salvare, caricare i programmi il cui file avrà come estensione “py”

homotix

PCBONLINE

 

Installazione delle librerie RPi.GPIO per Python.

Per la gestione della Demo Board è possibile utilizzare una specifica libreria Python chiamata RPi.GPIO che consente di configurare in modo semplice i pin GPIO sia in lettura sia in scrittura all'interno di uno script Python
Per utilizzarle è necessario installare il pacchetto poiché non è attualmente incluso nell'immagine del SO.
Questo è disponibile presso http://pypi.python.org/pypi/RPi.GPIO in questo momento la versione più aggiornata è la 0.4.1a.
Se esiste, una versione più aggiornata sarà necessario apportare le modifiche appropriate per il numero di versione nei comandi sotto riportati.
Per installarlo accertarsi che la scheda Raspberry sia connessa in internet quindi lanciare una linea di comando (cioè LXTerminal) e digitare i seguenti comandi:

Passo 1 - Scaricare la libreria
http://pypi.python.org/packages/source/R/RPi.GPIO/RPi.GPIO-0.4.1a.tar.gz wget

Fase 2 - Estrarre l'archivio in una nuova cartella
tar zxf RPi.GPIO-0.4.1a.tar.gz
Fase 3 - Individuare la nuova directory
cd RPi.GPIO-0.4.1a

Fase 4 - Installare la libreria
sudo python setup.py install

Fase 5 - Rimuovere la directory e il suo contenuto
cd ..
sudo rm-rf RPi.GPIO-0.4.1a /

Fase 6 - Eliminare il file di archivio
rm-RPi.GPIO 0.4.1a.tar.gz

Si potrà ora utilizzare la libreria in Python.
 

Testiamo un programma di prova

Possiamo ora provare a scrivere qualche programma e testarlo sul campo.  Per fare questo potremo costruire una scheda come quella visibile sotto, le cui istruzioni sono alla pagina Interfaccia Demo-Board.
Il programma cui presentato farà lampeggiare tutti gli otto led connessi alle porte, il suo funzionamento è visibile nel filmato http://youtu.be/0n4MzWPjj9g
Il programma dovrà essere copiato utilizzando la Shell del programma Python, (programma)
Il funzionamento del programma è molto semplice.

Demo Board utilizzata per la prova del programma

La prima linea

#!/usr/bin/python

Riporta la posizione del programma Python
Le successive

import time
import RPi.GPIO as GPIO


servono ad importare le due librerie la prima time è una libreria standard usata per la temporizzazione, mentre la RPi.GPIO va istallata secondo le indicazioni del precedente paragrafo.
Segue l’impostazione di come chiameremo i pin, che può essere

GPIO.setmode(GPIO.BOARD)

oppure

GPIO.setmode(GPIO.BCM)

Vengono poi impostate le varie porte tutte come uscite, viene poi creato un ciclo che pone ogni uscita a true accendendo il led, quindi dopo una pausa di un secondo stabilita dall’istruzione

time.sleep(1)

Una volta scritto il programma e salvato per esempio come Test_scheda.py, si potrà mandare in esecuzione mediate il comando RUN, oppure dalla riga di comando

sudo python Test_scheda.py

 

 

 

#!/usr/bin/python

import time
import RPi.GPIO as GPIO


# to use Raspberry Pi board pin numbers
GPIO.setmode(GPIO.BOARD)

# set up the GPIO channels
GPIO.setup(11, GPIO.OUT) # GPIO 0
GPIO.setup(12, GPIO.OUT) # GPIO 1
GPIO.setup(13, GPIO.OUT) # GPIO 2
GPIO.setup(15, GPIO.OUT) # GPIO 3
GPIO.setup(16, GPIO.OUT) # GPIO 4
GPIO.setup(18, GPIO.OUT) # GPIO 5
GPIO.setup(22, GPIO.OUT) # GPIO 6
GPIO.setup(7, GPIO.OUT) # GPIO 7

while 1:

GPIO.output(11, True) #GPI O a 1 Led acceso
GPIO.output(12, True) #GPI 1 a 1 Led acceso
GPIO.output(13, True) #GPI 2 a 1 Led acceso
GPIO.output(15, True) #GPI 3 a 1 Led acceso
GPIO.output(16, True) #GPI 4 a 1 Led acceso
GPIO.output(18, True) #GPI 5 a 1 Led acceso
GPIO.output(22, True) #GPI 6 a 1 Led acceso
GPIO.output(7, True) #GPI 7 a 1 Led acceso
time.sleep(1)
GPIO.output(11, False) #GPI O a 0 Led spento
GPIO.output(12, False) #GPI 1 a 0 Led spento
GPIO.output(13, False) #GPI 2 a 0 Led spento
GPIO.output(15, False) #GPI 3 a 0 Led spento
GPIO.output(16, False) #GPI 4 a 0 Led spento
GPIO.output(18, False) #GPI 5 a 0 Led spento
GPIO.output(22, False) #GPI 6 a 0 Led spento
GPIO.output(7, False) #GPI 7 a 0 Led spento
time.sleep(1)

Elenco revisioni
13/10/2012 Emissione preliminare