Sommario:

PCF8591 (espansore I/O analogico i2c) Veloce e facile da usare: 9 passaggi
PCF8591 (espansore I/O analogico i2c) Veloce e facile da usare: 9 passaggi

Video: PCF8591 (espansore I/O analogico i2c) Veloce e facile da usare: 9 passaggi

Video: PCF8591 (espansore I/O analogico i2c) Veloce e facile da usare: 9 passaggi
Video: What is ADC and how potentiometer works — controlling LED brightness. Comprehensive Arduino lessons. 2024, Novembre
Anonim
PCF8591 (Espansione I/O analogici i2c) Veloce e facile da usare
PCF8591 (Espansione I/O analogici i2c) Veloce e facile da usare

Libreria per utilizzare i2c pcf8591 IC con arduino ed esp8266.

Questo IC può controllare (fino a 4) un ingresso analogico e/o 1 uscita analogica come misurare la tensione, leggere il valore del termistore o sfumare un led.

Può leggere il valore analogico e scrivere il valore analogico con solo 2 fili (perfetto per ESP-01).

Cerco di semplificare l'uso di questo IC, con un minimo di operazioni.

Puoi trovare la versione aggiornata sul mio sito

Passaggio 1: come funziona I2c

Come funziona I2c
Come funziona I2c

I2C funziona con i suoi due fili, SDA (linea dati) e SCL (linea di clock).

Entrambe queste linee sono open-drain, ma sono tirate su con resistori.

Di solito c'è un master e uno o più slave sulla linea, anche se possono esserci più master, ma ne parleremo più avanti.

Sia i master che gli slave possono trasmettere o ricevere dati, quindi un dispositivo può trovarsi in uno di questi quattro stati: trasmissione master, ricezione master, trasmissione slave, ricezione slave.

Passo 2:

Puoi trovare la mia libreria qui.

Scaricare.

Fare clic sul pulsante DOWNLOAD nell'angolo in alto a destra, rinominare la cartella non compressa PCF8591.

Verificare che la cartella PCF8591 contenga PCF8591.cpp e PCF8591.h.

Posiziona la cartella della libreria PCF8591 nella tua cartella /libraries/.

Potrebbe essere necessario creare la sottocartella delle librerie se è la tua prima libreria.

Riavvia l'IDE.

Passaggio 3: utilizzo

Costruttore: devi passare l'indirizzo di i2c (per controllare l'indirizzo usa questa guida I2cScanner)

PCF8591(indirizzo uint8_t);

per esp8266 se vuoi specificare pin SDA e SCL usa questo:

PCF8591(indirizzo uint8_t, uint8_t sda, uint8_t scl);

Passaggio 4: leggi il valore

Leggi valore
Leggi valore

IC come puoi vedere nell'immagine ha 4 ingressi analogici e 1 uscita analogica.

Quindi per leggere tutti gli ingressi analogici in una trasmissione si può fare (il valore va da 0 a 255):

PCF8591::AnalogInput ai = pcf8591.analogReadAll();

Serial.print(ai.ain0); Serial.print(" - "); Serial.print(ai.ain1); Serial.print(" - "); Serial.print(ai.ain2); Serial.print(" - "); Serial.println(ai.ain3);

se vuoi leggere un singolo ingresso analogico o canale:

int ana = pcf8591.analogRead(AIN0); // legge 0. analogico

Passaggio 5: leggi Vale dal canale

Leggi Vale dal canale
Leggi Vale dal canale

Questo IC ha più tipi di lettura ed è possibile utilizzare l'ingresso analogico o il canale analogico (quando si utilizza l'ingresso analogico a lettura singola e il canale sono nelle immagini).

Ad esempio per leggere il valore del canale 0 in Two differenziale input devi fare:

int ana = pcf8591.analogRead(CHANNEL0, TWO_DIFFERENTIAL_INPUT); // legge 0. analogico

Passaggio 6: scrivi valore

Se vuoi scrivere un valore analogico devi fare (il valore va da 0 a 255):

pcf8591.analogWrite(128);

Passaggio 7: funzionalità aggiuntive

Caratteristica aggiuntiva è leggere una tensione di scrittura: Per il calcolo della tensione è necessario passare alcuni parametri:

  • microcontrolloreReferenceVoltage: ottenere la tensione dalla tensione del microcontrollore (solo AVR no esp8266 per esp 3.3v fisso)
  • referenceVoltage: se microcontrolloreReferenceVoltage false prende questo valoreI comandi sono:

void voltageWrite(float value, bool microcontrolloreReferenceVoltage = true, float referenceVoltage = 5.0);

float voltageRead(uint8_t analogPin, bool microcontrolloreReferenceVoltage = true, float referenceVoltage = 5.0);

Un esempio è:

pcf8591.voltageWrite(2.7); // Uscita 2,7 Volt

ritardo (3000);

float ana0V = pcf8591.voltageRead(AIN0); // Legge la tensione dall'analogico 0

Serial.println(ana0V);

Passaggio 8: esempi di schema di collegamento

Esempi Schema di collegamento
Esempi Schema di collegamento

Passaggio 9: grazie

Serie di progetti i2c (Collezione):

  • Sensore di umidità della temperatura
  • Espansore analogico
  • Espansore digitale
  • Display LCD

Consigliato: