Innholdsfortegnelse:
2025 Forfatter: John Day | [email protected]. Sist endret: 2025-01-13 06:58
Bibliotek for bruk av i2c pcf8591 IC med arduino og esp8266.
Denne IC kan kontrollere (inntil 4) analog inngang og/eller 1 analog utgang som måle spenning, lese termistorverdi eller falme en LED.
Kan lese analog verdi og skrive analog verdi med bare 2 ledninger (perfekt for ESP-01).
Jeg prøver å forenkle bruken av denne IC, med et minimalt sett med operasjoner.
Du finner den oppdaterte versjonen på nettstedet mitt
Trinn 1: Slik fungerer I2c
I2C fungerer med sine to ledninger, SDA (datalinje) og SCL (klokke linje).
Begge disse ledningene er åpne-drenering, men trekkes opp med motstander.
Vanligvis er det en mester og en eller flere slaver på linjen, selv om det kan være flere mestere, men vi snakker om det senere.
Både mestere og slaver kan overføre eller motta data, derfor kan en enhet befinne seg i en av disse fire tilstandene: masteroverføring, mastermottak, slaveoverføring, slavemottak.
Steg 2:
Du finner biblioteket mitt her.
For å laste ned.
Klikk på DOWNLOADS -knappen øverst til høyre, gi nytt navn til den ukomprimerte mappen PCF8591.
Kontroller at PCF8591 -mappen inneholder PCF8591.cpp og PCF8591.h.
Plasser PCF8591 bibliotekmappen din / biblioteker / mappen.
Du må kanskje opprette undermappen biblioteker hvis det er ditt første bibliotek.
Start IDE på nytt.
Trinn 3: Bruk
Konstruktør: du må passere adressen til i2c (for å sjekke adressen, bruk denne guiden I2cScanner)
PCF8591 (uint8_t adresse);
for esp8266 hvis du vil spesifisere SDA og SCL -pin, bruk denne:
PCF8591 (uint8_t adresse, uint8_t sda, uint8_t scl);
Trinn 4: Les verdi
IC som du kan se på bildet har 4 analoge innganger og 1 analoge utganger.
Så for å lese all analog inngang i én sending kan du gjøre (verdien er fra 0 til 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);
hvis du vil lese en enkelt analog inngang eller kanal:
int ana = pcf8591.analogRead (AIN0); // les analog 0
Trinn 5: Les Vale fra kanal
Denne IC har flere typer lesing, og du kan bruke Analog inngang eller analog kanal (når du bruker enkel lese analog inngang og kanalen er på bildene).
For eksempel for å lese verdien av kanal 0 i To differensialinnganger må du gjøre:
int ana = pcf8591.analogRead (CHANNEL0, TWO_DIFFERENTIAL_INPUT); // les analog 0
Trinn 6: Skriv verdi
Hvis du vil skrive en analog verdi må du gjøre (verdien er fra 0 til 255):
pcf8591.analogWrite (128);
Trinn 7: Ytterligere funksjoner
Ekstra funksjon er å lese en skrivespenning: For beregning av spenning må du passere en parameter:
- microcontrollerReferenceVoltage: få spenning fra mikrokontroller spenning (bare AVR ingen esp8266 for esp 3.3v fast)
- referenceVoltage: if microcontrollerReferenceVoltage false ta denne verdien 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 utgang
forsinkelse (3000);
float ana0V = pcf8591.voltageRead (AIN0); // Les spenning fra analog 0
Serial.println (ana0V);
Trinn 8: Eksempler på tilkoblingsdiagram
Trinn 9: Takk
i2c -prosjektserie (samling):
- Temperaturfuktighetssensor
- Analog ekspander
- Digital ekspander
- LCD-skjerm