Indholdsfortegnelse:

PCF8591 (i2c Analog I/O Expander) Hurtig let brug: 9 trin
PCF8591 (i2c Analog I/O Expander) Hurtig let brug: 9 trin

Video: PCF8591 (i2c Analog I/O Expander) Hurtig let brug: 9 trin

Video: PCF8591 (i2c Analog I/O Expander) Hurtig let brug: 9 trin
Video: Arduino analog port expander - pcf8591 with I2C protocol 2024, November
Anonim
PCF8591 (i2c Analog I/O Expander) Hurtig let brug
PCF8591 (i2c Analog I/O Expander) Hurtig let brug

Bibliotek til brug af i2c pcf8591 IC med arduino og esp8266.

Denne IC kan styre (indtil 4) analog indgang og/eller 1 analog udgang som måle spænding, aflæse termistorværdi eller fade en LED.

Kan læse analog værdi og skrive analog værdi med kun 2 ledninger (perfekt til ESP-01).

Jeg forsøger at forenkle brugen af denne IC med et minimalt sæt operationer.

Du kan finde en opdateret version på mit websted

Trin 1: Sådan fungerer I2c

Sådan fungerer I2c
Sådan fungerer I2c

I2C fungerer med sine to ledninger, SDA (datalinje) og SCL (urlinje).

Begge disse linjer er åbne-afløb, men er trukket op med modstande.

Normalt er der en mester og en eller flere slaver på linjen, selvom der kan være flere mestre, men vi taler om det senere.

Både mestre og slaver kan overføre eller modtage data, derfor kan en enhed befinde sig i en af disse fire tilstande: masteroverførsel, mastermodtagelse, slaveoverførsel, slavemodtagelse.

Trin 2:

Du kan finde mit bibliotek her.

At downloade.

Klik på knappen DOWNLOADS i øverste højre hjørne, omdøb den ukomprimerede mappe PCF8591.

Kontroller, at PCF8591 -mappen indeholder PCF8591.cpp og PCF8591.h.

Placer PCF8591 biblioteksmappen din / biblioteker / mappe.

Du skal muligvis oprette bibliotekernes undermappe, hvis det er dit første bibliotek.

Genstart IDE.

Trin 3: Anvendelse

Konstruktør: du skal angive adressen på i2c (for at kontrollere adressen, brug denne vejledning I2cScanner)

PCF8591 (uint8_t adresse);

til esp8266, hvis du vil angive SDA og SCL -pin, skal du bruge denne:

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

Trin 4: Læs værdi

Læs værdi
Læs værdi

IC, som du kan se på billedet, har 4 analoge indgange og 1 analoge udgange.

Så for at læse alle analoge input i en transmission kan du gøre (værdien er fra 0 til 255):

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

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

hvis du vil læse en enkelt analog indgang eller kanal:

int ana = pcf8591.analogRead (AIN0); // læs analog 0

Trin 5: Læs Vale fra kanal

Læs Vale fra kanal
Læs Vale fra kanal

Denne IC har flere typer af læsning, og du kan bruge Analog input eller analog kanal (når du bruger single read analog input og kanal er på billederne).

For eksempel for at læse værdien af kanal 0 i To differentialindgange skal du gøre:

int ana = pcf8591.analogRead (CHANNEL0, TWO_DIFFERENTIAL_INPUT); // læs analog 0

Trin 6: Skriv værdi

Hvis du vil skrive en analog værdi, skal du gøre (værdien er fra 0 til 255):

pcf8591.analogWrite (128);

Trin 7: Yderligere funktioner

Yderligere funktion er at læse en skrivespænding: Til beregning af spænding skal du passere en parameter:

  • microcontrollerReferenceVoltage: få spænding fra mikrocontroller spænding (kun AVR ingen esp8266 for esp 3.3v fast)
  • referenceVoltage: hvis microcontrollerReferenceVoltage false tager denne værdi Kommandoen er:

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

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

Et eksempel er:

pcf8591.voltageWrite (2.7); // 2,7 volt udgang

forsinkelse (3000);

float ana0V = pcf8591.voltageRead (AIN0); // Læs spænding fra analog 0

Serial.println (ana0V);

Trin 8: Eksempler Tilslutningsdiagram

Eksempler Tilslutningsdiagram
Eksempler Tilslutningsdiagram

Trin 9: Tak

i2c projektserie (samling):

  • Temperaturfugtighedsføler
  • Analog ekspander
  • Digital ekspander
  • LCD display

Anbefalede: