Cuprins:

PCF8591 (i2c analogic I / O Expander) Utilizare rapidă ușoară: 9 pași
PCF8591 (i2c analogic I / O Expander) Utilizare rapidă ușoară: 9 pași

Video: PCF8591 (i2c analogic I / O Expander) Utilizare rapidă ușoară: 9 pași

Video: PCF8591 (i2c analogic I / O Expander) Utilizare rapidă ușoară: 9 pași
Video: Arduino analog port expander - pcf8591 with I2C protocol 2024, Iulie
Anonim
PCF8591 (i2c analogic I / O Expander) Utilizare rapidă și ușoară
PCF8591 (i2c analogic I / O Expander) Utilizare rapidă și ușoară

Biblioteca pentru a utiliza i2c pcf8591 IC cu arduino și esp8266.

Acest IC poate controla (până la 4) intrări analogice și / sau 1 ieșire analogică, cum ar fi măsurarea tensiunii, poate citi valoarea termistorului sau poate estompa un led.

Poate citi valoare analogică și scrie valoare analogică cu doar 2 fire (perfect pentru ESP-01).

Încerc să simplific utilizarea acestui IC, cu un set minim de funcționare.

Puteți găsi versiunea actualizată pe site-ul meu

Pasul 1: Cum funcționează I2c

Cum funcționează I2c
Cum funcționează I2c

I2C funcționează cu cele două fire, SDA (linia de date) și SCL (linia de ceas).

Ambele linii sunt deschise, dar sunt trase cu rezistențe.

De obicei, există un maestru și unul sau mai mulți sclavi pe linie, deși pot exista mai mulți maeștri, dar despre asta vom vorbi mai târziu.

Atât stăpânii, cât și sclavii pot transmite sau primi date, prin urmare, un dispozitiv poate fi în una dintre aceste patru stări: transmiterea master, recepția master, transmiterea slave, recepția slave.

Pasul 2:

Puteți găsi biblioteca mea aici.

A descărca.

Faceți clic pe butonul DESCĂRCĂRI din colțul din dreapta sus, redenumiți folderul necomprimat PCF8591.

Verificați dacă folderul PCF8591 conține PCF8591.cpp și PCF8591.h.

Plasați folderul de bibliotecă PCF8591 în / folderul / biblioteci.

Poate fi necesar să creați subfolderul bibliotecilor dacă este prima dvs. bibliotecă.

Reporniți IDE-ul.

Pasul 3: utilizare

Constructor: trebuie să introduceți adresa i2c (pentru a verifica adresa utilizați acest ghid I2cScanner)

PCF8591 (adresa uint8_t);

pentru esp8266 dacă doriți să specificați pinul SDA e SCL utilizați acest lucru:

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

Pasul 4: Citiți valoarea

Citiți valoarea
Citiți valoarea

IC așa cum puteți vedea în imagine au 4 intrări analogice și 1 ieșire analogică.

Deci, pentru a citi toate intrările analogice într-o singură transmisie, puteți face (valoarea este de la 0 la 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);

dacă doriți să citiți o singură intrare analogică sau canal:

int ana = pcf8591.analogRead (AIN0); // citiți analogul 0

Pasul 5: Citiți Vale From Channel

Citiți Vale From Channel
Citiți Vale From Channel

Acest IC are mai multe tipuri de citire și puteți utiliza intrarea analogică sau canalul analogic (când utilizați intrarea analogică cu o singură citire și canalul sunt în imagini).

De exemplu, pentru a citi valoarea canalului 0 în Două intrări diferențiale, trebuie să faceți:

int ana = pcf8591.analogRead (CHANNEL0, TWO_DIFFERENTIAL_INPUT); // citiți analogul 0

Pasul 6: Scrieți valoarea

Dacă doriți să scrieți o valoare analogică, trebuie să o faceți (valoarea este de la 0 la 255):

pcf8591.analogWrite (128);

Pasul 7: Caracteristici suplimentare

Caracteristică suplimentară este citirea unei tensiuni de scriere: Pentru calcularea tensiunii trebuie să treceți un parametru:

  • microcontrollerReferenceVoltage: obțineți tensiunea de la tensiunea microcontrolerului (numai AVR nr esp8266 pentru esp 3.3v fix)
  • referenceVoltage: dacă microcontrollerReferenceVoltage false ia această valoare Comanda sunt:

void voltageWrite (valoare float, microcontroler BoolReferenceVoltage = adevărat, float referenceVoltage = 5.0);

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

Un exemplu este:

pcf8591.voltageWrite (2.7); // 2.7Volți de ieșire

întârziere (3000);

float ana0V = pcf8591.voltageRead (AIN0); // Citiți tensiunea din analogul 0

Serial.println (ana0V);

Pasul 8: Exemple Diagrama conexiunii

Exemple Diagrama conexiunii
Exemple Diagrama conexiunii

Pasul 9: Mulțumesc

Seria de proiecte i2c (Colecție):

  • Senzor de umiditate a temperaturii
  • Expander analogic
  • Expander digital
  • Ecran LCD

Recomandat: