#include #include #define TX 1 #define I2C_PERIFERAL_ADRESS 0x4 // adress on the I2C network #define LED_OUT A3 #define NIGHT_TRESHOLD 80 #define DIRECT_SUN_UP_TRESHOLD 1000 #define DIRECT_SUN_LOW_TRESHOLD 800 #define MIN_STATE_TIME 25000 SendOnlySoftwareSerial CustomSerial(TX); const long A = 1000; //Resistencia en oscuridad en KΩ const int B = 27; //Resistencia a la luz (10 Lux) en KΩ const int Rc = 10; //Resistencia calibracion en KΩ int value, ilum; float nextChange = 0; bool overrideON = false; bool buttonPressed = false; bool lightOn = false; void setup() { CLKPR = (1<1020&&!buttonPressed){ buttonPressed = true; // CustomSerial.println("Button pressed"); overrideON = !overrideON; nextChange = 0; } if(value<800){ buttonPressed = false; } if(!lightOn&& (ilum>NIGHT_TRESHOLD&&ilumDIRECT_SUN_UP_TRESHOLD || ilum<=NIGHT_TRESHOLD) ) { lightOn = false; CustomSerial.println('d'); } if(millis()< nextChange)return; nextChange = millis() + MIN_STATE_TIME; if(lightOn){ // Light needed, turn light ON digitalWrite(LED_OUT,HIGH); } else{ //light not needed, turn light OFF digitalWrite(LED_OUT,LOW); } } void requestEvent(){ TinyWireS.send(lowByte(ilum)); TinyWireS.send(highByte(ilum)); }