Obsah:
2025 Autor: John Day | [email protected]. Naposledy změněno: 2025-01-13 06:57
Knihovna pro použití i2c pcf8591 IC s arduino a esp8266.
Tento IC může ovládat (až 4) analogový vstup a/nebo 1 analogový výstup, jako je měření napětí, čtení hodnoty termistoru nebo vyblednutí LED.
Může číst analogovou hodnotu a zapisovat analogovou hodnotu pouze pomocí 2 vodičů (ideální pro ESP-01).
Snažím se zjednodušit používání tohoto IC s minimální sadou operací.
Aktualizovanou verzi najdete na mém webu
Krok 1: Jak I2c funguje
I2C pracuje se dvěma vodiči, SDA (datový řádek) a SCL (hodinový řádek).
Obě tyto linky jsou otevřené, ale jsou vytaženy rezistory.
Obvykle je na lince jeden pán a jeden nebo více otroků, i když může být více mistrů, ale o tom si povíme později.
Master i slave mohou přenášet nebo přijímat data, proto může být zařízení v jednom z těchto čtyř stavů: hlavní vysílání, hlavní příjem, podřízený přenos, podřízený příjem.
Krok 2:
Moji knihovnu najdete zde.
Ke stažení.
Klikněte na tlačítko STAŽENÍ v pravém horním rohu, přejmenujte nekomprimovanou složku PCF8591.
Zkontrolujte, zda složka PCF8591 obsahuje PCF8591.cpp a PCF8591.h.
Umístěte složku knihovny PCF8591 do složky / libraries /.
Pokud je to vaše první knihovna, budete možná muset vytvořit podsložku knihoven.
Restartujte IDE.
Krok 3: Použití
Konstruktor: musíte zadat adresu i2c (pro kontrolu adresy použijte tuto příručku I2cScanner)
PCF8591 (adresa uint8_t);
pro esp8266, pokud chcete specifikovat pin SDA e SCL, použijte toto:
PCF8591 (adresa uint8_t, uint8_t sda, uint8_t scl);
Krok 4: Přečtěte hodnotu
IC, jak vidíte na obrázku, má 4 analogové vstupy a 1 analogový výstup.
Chcete -li tedy přečíst všechny analogové vstupy jedním přenosem, můžete provést (hodnota je 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);
pokud chcete přečíst jeden analogový vstup nebo kanál:
int ana = pcf8591.analogRead (AIN0); // číst analogový 0
Krok 5: Přečtěte si Vale z kanálu
Tento IC má více typů čtení a můžete použít analogový vstup nebo analogový kanál (pokud používáte jedno čtení, analogový vstup a kanál jsou na obrázcích).
Chcete -li například přečíst hodnotu kanálu 0 ve dvou diferenciálních vstupech, musíte provést:
int ana = pcf8591.analogRead (CHANNEL0, TWO_DIFFERENTIAL_INPUT); // číst analogový 0
Krok 6: Zapište hodnotu
Pokud chcete napsat analogovou hodnotu, musíte to udělat (hodnota je od 0 do 255):
pcf8591.analogWrite (128);
Krok 7: Další funkce
Další funkcí je čtení zapisovacího napětí: Pro výpočet napětí musíte předat nějaký parametr:
- mikrokontrolérReferenceVoltage: získejte napětí z napětí mikrokontroléru (pouze AVR bez esp8266 pro pevné napětí 3,3v)
- referenceVoltage: if microcontrollerReferenceVoltage false take this valuePříkaz jsou:
neplatné napětíPis
float voltageRead (uint8_t analogPin, bool microcontrollerReferenceVoltage = true, float referenceVoltage = 5,0);
Příkladem je:
pcf8591.voltageWrite (2.7); // Výstup 2,7 voltů
zpoždění (3000);
float ana0V = pcf8591.voltageRead (AIN0); // Odečtěte napětí z analogu 0
Serial.println (ana0V);
Krok 8: Příklady schématu připojení
Krok 9: Díky
Série projektů i2c (kolekce):
- Teplotní vlhkostní senzor
- Analogový expandér
- Digitální expandér
- LCD displej