Corso C su Raspberry PI partendo da zero: Introduzione alle porte di Input

Dopo avere esaminato, nella scorsa puntata, le porte di comunicazione in modalità di uscita, questa volta le osserveremo come canali di input, per impartire comandi e istruzioni verso il Raspberry. Con l'acquisizione di tali competenze, l'utente sarà adesso capace di scrivere applicazioni con flusso "bilaterale". In altre parole, il Raspberry sarà capace di comandare dispositivi esterni collegati ad esso ma anche di ricevere istruzioni da periferiche collegate come, ad esempio, pulsanti, interruttori, circuiti, sensori e molto altro. L'articolo esaminerà, come al solito, le informazioni basilari e strettamente necessarie, proprio per non confondere le idee a chi sta iniziando adesso ad armeggiare con questo straordinario embedded.

Introduzione

Il Raspberry Pi è dotato, come abbiamo potuto vedere, di parecchie porte digitali. Esse possono fungere da uscita o da ingresso. Ad una porta in input si possono applicare solamente due diversi potenziali: quello "alto" (chiamato anche "vero" o "1" o "true"), corrispondente a 3,3V e quello basso (chiamato anche "falso",  o "0" o "false"), corrispondente a 0V. Occorre prestare attenzione a rispettare questi valori, pena la distruzione del dispositivo.  Una tensione collocata a metà quadrante (ad esempio 1,5V) potrebbe essere riconosciuta con difficoltà dal Rpi e il relativo stato non identificato correttamente. Quindi, ricordate sempre di utilizzare due tensioni ben precise e decise: 0V e 3.3V. In altri sistemi questi valori potrebbero variare, come nel caso dei microcontrollori Pic, che adottano i livelli 0V e 5V per rappresentare, rispettivamente, il livello logico basso e alto. Per maggiori informazioni sull'elettronica digitale si può consultare questo corso.

Come detto nella scorsa puntata, il nostro sistema dispone di ben 17 porte utilizzabili (vedi figura 1) sia come ingresso che uscita:

  • GPIO1
  • GPIO4
  • GPIO17
  • GPIO21
  • GPIO22
  • GPIO10
  • GPIO9
  • GPIO11
  • GPIO14
  • GPIO15
  • GPIO18
  • GPIO23
  • GPIO24
  • GPIO25
  • GPIO8
  • GPIO7

 

Figura 1: Le porte del Raspberry Pi.

Figura 1: Le porte del Raspberry Pi.

 

Gestione della porta di Input

Le operazioni per la configurazione di una porta in ingresso (vedi figura 2) sono le stesse per la porta di uscita: cambia solo il parametro di flusso ("in" oppure "out") che attesta il suo funzionamento in ingresso o in uscita. In pratica si può decidere se un piedino deve erogare tensione oppure riceverla dall'esterno. Le fasi da seguire sono le seguenti:

  • creazione della porta;
  • definizione del flusso dei dati (ingresso o uscita);
  • lettura della porta;
  • distruzione della porta a fine lavoro.

 

Figura 2: La gestione delle porte di ingresso.

Figura 2: La gestione delle porte di ingresso.

 

Creazione della porta

L'operazione si deve eseguire all'inizio, una volta sola. Come abbiamo fatto per l'output, si deve memorizzare il numero della porta GPIO desiderata, dentro il seguente file:

/sys/class/gpio/export

 

Definizione del flusso dei dati

Adesso siamo pronti per definire la direzione della porta, ossia il verso dei dati e dei segnali. Se serve configurare la porta GPio4 come ingresso, occorre utilizzare il file:

/sys/class/gpio/gpio4/direction

In esso si deve memorizzare la stringa “in” per configurare la porta come ingresso digitale.

 

Lettura della porta

Questa operazione è la più importante e la più frequente, in quanto permette di stabilire la tensione logica presente sulla porta in questione. Per conoscere lo stato del canale 4, ad esempio, si deve leggere il file:

/sys/class/gpio/gpio4/value

Una lettura del valore "0" (zero) indica un livello logico basso, mentre il valore "1" (uno) indica un livello logico alto. Si ricordi di modificare il nome del path con il numero della porta utilizzata.

 

Distruzione della porta

A fine programma è buona norma rilasciare la porta, utilizzando il seguente file:

/sys/class/gpio/unexport

E' sufficiente scrivere su esso il numero della porta da distruggere. Tutte queste operazioni si devono eseguire per ciascuna porta utilizzata nel proprio progetto. Si presti, dunque, molta attenzione a identificare bene il loro numero di riferimento.

Esempio pratico: contatore di accessi

Un esempio completo, molto utile e istruttivo, è quello del contatore di accessi, che proponiamo come esercizio didattico per mettere in pratica tutti i concetti visti fino ad ora. Il prototipo può essere utilizzato in molti ambiti (vedi applicazioni in figura 3), come ad esempio: [...]

Iscriviti e ricevi GRATIS
Speciale Pi

Fai subito il DOWNLOAD (valore 15€) GRATIS

ATTENZIONE: quello che hai appena letto è solo un estratto, l'Articolo Tecnico completo è composto da ben 2226 parole ed è riservato agli abbonati PLATINUM. Con l'Abbonamento avrai anche accesso a tutti gli altri Articoli Tecnici MAKER e PLATINUM e potrai fare il download (PDF) di tutti gli EOS-Book, Firmware e degli speciali MONOTEMATICI. ABBONATI ORA, è semplice e sicuro.

Abbonati alle riviste di elettronica

2 Commenti

  1. Maurizio Di Paolo Emilio Maurizio 2 agosto 2016
  2. Giovanni Di Maria Giovanni Di Maria 2 agosto 2016

Scrivi un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Iscriviti e ricevi GRATIS
Speciale Pi

Fai subito il DOWNLOAD (valore 15€) GRATIS