Spisu treści:
2025 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2025-01-13 06:58
Biblioteka do obsługi i2c pcf8591 IC z arduino i esp8266.
Ten układ scalony może sterować (aż do 4) wejściem analogowym i/lub 1 wyjściem analogowym, takim jak pomiar napięcia, odczyt wartości termistora lub zanikanie diody LED.
Może odczytywać wartość analogową i zapisywać wartość analogową za pomocą tylko 2 przewodów (idealne dla ESP-01).
Staram się uprościć korzystanie z tego układu scalonego przy minimalnym zestawie operacji.
Aktualną wersję można znaleźć na mojej stronie
Krok 1: Jak działa I2c
I2C współpracuje z dwoma przewodami, SDA (linia danych) i SCL (linia zegara).
Obie te linie są otwarte, ale są podciągnięte rezystorami.
Zwykle na linii jest jeden master i jeden lub więcej slaveów, chociaż może być wielu masterów, ale o tym porozmawiamy później.
Zarówno urządzenia nadrzędne, jak i podrzędne mogą przesyłać lub odbierać dane, dlatego urządzenie może znajdować się w jednym z tych czterech stanów: przesyłanie urządzenia nadrzędnego, odbiór urządzenia nadrzędnego, przesyłanie urządzenia podrzędnego, odbiór urządzenia podrzędnego.
Krok 2:
Moją bibliotekę znajdziesz tutaj.
Pobrać.
Kliknij przycisk POBIERZ w prawym górnym rogu, zmień nazwę nieskompresowanego folderu PCF8591.
Sprawdź, czy folder PCF8591 zawiera PCF8591.cpp i PCF8591.h.
Umieść folder biblioteki PCF8591 w folderze /libraries/.
Może być konieczne utworzenie podfolderu biblioteki, jeśli jest to Twoja pierwsza biblioteka.
Uruchom ponownie środowisko IDE.
Krok 3: Użycie
Konstruktor: musisz podać adres i2c (aby sprawdzić adres skorzystaj z tego przewodnika I2cScanner)
PCF8591 (adres uint8_t);
dla esp8266, jeśli chcesz określić pin SDA e SCL, użyj tego:
PCF8591 (adres uint8_t, uint8_t sda, uint8_t scl);
Krok 4: Przeczytaj wartość
IC jak widać na obrazku ma 4 wejścia analogowe i 1 wyjście analogowe.
Czyli aby odczytać wszystkie wejścia analogowe w jednej transmisji można zrobić (wartość wynosi 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);
jeśli chcesz odczytać pojedyncze wejście analogowe lub kanał:
int ana = pcf8591.analogRead(AIN0); // odczytaj analogowe 0
Krok 5: Odczytaj Vale z kanału
Ten układ scalony ma wiele rodzajów odczytu i można użyć wejścia analogowego lub kanału analogowego (gdy używasz pojedynczego wejścia analogowego do odczytu i kanału są na zdjęciach).
Na przykład, aby odczytać wartość kanału 0 na wejściu różnicowym Two należy wykonać:
int ana = pcf8591.analogRead(CHANNEL0, TWO_DIFFERENTIAL_INPUT); // odczytaj analogowe 0
Krok 6: Wpisz wartość
Jeśli chcesz zapisać wartość analogową, musisz to zrobić (wartość wynosi od 0 do 255):
pcf8591.analogWrite(128);
Krok 7: Dodatkowe funkcje
Dodatkową funkcją jest odczyt napięcia zapisu: Do obliczenia napięcia należy podać parametr:
- microcontrollerReferenceVoltage: pobierz napięcie z mikrokontrolera (tylko AVR nie esp8266 dla esp 3.3v stałe)
- referenceVoltage: jeśli microcontrollerReferenceVoltage false przyjmij tę wartość. Polecenie to:
void voltageWrite(wartość zmiennoprzecinkowa, mikrokontrolerReferenceVoltage bool = true, napięcie referencyjne zmiennoprzecinkowe = 5.0);
float voltageRead (uint8_t analogPin, bool microcontrollerReferenceVoltage = true, float referenceVoltage = 5.0);
Przykładem jest:
pcf8591.napięcieZapis(2.7); // Wyjście 2,7 V
opóźnienie(3000);
pływak ana0V = pcf8591.voltageRead(AIN0); // Odczytaj napięcie z analogowego 0
Serial.println(ana0V);
Krok 8: Przykładowy schemat połączeń
Krok 9: Dzięki
Seria projektów i2c (Kolekcja):
- Czujnik wilgotności temperatury
- Ekspander analogowy
- Ekspander cyfrowy
- Wyświetlacz LCD