PCB på en låda (8 / 8 steg)
Steg 8: Slutligen... koden
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 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 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 ledde de kontroll "ingen avkorta"
CONST int ledverde = 5; definimos el ledde de kontroll "podemos avkorta"
CONST int LDR = A6; definimos la entrada de la fotorresistencia
iniciamos las variabler
int estadobotonCaras = 0; variabel para el estatus del pulsador caras
int estadobotonMinUp = 0; variabel para el estatus del pulsador mas minutos
int estadobotonMinDown = 0; variabel para el estatus del pulsador menos minutos
int estadobotonSegUp = 0; variabel para el estatus del pulsador mas segundos
int estadobotonSegDown = 0; variabel para el estatus del pulsador menos segundos
int estadobotonInicio = 0; variabel para el estatus del pulsador inicio
int cuentaatras = 30. variabel para la cuenta atras de inicio de insolación
int inicio = 0; variabel para el inicio
int caras = 1; variabel para el numero de caras
int minuto = 0; variabel para el contador de minutos
int segundo = 0; variabel para el contador de segundos
lång tiempototal = 0; variabel para la suma del tiempo
int valorLDR = 0; variabel para el estatus de la fotorresistencia
int LDRComp = 512; variabel para el convertidor de la fotorresistencia
void setup()
{
establecemos las salidas digitales
pinMode (cara1led, produktionen); Placa ledde arriba
pinMode (cara2led, produktionen); Placa LED abajo
pinMode (ledrojo, produktionen); chivato ledde rojo
pinMode (ledverde, produktionen); chivato ledde verde
establecemos los botones como inlägg
pinMode (botonCaras, ingång);
pinMode (botonMinUp, ingång);
pinMode (botonMinDown, ingång);
pinMode (botonSegUp, ingång);
pinMode (botonSegDown, ingång);
pinMode (botonInicio, ingång);
establecemos la fotoresistencia como chivato de apertura
pinMode (LDR, indata);
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 ("matlåda");
Delay(2000);
LCD.Clear();
}
void loop()
{
Aquí ponemos el tiempo y el numero de caras que queremos insolar
estadobotonInicio = digitalRead(botonInicio);
om (estadobotonInicio == hög)
{inicio = 1;
}
lcd.setCursor (0, 0);
LCD.Print ("Numero caras =");
estadobotonCaras = digitalRead(botonCaras);
om (estadobotonCaras == hög)
om (caras == 1)
{caras = 2;
digitalWrite (cara1led, hög);
digitalWrite (cara2led, hög);
Delay(500);
digitalWrite (cara1led, låg);
digitalWrite (cara2led, låg);
}
annat
{caras = 1;
digitalWrite (cara1led, hög);
Delay(500);
digitalWrite (cara1led, låg);
}
LCD.Print(Caras);
lcd.setCursor (0, 1);
LCD.Print ("Tiempo =");
estadobotonMinUp = digitalRead(botonMinUp);
om (estadobotonMinUp == hög)
{
minuto ++;
}
estadobotonMinDown = digitalRead(botonMinDown);
om (estadobotonMinDown == hög)
{
minuto--;
om (minuto < 0) / / evitamos que de números negativos
{
minuto = 0;
}
}
estadobotonSegUp = digitalRead(botonSegUp);
om (estadobotonSegUp == hög)
{
Segundo = segundo + 10.
om (segundo == 60)
Segundo = 0;
}
estadobotonSegDown = digitalRead(botonSegDown);
om (estadobotonSegDown == hög)
{
Segundo = segundo - 10.
om (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
En continuación tenemos 30 segundos para posicionar la placa y cerrar la tapa
om (inicio == 1)
{
Inicio = 0;
LCD.Clear();
LCD.Print ("kuggprofilerna la Plaça");
för (cuentaatras = 30; cuentaatras! = 0; cuentaatras--)
{
lcd.setCursor (0, 1);
LCD.Print ("Inicio sv");
LCD.Print(cuentaatras);
LCD.Print ("seg");
Delay(1000);
}
LCD.Clear();
minuto = minuto * 10000;
Segundo = segundo * 1000;
tiempototal = minuto + segundo;
om (caras == 1)
{
lcd.noBacklight();
digitalWrite (cara1led, hög);
digitalWrite (ledverde, låg);
digitalWrite (ledrojo, hög);
Delay(tiempototal);
digitalWrite (cara1led, låg);
digitalWrite (ledrojo, låg);
digitalWrite (ledverde, hög);
medan (valorLDR < LDRComp)
{
valorLDR = analogRead(LDR);
}
}
om (caras == 2)
{
lcd.noBacklight();
digitalWrite (cara1led, hög);
digitalWrite (cara2led, hög);
digitalWrite (ledverde, låg);
digitalWrite (ledrojo, hög);
digitalWrite (cara1led, låg);
digitalWrite (cara2led, låg);
digitalWrite (ledrojo, låg);
digitalWrite (ledverde, hög);
medan (valorLDR < LDRComp)
{
valorLDR = analogRead(LDR);
}
}
LCD.backlight();
LCD.Clear();
LCD.Print ("Retira la Plaça");
lcd.setCursor (0, 1);
LCD.Print ("y revelala");
Delay(10000);
REiniciamos las variabler
Caras = 1;
tiempototal = 0;
minuto = minuto / 10000;
Segundo = segundo / 1000;
valorLDR = 0;
digitalWrite (ledrojo, låg);
digitalWrite (ledverde, låg);
}
}