int relayPin = 8;
int pulsadorPin = 4;
unsigned long tiempopulsar = 0;
unsigned long tiemposoltar = 0;
long duracion = 0;
int rele = 0;
int estadoboton = HIGH;
int sensor = 1;
int sensoreleon = 0;
const float GAMMA = 0.7;
const float RL10 = 50;
String inputComando;
void setup() {
Serial.begin(115200);
pinMode(pulsadorPin, INPUT_PULLUP);
pinMode(relayPin, OUTPUT);
for (int i = 0; i < 25; i++) {
Serial.println("");
}
Serial.println("Teclea el comando ON/OFF para encender/apagar el relé");
Serial.println("relé OFF");
}
void loop() {
if (Serial.available() > 0) {
inputComando = Serial.readString();
inputComando.trim();
if (inputComando == "ON") {
if (rele==0) {
rele = 1;
digitalWrite(relayPin, rele);
Serial.println("relé ON");
}
}
if (inputComando == "OFF") {
if (rele==1) {
rele = 0;
digitalWrite(relayPin, rele);
Serial.println("relé OFF");
}
}
}
int analogValue = analogRead(A0);
if ((analogValue >= 850) && (sensor == 1)) { //más o menos <= 10 lux
sensoreleon = 1;
if (rele==0) {
rele = 1;
digitalWrite(relayPin, rele);
Serial.println("relé ON");
}
}
if ((analogValue <600) && (sensoreleon == 1)) { //más o menos > 60 lux
sensor = 1;
sensoreleon = 0;
if (rele==1) {
rele = 0;
digitalWrite(relayPin, rele);
}
Serial.println("relé OFF");
}
int value = digitalRead((pulsadorPin));
if (estadoboton != value) {
estadoboton = value;
if (value == HIGH) {
tiemposoltar = millis();
duracion = tiemposoltar - tiempopulsar;
if (duracion <= 1000) {
if (sensoreleon == 1) {
sensor = 0;
}
if (rele == 1) {
rele = 0;
}
else {
rele = 1;
}
digitalWrite(relayPin, rele);
if (rele == 0) {
Serial.println("relé OFF");
}
else {
Serial.println("relé ON");
}
}
}
if (value == LOW) {
tiempopulsar = millis();
}
}
}