Med hjälp av The PCF8575 i2c i/o Expander till Läs ingångar med Arduino (2 / 3 steg)
Steg 2: Koden
Om du vill använda i2c enheter är det bäst att förstå hur koden fungerar annars kommer du att ha många problem på vägen.
I2C hanteras med hjälp av Arduino tråd bibliotek.
För att förstå i2c kommer du att behöva göra lite läsning. Räknar med att vara väldigt förvirrad först. Om du planerar att göra är några medel och avancerad elektronik lärande i2c viktigt.
Jag kommer att försöka ge en mycket enkel förklaring till i2c.
En sak du kommer att märka, när du börjar arbeta med elektronik, är att du alltid har en röra av ledningar. Länge sedan Phillips sa "helvete med alla dessa trådar - behöver vi ett sätt för alla enheter att prata med varandra med bara två kablar". Strax efter skapades i2c. Nu kan du köpa i2c chips som gör nästan allt, och alla dessa marker skall kunna kommunicera med varandra med hjälp av bara två trådar. I2C kallas ofta den "två wire interface".
Så hur dessa enheter talar med varandra? Tja, har de alla en adress, mycket som om du har en e-postadress på ditt hus. Med denna unika adress kan du prata med varje enhet individuellt. Arduinoen, vilket skulle vara master-i2c-enheten, kan skicka instruktioner till de enskilda slav-i2c-enheter med en fancy kommunikationsprotokoll. I Arduino, send-meddelande ser ut så här:
Wire.send(someDate); vilka data skickar du enheten
Wire.endTransmission(); Avsluta kommunikation
Och ta emot-meddelandet ser ut så här: byte dataReceived [2]; //a två Bytematrisen att hålla våra data Wire.beginTransmission(aDeviceAddress); ///who talar du till? Wire.endTransmission(); //end kommunikation Wire.requestFrom(aDeviceAddress,2); //request två byte data
IF(Wire.available()) { dataReceived [0] = Wire.receive(); //read byte 1 dataReceived [1] = Wire.receive(); //read byte 2 }
Det riktigt knepigt med i2c är tolkning databladet och förståelse hur du förväntas ta emot eller skicka data till enheten. När du skriver i2c kod måste du ständigt referera till databladet.
Arduino kodfilen är bifogat nedan.
Anmärkning om du använder Arduino1.0
Wire.send och Wire.receive uttalanden måste BE ändras till Wire.write och Wire.read