W dzisiejszym wpisie pokażę jak w prosty sposób za pomocą Arduino sterować expanderem na MCP23017.
Pobieramy bibliotekę z Gita https://github.com/adafruit/Adafruit-MCP23017-Arduino-Library
lub z
Adafruit_MCP23017 (798 pobrań )
Rozpakowujemy pliki do Arduino\libraries u mnie C:\Program Files (x86)\Arduino\libraries\Adafruit_MCP23017\
Uwaga funkcja delay(); nie jest zalecana w produkcyjnym kodzie ze względu na „uśpienie” układu przez określony czas i może powodować niepoprawne działanie innych funkcji i programu.
#include//dodajemy bibliotekę do obsługi i2c #include "Adafruit_MCP23017.h" // dodajemy bibliotekę do obsługi układu MCP23017 Adafruit_MCP23017 mcp; // pierwszy MCP23017 Adafruit_MCP23017 mcp2; // drugi MCP23017 void setup() { // ustawienia funkcja wywoływana tylko raz przy starcie programu mcp.begin(); // w nawiasie adresy MCP - brak adres 0x20 mcp2.begin(1); // adres 0x21 byte i=0; // zmienna do pętli //aby nie wpisywać 16 razy dla każdego wyjścia mcp.pinMode(0, OUTPUT) dodamy pętle for(i=0;<=15;i++){ mcp.pinMode(i, OUTPUT); // ustaw pin jako wyjście mcp.digitalWrite(i, HIGH); // ustaw pin na stan wysoki mcp1.pinMode(i, OUTPUT); mcp.1digitalWrite(i, HIGH); } } void loop() { // pętla główna programu int i=0; // zmienna do pętli int sleep = 40 ; // zmienna do odczekania między zmianą stanu pinu for(i=0;<=15;i++){ mcp.digitalWrite(i, LOW); delay(sleep); } for(i=0;i<=15;i++){ mcp2.digitalWrite(i, LOW); delay(sleep); } for(i=15;i>-1;i--){ mcp2.digitalWrite(i, HIGH); delay(sleep); } for(i=15;i>-1;i--){ mcp.digitalWrite(i, HIGH); delay(sleep); } }