Con mis compañeros Valentina Tiznado y Mauricio Viveros creamos este codigo que enciende un led dependiendo del valor que arroja un fotoresitor.
int pinLedNaranjo = 7; //Indicamos el pin del led naranjo
int pinFR = A3; //Indicamos el pin del fotoresistor
int estadoFR = 0; //Indicamos le estado del fotoresistor
int minFR = 1023; //Indicamos el valor del peor minimo
int maxFR = 0; //Indicamos el valor del peor maximo
int medioFR = (minFR + maxFR)/2; //Indicamos el parametro para la luz
void setup()
{
pinMode(pinLedNaranjo, OUTPUT); //Determinamos que el led es una salida
Serial.begin(9600); //Iniciamos comunicacion serial
}
void loop()
{
estadoFR = analogRead(pinFR); //Leemos estado del fotoresistor
if(estadoFR < minFR) //Condicion para buscar el minimo valor del fotoresitor
{
minFR = estadoFR; //Actualizamos minimo valor
Serial.print("EL MINIMO ES: "); //Mostramos mensaje en el monitor
Serial.println(minFR); //Mostramos el valor del minimo valor en el monitor
}
if(estadoFR > maxFR) //Condicion para buscar el maximo valor del fotoresitor
{
maxFR = estadoFR; //Actualizamos maximo valor
Serial.print("EL MAXIMO ES: "); //Mostramos mensaje en el monitor
Serial.println(maxFR); //Mostramos el valor del maximo valor en el monitor
}
if(estadoFR > medioFR) //Condicion para determinar si se enciende o no el led
{
digitalWrite(pinLedNaranjo, HIGH); //Encendemos el led si se cumple la condicion
Serial.print(estadoFR); //Mostramos el valor del fotoresistor en el monitor
Serial.print(": "); //Mostramos mensaje en el monitor
Serial.println("LUZ"); //Mostramos mensaje en el monitor
}
else
{
digitalWrite(pinLedNaranjo, LOW); //Apagamos el led si no se cumple la condicion anterior
Serial.print(estadoFR); //Mostramos el valor del fotoresistor en el monitor
Serial.print(": "); //Mostramos mensaje en el monitor
Serial.println("OSCURIDAD"); //Mostramos mensaje en el monitor
}
}
Con mis compañeros Valentina Tiznado y Mauricio Viveros creamos este codigo para poder hacer que el led rojo solo se prenda si se apreta el clic dos veces seguidas, pero no entiendo por que no funciona el codigo. Comprobe con los valores y las condiciones se cumplen pero aun asi no lo veo reflejado en el encendido del led.
int pinLedRojo = 4; //Indicamos el pin del led rojo
int pinBoton = 3; //Indicamos el pin del boton
int estadoAntBoton = LOW; //Indicamos el estado inicial del boton
unsigned long tiempoClic = 0; //Creamos la variable para almacenar el tiempo del clic
unsigned long tiempoAct = 0; //Creamos la variable para almacenar el tiempo actual
unsigned long tiempoDelta = 1000; //Creamos la variable delta
void setup()
{
pinMode(pinBoton, INPUT); //Determinamos que el boton es una entrada
pinMode(pinLedRojo, OUTPUT); //Determinamos que el led es una salida
Serial.begin(9600); //Iniciamos comunicacion serial
}
void loop()
{
int estadoActBoton = digitalRead(pinBoton); //Leemos el estado del boton
tiempoAct = millis(); //Definimos el tiempo actual
if(estadoActBoton == HIGH && estadoAntBoton == LOW) //Creamos condicion para saber si boton fue pulsado
{
if(tiempoAct - tiempoClic < tiempoDelta) //Definimos condicion para saber si el tiempo entre un clic y otro es menor a delta
{
digitalWrite(pinLedRojo, HIGH); //Encendemos led si se cumple la condicion
}
Serial.print("EL TIEMPO ACTUAL ES: "); //Mostramos mensaje en el monitor
Serial.println(tiempoAct); //Mostramos el valor del tiempo actual en el monitor
Serial.print("EL TIEMPO DEL CLIC ES: "); //Mostramos mensaje en el monitor
Serial.println(tiempoClic); //Mostramos el valor del tiempo del clic en el monitor
Serial.print("EL TIEMPO DELTA ES: "); //Mostramos mensaje en el monitor
Serial.println(tiempoDelta); //Mostramos mensaje del tiempo delta en el monitor
}
else
{
digitalWrite(pinLedRojo, LOW); //Si no se cumple la condicion anterior se mantiene apagado el led
}
estadoAntBoton = estadoActBoton; //Actualizamos el estado del boton
if(estadoActBoton == HIGH) //Definimos condicion sobre si se pulso o no el boton
{
tiempoClic = tiempoAct; //Actualizamos el tiempo del clic al estado actual (ese momento preciso)
}
}
Aca dejo una imagen del circuito en Tinkercad