PCF8591 (i2c Analog I/O Expander) Hitra enostavna uporaba: 9 korakov
PCF8591 (i2c Analog I/O Expander) Hitra enostavna uporaba: 9 korakov
Anonim
PCF8591 (i2c Analog I/O Expander) Hitra enostavna uporaba
PCF8591 (i2c Analog I/O Expander) Hitra enostavna uporaba

Knjižnica za uporabo i2c pcf8591 IC z arduinom in esp8266.

Ta IC lahko nadzoruje (do 4) analogni vhod in/ali 1 analogni izhod, kot je merilna napetost, bere vrednost termistorja ali zbledi LED.

Lahko bere analogne vrednosti in zapisuje analogne vrednosti samo z 2 žicami (kot nalašč za ESP-01).

Poskušam poenostaviti uporabo tega IC z minimalnim nizom operacij.

Posodobljeno različico najdete na moji spletni strani

1. korak: Kako deluje I2c

Kako deluje I2c
Kako deluje I2c

I2C deluje z dvema žicama, SDA (podatkovna linija) in SCL (linija ure).

Obe liniji sta odprti, vendar sta potegnjeni z upori.

Običajno je na liniji en glavni in en ali več podrejenih, čeprav jih je lahko več, vendar bomo o tem govorili kasneje.

Tako nadrejeni kot podrejeni lahko prenašajo ali sprejemajo podatke, zato je naprava lahko v enem od teh štirih stanj: glavni prenos, glavni sprejem, podrejeni prenos, podrejeni sprejem.

2. korak:

Mojo knjižnico najdete tukaj.

Prenesti.

Kliknite gumb DOWNLOADS v zgornjem desnem kotu in preimenujte nestisnjeno mapo PCF8591.

Preverite, ali mapa PCF8591 vsebuje PCF8591.cpp in PCF8591.h.

Mapo knjižnice PCF8591 postavite v mapo / libraries /.

Morda boste morali ustvariti podmapo knjižnice, če je to vaša prva knjižnica.

Znova zaženite IDE.

3. korak: Uporaba

Konstruktor: vnesti morate naslov i2c (za preverjanje naslova uporabite ta vodnik I2cScanner)

PCF8591 (uint8_t naslov);

za esp8266, če želite določiti SDA e SCL pin, uporabite to:

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

4. korak: preberite vrednost

Preberite vrednost
Preberite vrednost

IC, kot vidite na sliki, ima 4 analogne vhode in 1 analogni izhod.

Če želite torej prebrati vse analogne vhode v enem prenosu (vrednost je od 0 do 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);

če želite prebrati en sam analogni vhod ali kanal:

int ana = pcf8591.analogRead (AIN0); // branje analognega 0

5. korak: Preberite Vale s kanala

Preberite Vale s kanala
Preberite Vale s kanala

Ta IC ima več vrst branja in lahko uporabite analogni vhod ali analogni kanal (ko uporabljate en sam bralni analogni vhod in kanal sta na slikah).

Če želite na primer prebrati vrednost kanala 0 v dveh diferencialnih vhodih, morate:

int ana = pcf8591.analogRead (CHANNEL0, TWO_DIFFERENTIAL_INPUT); // branje analognega 0

6. korak: Zapišite vrednost

Če želite napisati analogno vrednost, morate to narediti (vrednost je od 0 do 255):

pcf8591.analogWrite (128);

7. korak: Dodatne funkcije

Dodatna funkcija je branje napetosti pri zapisovanju: Za izračun napetosti morate vnesti nekaj parametrov:

  • mikrokrmilnik Referenčna napetost: dobite napetost iz napetosti mikrokrmilnika (samo AVR brez esp8266 za esp 3.3v fiksno)
  • referenceVoltage: če mikrokontrolerReferenceVoltage false vzame to vrednost Ukaz je:

void voltageWrite (vrednost float, bool mikrokontrolerReferenceVoltage = true, float referenceVoltage = 5.0);

plavajoča napetostRead (uint8_t analogPin, bool mikrokrmilnikReferenceVoltage = true, float referenceVoltage = 5.0);

Primer je:

pcf8591.voltageWrite (2.7); // 2,7 voltov izhod

zamuda (3000);

float ana0V = pcf8591.voltageRead (AIN0); // Odčitavanje napetosti iz analognega 0

Serial.println (ana0V);

8. korak: Primeri diagrama povezave

Primeri diagram povezave
Primeri diagram povezave

9. korak: Hvala

serija projektov i2c (zbirka):

  • Senzor temperaturne vlažnosti
  • Analogni ekspander
  • Digitalni ekspander
  • LCD zaslon