#include "Homie.h" int red = 0; int blue = 0; unsigned long lastThingDone = 0; int lastOne = 0; //0 nobody; 1 blue; 2 red; HomieNode nodeGoal("goals", "goals"); void homieLoop(){ if(digitalRead(12) == LOW && digitalRead(13) == LOW){ digitalWrite(14, LOW); } if(digitalRead(12) == LOW){ blue = 0; red = 0; lastOne = 0; Homie.setNodeProperty(nodeGoal, "reset", "true", false); lastThingDone = millis(); delay(500); } else if(digitalRead(13) == LOW){ if(lastOne == 1){ --blue; lastOne = 0; Homie.setNodeProperty(nodeGoal, "blue", String(blue), false); delay(500); } else if(lastOne == 2){ --red; lastOne = 0; Homie.setNodeProperty(nodeGoal, "red", String(red), false); delay(500); } lastThingDone = millis(); } else if(digitalRead(5) == HIGH){ ++red; Homie.setNodeProperty(nodeGoal, "red", String(red), false); lastOne = 2; lastThingDone = millis(); delay(500); } else if(digitalRead(4) == HIGH){ ++blue; Homie.setNodeProperty(nodeGoal, "blue", String(blue), false); lastOne = 1; lastThingDone = millis(); delay(500); } else if((millis() - lastThingDone) >= 300000){ digitalWrite(14, LOW); } } void setup(){ pinMode(5, INPUT_PULLUP); pinMode(4, INPUT_PULLUP); pinMode(14, OUTPUT); pinMode(12, INPUT_PULLUP); pinMode(13, INPUT_PULLUP); digitalWrite(14, HIGH); Homie.registerNode(nodeGoal); Homie.setFirmware("Table Soccer GoalCounter", "1.0"); Homie.setLoopFunction(homieLoop); Homie.setup(); } void loop() { Homie.loop(); }