Étape 8: Enfin... le code
Insoladora doble cara V.1.3
escrito y dirigido por Paxpan
#include #include
#include
el Iniciamos LCD
LiquidCrystal_I2C lcd(0x27,16,2) ;
Iniciamos las constantes
const int botonInicio = 7 ; Definimos la entrada numérique 7 para el funzionamento de inicio
const int botonCaras = 8 ; Definimos la entrada numérique 8 para el funzionamento de numero de caras
const int botonMinUp = 12 ; Definimos la entrada numérique 12 para el funzionamento de mas minutos
const int botonMinDown = 11 ; Definimos la entrada numérique 11 para el funzionamento de menos minutos
const int botonSegUp = 10 ; Definimos la entrada numérique 10 para el funzionamento de mas segundos
const int botonSegDown = 9 ; Definimos la entrada numérique 9 para el funzionamento de menos segundos
const int cara1led = 4 ; Definimos la placa supérieure de luz
const int cara2led = 2 ; Definimos la placa inférieure de luz
const int ledrojo = 6 ; Definimos el ne conduit de contrôle « aucun abrir »
const int ledverde = 5 ; Definimos el conduit de contrôle « podemos abrir »
const int LDR = A6 ; Definimos la entrada de la fotorresistencia
variables de las Iniciamos
int estadobotonCaras = 0 ; variable para el estatus del funzionamento caras
int estadobotonMinUp = 0 ; variable para el estatus del funzionamento mas minutos
int estadobotonMinDown = 0 ; variable para el estatus del funzionamento menos minutos
int estadobotonSegUp = 0 ; variable para el estatus del funzionamento mas segundos
int estadobotonSegDown = 0 ; variable para el estatus del funzionamento menos segundos
int estadobotonInicio = 0 ; variable para el estatus del funzionamento inicio
int cuentaatras = 30 ; variable para la cuenta atras de inicio de insolación
inicio d’int = 0 ; variable de para el inicio
int caras = 1 ; variable para el numero de caras
minuto int = 0 ; variable para el contador de minutos
segundo int = 0 ; variable para el contador de segundos
long tiempototal = 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, sortie) ; Placa a conduit arriba
pinMode (cara2led, sortie) ; abajo Placa LED
pinMode (ledrojo, sortie) ; chivato conduit rojo
pinMode (ledverde, sortie) ; chivato conduit verde
establecemos los botones como entradas
pinMode (botonCaras, entrée) ;
pinMode (botonMinUp, entrée) ;
pinMode (botonMinDown, entrée) ;
pinMode (botonSegUp, entrée) ;
pinMode (botonSegDown, entrée) ;
pinMode (botonInicio, entrée) ;
establecemos la fotoresistencia como chivato de apertura
pinMode (entrée, LDR) ;
el Iniciamos 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) ;
Si (estadobotonInicio == HIGH)
{inicio = 1 ;
}
lcd.setCursor (0, 0) ;
LCD.Print ("Numero caras =") ;
estadobotonCaras = digitalRead(botonCaras) ;
Si (estadobotonCaras == HIGH)
Si (caras == 1)
{caras = 2 ;
digitalWrite (cara1led, HIGH) ;
digitalWrite (cara2led, HIGH) ;
Delay(500) ;
digitalWrite (cara1led, basse) ;
digitalWrite (cara2led, basse) ;
}
d’autre
{caras = 1 ;
digitalWrite (cara1led, HIGH) ;
Delay(500) ;
digitalWrite (cara1led, basse) ;
}
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 que 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 (« élaboration de la placa ») ;
pour (cuentaatras = 30 ; cuentaatras! = 0; cuentaatras--)
{
lcd.setCursor (0, 1) ;
LCD.Print ("Inicio fr") ;
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, basse) ;
digitalWrite (ledrojo, HIGH) ;
Delay(tiempototal) ;
digitalWrite (cara1led, basse) ;
digitalWrite (ledrojo, basse) ;
digitalWrite (ledverde, HIGH) ;
tandis que (valorLDR < LDRComp)
{
valorLDR = analogRead(LDR) ;
}
}
Si (caras == 2)
{
lcd.noBacklight() ;
digitalWrite (cara1led, HIGH) ;
digitalWrite (cara2led, HIGH) ;
digitalWrite (ledverde, basse) ;
digitalWrite (ledrojo, HIGH) ;
digitalWrite (cara1led, basse) ;
digitalWrite (cara2led, basse) ;
digitalWrite (ledrojo, basse) ;
digitalWrite (ledverde, HIGH) ;
tandis que (valorLDR < LDRComp)
{
valorLDR = analogRead(LDR) ;
}
}
LCD.backlight() ;
LCD.Clear() ;
LCD.Print (« Retira la placa ») ;
lcd.setCursor (0, 1) ;
LCD.Print ("y revelala") ;
Delay(10000) ;
Variables de las REiniciamos
Caras = 1 ;
tiempototal = 0 ;
MINUTO = minuto / 10000 ;
Segundo = segundo / 1000 ;
valorLDR = 0 ;
digitalWrite (ledrojo, basse) ;
digitalWrite (ledverde, basse) ;
}
}