Paso 8: Por último... el código de
Insoladora doble cara V.1.3
escrito y dirigido por Paxpan
#include #include
#include
Accesories el LCD
Lcd(0x27,16,2) de LiquidCrystal_I2C;
Accesories las constantes
const int botonInicio = 7; Definimos la entrada digital 7 para el pulsador de inicio
const int botonCaras = 8; Definimos la entrada digital 8 para el pulsador de numero de caras
const int botonMinUp = 12; Definimos la entrada digital 12 para el pulsador de mas minutos
const int botonMinDown = 11; Definimos la entrada digital 11 para el pulsador de menos minutos
const int botonSegUp = 10; Definimos la entrada digital 10 para el pulsador de mas segundos
const int botonSegDown = 9; Definimos la entrada digital para 9 el pulsador de menos segundos
const int cara1led = 4; Definimos la placa superior de luz
const int cara2led = 2; Definimos la placa inferior de luz
const int ledrojo = 6; definimos el led de control "no abrir"
const int ledverde = 5; definimos el led de control "podemos abrir"
const int LDR = A6; Definimos la entrada de la fotorresistencia
variables de las Accesories
int estadobotonCaras = 0; variable para el estatus del pulsador caras
int estadobotonMinUp = 0; variable para el estatus del pulsador mas minutos
int estadobotonMinDown = 0; variable para el estatus del pulsador menos minutos
int estadobotonSegUp = 0; variable para el estatus del pulsador mas segundos
int estadobotonSegDown = 0; variable para el estatus del pulsador menos segundos
int estadobotonInicio = 0; variable para el estatus del pulsador inicio
int cuentaatras = 30; variable para la cuenta atras de inicio de insolación
int inicio = 0; variable para el inicio
int caras = 1; variable para el numero de caras
int minuto = 0; variable para el contador de minutos
segundo int = 0; variable para el contador de segundos
tiempototal largo = 0; variable para la suma del tiempo
int valorLDR = 0; variable para el estatus de la fotorresistencia
int LDRComp = 512; variable para el convertidor de la fotorresistencia
void setup()
{
establecemos las salidas digitales
pinMode (cara1led, salida); placa LED arriba
pinMode (cara2led, salida); placa LED abajo
pinMode (ledrojo, salida); Chivato led rojo
pinMode (ledverde, salida); Chivato led verde
Establecemos los botones como entradas
pinMode (botonCaras, entrada);
pinMode (botonMinUp, entrada);
pinMode (botonMinDown, entrada);
pinMode (botonSegUp, entrada);
pinMode (botonSegDown, entrada);
pinMode (botonInicio, entrada);
establecemos la fotoresistencia como chivato de apertura
pinMode (LDR, entrada);
Accesories el LCD
LCD.init();
LCD.Backlight();
escribimos el mensaje de bienvenida
LCD.Print ("Bienvenido");
Delay(1000);
lcd.setCursor (1, 0);
LCD.Print ("Insoladora");
lcd.setCursor (0, 1);
LCD.Print ("lonchera");
Delay(2000);
LCD.Clear();
}
void loop()
{
Aquí ponemos el tiempo y el numero de caras queremos insolar
estadobotonInicio = digitalRead(botonInicio);
Si (estadobotonInicio == HIGH)
{inicio = 1;
}
lcd.setCursor (0, 0);
LCD.Print ("Numero de caras =");
estadobotonCaras = digitalRead(botonCaras);
Si (estadobotonCaras == HIGH)
Si (caras == 1)
{caras = 2;
digitalWrite (cara1led, HIGH);
digitalWrite (cara2led, HIGH);
Delay(500);
digitalWrite (cara1led, bajo);
digitalWrite (cara2led, bajo);
}
otra cosa
{caras = 1;
digitalWrite (cara1led, HIGH);
Delay(500);
digitalWrite (cara1led, bajo);
}
LCD.Print(caras);
lcd.setCursor (0, 1);
LCD.Print ("Tiempo =");
estadobotonMinUp = digitalRead(botonMinUp);
Si (estadobotonMinUp == HIGH)
{
minuto ++;
}
estadobotonMinDown = digitalRead(botonMinDown);
Si (estadobotonMinDown == HIGH)
{
minuto--;
Si (minuto < 0) / / evitamos de números negativos
{
minuto = 0;
}
}
estadobotonSegUp = digitalRead(botonSegUp);
Si (estadobotonSegUp == HIGH)
{
segundo = segundo + 10;
Si (segundo == 60)
segundo = 0;
}
estadobotonSegDown = digitalRead(botonSegDown);
Si (estadobotonSegDown == HIGH)
{
segundo = segundo - 10;
Si (segundo < 0)
segundo = 0;
}
LCD.Print(minuto);
LCD.Print(":");
LCD.Print(segundo);
Delay(300);
Ya hemos acabado de poner el tiempo y el numero de caras y pulsamos inicio
A continuación tenemos 30 segundos para posicionar la placa y cerrar la tapa
Si (inicio == 1)
{
Inicio = 0;
LCD.Clear();
LCD.Print ("Prepárate la placa");
para (cuentaatras = 30; cuentaatras! = 0; cuentaatras--)
{
lcd.setCursor (0, 1);
LCD.Print ("en Inicio");
LCD.Print(CuentaAtras);
LCD.Print ("seg");
Delay(1000);
}
LCD.Clear();
minuto = minuto * 10000;
segundo = segundo * 1000;
TiempoTotal = minuto + segundo;
Si (caras == 1)
{
lcd.noBacklight();
digitalWrite (cara1led, HIGH);
digitalWrite (ledverde, LOW);
digitalWrite (ledrojo, HIGH);
Delay(TiempoTotal);
digitalWrite (cara1led, bajo);
digitalWrite (ledrojo, LOW);
digitalWrite (ledverde, HIGH);
mientras que (valorLDR < LDRComp)
{
valorLDR = analogRead(LDR);
}
}
Si (caras == 2)
{
lcd.noBacklight();
digitalWrite (cara1led, HIGH);
digitalWrite (cara2led, HIGH);
digitalWrite (ledverde, LOW);
digitalWrite (ledrojo, HIGH);
digitalWrite (cara1led, bajo);
digitalWrite (cara2led, bajo);
digitalWrite (ledrojo, LOW);
digitalWrite (ledverde, HIGH);
mientras que (valorLDR < LDRComp)
{
valorLDR = analogRead(LDR);
}
}
LCD.Backlight();
LCD.Clear();
LCD.Print ("capitana la placa");
lcd.setCursor (0, 1);
LCD.Print ("y revelala");
Delay(10000);
REiniciamos variables de las
caras = 1;
TiempoTotal = 0;
minuto = minuto / 10000;
segundo = segundo / 1000;
valorLDR = 0;
digitalWrite (ledrojo, LOW);
digitalWrite (ledverde, LOW);
}
}