In questa pagina verranno presentati alcuni brevi programmi scritti in C per utilizzare periferiche I2C con Raspberry Pi tramite le funzioni fornite da WiringPi.
Il bus I2C di Raspberry Pi è già stato discusso; se ancora non lo avete fatto, leggete la pagina introduttiva su Raspberry e I2C prima di proseguire in quanto non verrà qui ripreso nulla su come configurare il modulo i2c-dev e come assegnare i permessi agli utenti. I pin utilizzati dal bus I2C sono disponibili sul connettore GPIO.
L'elenco completo delle funzioni di wiringPi relative a I2C è descritto nella pagina ufficiale http://wiringpi.com/reference/i2c-library.
Il circuito utilizzato per questo esempio è costituito da un LM75A collegato al connettore GPIO del Raspberry Pi. Il circuito può essere realizzato su breadboard oppure è possibile utilizzare RPi demo. Nel caso di realizzazione su breadboard:
Il codice di esempio, scaricabile a fondo pagina, contiene le seguenti funzioni:
I due byte ritornati sono la parte intera (MSB) e la parte frazionaria (LSB) della temperatura misurata, come descritto nella Table 9. Temp register dei fogli tecnici di LM75A.
pi@raspberrypi:~ $ ./LM75A
Reading 2 bytes from I2C address 0x4F, register 0x00
Raw data: 0x18 0x20
Temperature: 24.1 degree Celsius
Di seguito i segnali misurati durante l'esecuzione del codice LM75A.c e la figura 9 tratta dai fogli tecnici di LM75A. i due grafici sono stati colorati allo stesso modo per rendere più semplice il loro confronto.
In modo analogo, è possibile scrivere nei registri di una periferica I2C. Il secondo esempio mostra come poter scrivere nei due registri TOS e THYST che permettono di far funzionare LM75A come termostato funzionante autonomamente dal software: il LED mostrato nello schema si accende quando la temperatura sale sopra una determinata temperatura impostata tramite TOS e si spegna quando scende al di sotto di quella impostata attraverso THYST (nota 1).
pi@raspberrypi:~ $ ./LM75A_thermostat.c
Temperature: 25.375 degree Celsius
The LED becomes active when temperature exceeds 25.0 deg C, and leaves the
active state when the temperature drops below 22.5 deg C
La nuova funzione utilizzata è int wiringPiI2CWriteReg16 (int fd, int reg, int data) che scrive 16 bit (data) nel registro reg nel dispositivo I2C identificato da fd.
Data di creazione di questa pagina: marzo 2013
Ultima modifica di questa pagina: 31 marzo 2018
Raspberry Pi: note di hardware - Versione 1.31 - Luglio
2019
Copyright 2013-2019, Vincenzo Villa (https://www.vincenzov.net)
Quest'opera è stata rilasciata con licenza Creative Commons | Attribuzione-Condividi allo stesso modo 3.0 Unported.