Spisu treści:
- Krok 1: Jak działa I2c
- Krok 2:
- Krok 3: Użycie
- Krok 4: Przeczytaj wartość
- Krok 5: Odczytaj Vale z kanału
- Krok 6: Wpisz wartość
- Krok 7: Dodatkowe funkcje
- Krok 8: Przykładowy schemat połączeń
- Krok 9: Dzięki
Wideo: PCF8591 (analogowy ekspander we/wy i2c) Szybka i łatwa obsługa: 9 kroków
2024 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2024-01-30 11:31
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
Zalecana:
Raspberry Pi - PCA9536 Ekspander wejść/wyjść Python Samouczek: 4 kroki
Raspberry Pi - PCA9536 Input/output Expander Python Tutorial: PCA9536 to 8-pinowe urządzenie CMOS, które zapewnia 4-bitowe rozszerzenie równoległego wejścia/wyjścia (GPIO) ogólnego przeznaczenia dla aplikacji I2C-bus/SMBus. Składa się z 4-bitowego rejestru konfiguracyjnego służącego do wyboru wejścia lub wyjścia, 4-bitowego
Analogowy miernik VU z obsługą Bluetooth: 6 kroków
Analogowy miernik VU z obsługą Bluetooth: To był mój projekt dla jednej z moich zajęć uniwersyteckich o nazwie SMP. Ponieważ używaliśmy płytki rozwojowej STM32F103RB, oparłem na niej mój projekt, zaczynając od prostego miernika VU. Następnie dodałem kilka dodatkowych funkcji, takich jak obsługa Bluetooth, aby nadawać va
Raspberry Pi - PCA9536 Ekspander wejść/wyjść Samouczek Java: 4 kroki
Raspberry Pi - PCA9536 Input/Output Expander Samouczek Java: PCA9536 to 8-pinowe urządzenie CMOS, które zapewnia 4-bitowe rozszerzenie równoległego wejścia/wyjścia (GPIO) ogólnego przeznaczenia dla aplikacji I2C-bus/SMBus. Składa się z 4-bitowego rejestru konfiguracyjnego służącego do wyboru wejścia lub wyjścia, 4-bitowego
Szybka i łatwa ładowarka do iPoda / przenośne gniazdo akcesoriów DC: 3 kroki
Szybka i łatwa ładowarka do iPoda / przenośne gniazdo akcesoriów DC: Jest to prosta konstrukcja S U P E R, która pozwoli Ci uruchomić wiele różnych akcesoriów DC z prostego akumulatora
Szybka i łatwa naprawa wtyczki zasilania laptopa: 5 kroków
Szybka i łatwa naprawa wtyczki zasilania laptopa: Tło: Mam w domu 2 laptopy HP i niestety obie wtyczki zasilania, które są podłączone do gniazda zasilania notebooków, były od jakiegoś czasu luźne. Moja siostra, która jest zmęczona próbami odwrócenia wtyczki zasilania tak, aby zasilacz sieciowy był