Innehållsförteckning:

PCF8591 (i2c Analog I/O Expander) Snabb enkel användning: 9 steg
PCF8591 (i2c Analog I/O Expander) Snabb enkel användning: 9 steg

Video: PCF8591 (i2c Analog I/O Expander) Snabb enkel användning: 9 steg

Video: PCF8591 (i2c Analog I/O Expander) Snabb enkel användning: 9 steg
Video: Arduino analog port expander - pcf8591 with I2C protocol 2024, November
Anonim
PCF8591 (i2c Analog I/O Expander) Snabb enkel användning
PCF8591 (i2c Analog I/O Expander) Snabb enkel användning

Bibliotek för att använda i2c pcf8591 IC med arduino och esp8266.

Denna IC kan styra (upp till 4) analog ingång och/eller 1 analog utgång som mätspänning, läsa termistorvärde eller bleka en lysdiod.

Kan läsa analogt värde och skriva analogt värde med endast 2 trådar (perfekt för ESP-01).

Jag försöker förenkla användningen av denna IC, med en minimal uppsättning operationer.

Du hittar en uppdaterad version på min webbplats

Steg 1: Hur I2c fungerar

Hur I2c fungerar
Hur I2c fungerar

I2C fungerar med sina två ledningar, SDA (datalinje) och SCL (klocklinje).

Båda dessa ledningar är öppna avlopp, men dras upp med motstånd.

Vanligtvis finns det en mästare och en eller flera slavar på linjen, även om det kan finnas flera mästare, men vi pratar om det senare.

Både mästare och slavar kan överföra eller ta emot data, därför kan en enhet befinna sig i ett av dessa fyra tillstånd: masteröverföring, mastermottagning, slavöverföring, slavmottagning.

Steg 2:

Du hittar mitt bibliotek här.

Att ladda ned.

Klicka på knappen DOWNLOADS i det övre högra hörnet, byt namn på den okomprimerade mappen PCF8591.

Kontrollera att mappen PCF8591 innehåller PCF8591.cpp och PCF8591.h.

Placera biblioteksmappen PCF8591 din / bibliotek / mapp.

Du kan behöva skapa bibliotekets undermapp om det är ditt första bibliotek.

Starta om IDE.

Steg 3: Användning

Konstruktör: du måste ange adressen till i2c (för att kontrollera adressen, använd denna guide I2cScanner)

PCF8591 (uint8_t -adress);

för esp8266 om du vill ange SDA och SCL -pin använder du detta:

PCF8591 (uint8_t -adress, uint8_t sda, uint8_t scl);

Steg 4: Läs värde

Läs värde
Läs värde

IC som du kan se på bilden har 4 analoga ingångar och 1 analoga utgångar.

Så för att läsa all analog ingång i en sändning kan du göra (värdet är från 0 till 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);

om du vill läsa en enda analog ingång eller kanal:

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

Steg 5: Läs Vale From Channel

Läs Vale From Channel
Läs Vale From Channel

Denna IC har flera typer av läsning och du kan använda analog ingång eller analog kanal (när du använder enkel läst analog ingång och kanalen finns på bilderna).

Till exempel för att läsa värdet på kanal 0 i Två differentialingångar måste du göra:

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

Steg 6: Skriv värde

Om du vill skriva ett analogt värde måste du göra (värdet är från 0 till 255):

pcf8591.analogWrite (128);

Steg 7: Ytterligare funktioner

Ytterligare funktion är att läsa en skrivspänning: För beräkning av spänning måste du passera någon parameter:

  • microcontrollerReferenceVoltage: få spänning från mikrokontrollerns spänning (endast AVR ingen esp8266 för esp 3.3v fast)
  • referenceVoltage: if microcontrollerReferenceVoltage false ta det här värdet Kommandot är:

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

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

Ett exempel är:

pcf8591.voltageWrite (2.7); // 2,7 volt utgång

fördröjning (3000);

float ana0V = pcf8591.voltageRead (AIN0); // Läs spänning från analog 0

Serial.println (ana0V);

Steg 8: Exempel Anslutningsdiagram

Exempel Anslutningsdiagram
Exempel Anslutningsdiagram

Steg 9: Tack

i2c -projektserie (samling):

  • Temperaturfuktighetssensor
  • Analog expander
  • Digital expander
  • LCD skärm

Rekommenderad: