Salta la barra di navigazione [1] - Vai alla barra di navigazione [3] - Scrivimi una mail [4]

Rapsberry Pi: LED e interruttori in C

Raspberry Pi - Note di hardware - Sommario - Novità - Tutorial - Progetti - Risorse - Non solo elettronica

In fase di sviluppo Pagina in preparazione In fase di sviluppo

Un LED collegato al RaspBerry Pi

Un classico: scrivere un programma che fa lampeggiare un LED! Ed il seguito (quando la fantasia domina!): accendere un LED quando si preme un pulsante. Verrà qui descritto come ottenere questo risultato usando il compilatore C e, opzionalmente, le librerie wirngPi (Nota 1)

Accendere il LED

Le procedure preliminari necessarie e lo schema elettrico sono descritti in questa pagina.

Un modo per interagire con GPIO è semplicemente l'inserimento delle opportune chiamate di sistema all'interno del codice C. Di seguito la "traduzione" del programma blink.sh.

pi@raspberrypi:~ $ nano blink.c

#include <unistd.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
 system ("echo 17 > /sys/class/gpio/export");
 usleep(200000);
 system ("echo out > /sys/class/gpio/gpio17/direction");

 while(1)
 {
  system ("echo 0 > /sys/class/gpio/gpio17/value"); usleep(500000);
  system ("echo 1 > /sys/class/gpio/gpio17/value"); usleep(500000);
 }

 return 0;
}

pi@raspberrypi:~ $ gcc -Wall -o blink blink.c
pi@raspberrypi:~ $ ./blink

Usare wiringPi

In alternativa, è possibile l'uso delle librerie wiringPi, in particolare delle funzioni pinMode() e digitalWrite() dall'ovvio significato. La documentazione è disponibile sul sito ufficiale.

pi@raspberrypi:~/wiringpi $ nano blink.c

#include <wiringPi.h>
int main (void)
{
 wiringPiSetup () ;
 pinMode (0, OUTPUT) ;
 for (;;)
 {
  digitalWrite (0, HIGH) ; delay (500) ;
  digitalWrite (0, LOW) ; delay (500) ;
 }
 return 0 ;
}

pi@raspberrypi:~/wiringpi $ gcc -Wall -o blink blink.c -lwiringPi

L'esecuzione del codice come utente normale potrebbe produrre un errore:

pi@raspberrypi:~/wiringpi $ ./blink
wiringPiSetup: Must be root. (Did you forget sudo?)

Per evitare ciò è necessario impostare la variabile d'ambiente WIRINGPI_GPIOMEM:

pi@raspberrypi:~/wiringpi $ export WIRINGPI_GPIOMEM=1
pi@raspberrypi:~/wiringpi $ ./blink

L'alternativa (sconsigliata) è quella di eseguire il codice come root, suggerimento presente nel messaggio di errore:

pi@raspberrypi:~/wiringpi $ sudo ./blink

Note

  1. Per utilizzare questa pagina è necessario utilizzare una versione recente di Raspbian con supporto di gpiomem. Per verificare:
    pi@raspberry:~ $ ls -l /dev/gpiomem
    crw-rw---- 1 root gpio 244, 0 Mar 6 08:59 /dev/gpiomem

Ultima modifica di questa pagina: 5 marzo 2016


Raspberry Pi - Note di hardware

Vedi anche: Il taccuino tecnico


Licenza "Creative Commons" - Attribuzione-Condividi allo stesso modo 3.0 Unported


EN - Pagina principale - Sommario - Accessibilità - Note legali e privacy policy - Posta elettronica

XHTML 1.0 Strict - CSS 3