Stap 8: Eindelijk... de code
Insoladora doble cara V.1.3
escrito y dirigido por Paxpan
#include #include
#include
iniciamos el LCD
LiquidCrystal_I2C lcd(0x27,16,2);
iniciamos las constantes
Const int botonInicio = 7; definimos la entrada digitale 7 para el pulsador de inicio
Const int botonCaras = 8; definimos la entrada digitale 8 para el pulsador de numero de caras
Const int botonMinUp = 12; definimos la entrada digitale 12 para el pulsador de mas minutos
Const int botonMinDown = 11; definimos la entrada digitale 11 para el pulsador de menos minutos
Const int botonSegUp = 10; definimos la entrada digitale 10 para el pulsador de mas segundos
Const int botonSegDown = 9; definimos la entrada digitale 9 para el pulsador de menos segundos
Const int cara1led = 4; definimos la placa de luz superior
Const int cara2led = 2; definimos la placa de luz inferior
Const int ledrojo = 6; definimos el leidde de controle "geen abrir"
Const int ledverde = 5; definimos el leidde de controle "podemos abrir"
Const int LDR = A6; definimos la fotorresistencia de la entrada
iniciamos las variabelen
int estadobotonCaras = 0; variabele para el estatus del pulsador caras
int estadobotonMinUp = 0; variabele para el estatus del pulsador mas minutos
int estadobotonMinDown = 0; variabele para el estatus del pulsador menos minutos
int estadobotonSegUp = 0; variabele para el estatus del pulsador mas segundos
int estadobotonSegDown = 0; variabele para el estatus del pulsador menos segundos
int estadobotonInicio = 0; variabele para el estatus del pulsador inicio
int cuentaatras = 30; variabele para la cuenta atras de inicio de insolación
int inicio = 0; variabele para el inicio
int caras = 1; variabele para el numero de caras
int minuto = 0; variabele para el contador de minutos
int segundo = 0; variabele para el contador de segundos
lange tiempototal = 0; variabele para la suma del tiempo
int valorLDR = 0; variabele para el estatus de la fotorresistencia
int LDRComp = 512; variabele para el convertidor de la fotorresistencia
VOID Setup
{
establecemos las salidas digitales
pinMode (cara1led, OUTPUT); Placa leidde arriba
pinMode (cara2led, OUTPUT); Placa LED abajo
pinMode (ledrojo, OUTPUT); chivato leidde rojo
pinMode (ledverde, OUTPUT); chivato leidde verde
establecemos los botones como Relacionadas
pinMode (botonCaras, INPUT);
pinMode (botonMinUp, INPUT);
pinMode (botonMinDown, INPUT);
pinMode (botonSegUp, INPUT);
pinMode (botonSegDown, INPUT);
pinMode (botonInicio, INPUT);
establecemos la fotoresistencia como chivato de apertura
pinMode (LDR, INPUT);
iniciamos 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 ("LunchBox");
delay(2000);
LCD.Clear();
}
void loop
{
Aquí ponemos el tiempo y el numero de caras que queremos insolar
estadobotonInicio = digitalRead(botonInicio);
Als (estadobotonInicio == HIGH)
{inicio = 1;
}
lcd.setCursor (0, 0);
LCD.Print ("Numero caras =");
estadobotonCaras = digitalRead(botonCaras);
Als (estadobotonCaras == HIGH)
Als (caras == 1)
{caras = 2;
digitalWrite (cara1led, hoge);
digitalWrite (cara2led, hoge);
delay(500);
digitalWrite (cara1led, laag);
digitalWrite (cara2led, laag);
}
anders
{caras = 1;
digitalWrite (cara1led, hoge);
delay(500);
digitalWrite (cara1led, laag);
}
LCD.Print(Caras);
lcd.setCursor (0, 1);
LCD.Print ("Tiempo =");
estadobotonMinUp = digitalRead(botonMinUp);
Als (estadobotonMinUp == HIGH)
{
minuto ++;
}
estadobotonMinDown = digitalRead(botonMinDown);
Als (estadobotonMinDown == HIGH)
{
minuto--;
Als (minuto < 0) / / evitamos que de números negativos
{
minuto = 0;
}
}
estadobotonSegUp = digitalRead(botonSegUp);
Als (estadobotonSegUp == HIGH)
{
Segundo = segundo + 10;
Als (segundo == 60)
Segundo = 0;
}
estadobotonSegDown = digitalRead(botonSegDown);
Als (estadobotonSegDown == HIGH)
{
Segundo = segundo - 10;
Als (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
Een continuación tenemos 30 segundos para posicionar la placa y cerrar la tapa
Als (inicio == 1)
{
Inicio = 0;
LCD.Clear();
LCD.Print ("Tek la placa");
voor (cuentaatras = 30; cuentaatras! = 0; cuentaatras--)
{
lcd.setCursor (0, 1);
LCD.Print ("Inicio nl");
LCD.Print(cuentaatras);
LCD.Print ("seg");
delay(1000);
}
LCD.Clear();
minuto = minuto * 10000;
Segundo = segundo * 1000;
tiempototal = minuto + segundo;
Als (caras == 1)
{
lcd.noBacklight();
digitalWrite (cara1led, hoge);
digitalWrite (ledverde, laag);
digitalWrite (ledrojo, hoge);
delay(tiempototal);
digitalWrite (cara1led, laag);
digitalWrite (ledrojo, laag);
digitalWrite (ledverde, hoge);
terwijl (valorLDR < LDRComp)
{
valorLDR = analogRead(LDR);
}
}
Als (caras == 2)
{
lcd.noBacklight();
digitalWrite (cara1led, hoge);
digitalWrite (cara2led, hoge);
digitalWrite (ledverde, laag);
digitalWrite (ledrojo, hoge);
digitalWrite (cara1led, laag);
digitalWrite (cara2led, laag);
digitalWrite (ledrojo, laag);
digitalWrite (ledverde, hoge);
terwijl (valorLDR < LDRComp)
{
valorLDR = analogRead(LDR);
}
}
LCD.backlight();
LCD.Clear();
LCD.Print ("Retira la placa");
lcd.setCursor (0, 1);
LCD.Print ("y-revelala");
delay(10000);
REiniciamos las variabelen
Caras = 1;
tiempototal = 0;
minuto = minuto / 10000;
Segundo = segundo / 1000;
valorLDR = 0;
digitalWrite (ledrojo, laag);
digitalWrite (ledverde, laag);
}
}