#define CAYENNE_PRINT Serial // Comment this out to disable prints and save space #include #include #include "Adafruit_MCP23008.h" Adafruit_MCP23008 mcp; // Cayenne authentication token. This should be obtained from the Cayenne Dashboard. char token[] = "token"; int ledA=LOW; int ledB=LOW; int ledC=LOW; int ledD=LOW; void setup() { Serial.begin(9600); Cayenne.begin(token); mcp.begin(); mcp.pinMode(0, INPUT); //Button "A" mcp.pinMode(1, INPUT); //Button "B" mcp.pinMode(2, INPUT); //Button "C" mcp.pinMode(3, INPUT); //Button "D" mcp.pinMode(4, OUTPUT); //LED "A" mcp.pinMode(5, OUTPUT); //LED "B" mcp.pinMode(6, OUTPUT); //LED "C" mcp.pinMode(7, OUTPUT); //LED "D" } void loop() { Cayenne.run(); //LED and Button "A" if(mcp.digitalRead(0)==HIGH && ledA==LOW) { mcp.digitalWrite(4, HIGH); ledA=HIGH; Cayenne.virtualWrite(V0,HIGH); while(mcp.digitalRead(0)==HIGH) { delay(10); } } if(mcp.digitalRead(0)==HIGH && ledA==HIGH) { mcp.digitalWrite(4, LOW); ledA=LOW; Cayenne.virtualWrite(V0,LOW); while(mcp.digitalRead(0)==HIGH) { delay(10); } } //LED and Button "B" if(mcp.digitalRead(1)==HIGH && ledB==LOW) { mcp.digitalWrite(5, HIGH); ledB=HIGH; Cayenne.virtualWrite(V1,HIGH); while(mcp.digitalRead(1)==HIGH) { delay(10); } } if(mcp.digitalRead(1)==HIGH && ledB==HIGH) { mcp.digitalWrite(5, LOW); ledB=LOW; Cayenne.virtualWrite(V1,LOW); while(mcp.digitalRead(1)==HIGH) { delay(10); } } //LED and Button "C" if(mcp.digitalRead(2)==HIGH && ledC==LOW) { mcp.digitalWrite(6, HIGH); ledC=HIGH; Cayenne.virtualWrite(V2,HIGH); while(mcp.digitalRead(2)==HIGH) { delay(10); } } if(mcp.digitalRead(2)==HIGH && ledC==HIGH) { mcp.digitalWrite(6, LOW); ledC=LOW; Cayenne.virtualWrite(V2,LOW); while(mcp.digitalRead(2)==HIGH) { delay(10); } } //LED and Button "D" if(mcp.digitalRead(3)==HIGH && ledD==LOW) { mcp.digitalWrite(7, HIGH); ledD=HIGH; Cayenne.virtualWrite(V3,HIGH); while(mcp.digitalRead(3)==HIGH) { delay(10); } } if(mcp.digitalRead(3)==HIGH && ledD==HIGH) { mcp.digitalWrite(7, LOW); ledD=LOW; Cayenne.virtualWrite(V3,LOW); while(mcp.digitalRead(3)==HIGH) { delay(10); } } } CAYENNE_IN(V0){ if (getValue.asInt() == HIGH) { mcp.digitalWrite(4, HIGH); ledA=HIGH; } else{ mcp.digitalWrite(4, LOW); ledA=LOW; } } CAYENNE_IN(V1){ if (getValue.asInt() == HIGH) { mcp.digitalWrite(5, HIGH); ledB=HIGH; } else{ mcp.digitalWrite(5, LOW); ledB=LOW; } } CAYENNE_IN(V2){ if (getValue.asInt() == HIGH) { mcp.digitalWrite(6, HIGH); ledC=HIGH; } else{ mcp.digitalWrite(6, LOW); ledC=LOW; } } CAYENNE_IN(V3){ if (getValue.asInt() == HIGH) { mcp.digitalWrite(7, HIGH); ledD=HIGH; } else{ mcp.digitalWrite(7, LOW); ledD=LOW; } }