¿Qué le pasa a mi programación arduino?
Hice este reloj/termómetro en mi Arduino Uno.
Soy novato y lo hice con algo de ayuda. Pero me sale muy extraña la hora. ¿Podríais corregirme el código? 16:0903:19 * Los dos primeros dígitos pasan como segundos, los siguientes como decimales y los últimos como segundos de nuevo.
#include <LiquidCrystal.h>
LiquidCrystal lcd(7, 6, 5, 4, 3, 2);
int analogico_A0 = A0;
int pulsador_minutos = 13;
int pin_pwm = 9;
int valor_cc = 40;
int u_segundos;
int d_segundos;
int u_minutos;
int d_minutos;
int u_horas;
int d_horas;
int u_minutos_alarma;
int d_minutos_alarma;
int u_horas_alarma;
int d_horas_alarma;
int p_minutos;
float temperatura;
unsigned long timer1;
unsigned long timer2;
void setup() {
lcd.begin(16,2);
lcd.clear();
pinMode( pulsador_minutos, INPUT);
pinMode( pin_pwm, OUTPUT);
u_segundos=0;
d_segundos=0;
u_minutos=0;
d_minutos=0;
u_horas=0;
d_horas=0;
u_minutos_alarma=0;
d_minutos_alarma=0;
u_horas_alarma=0;
d_horas_alarma=0;
timer1=0;
timer2=0;
temperatura=0;
analogWrite(pin_pwm,valor_cc);
}
void loop() {
unsegundo();
puestaenhora();
contadorhoras();
lcdhoras();
if ( u_segundos == 0 ) {
//lcd.clear();
sensorlm35();
lcdtemperatura();
}
}
void unsegundo() {
timer2=(millis()/1000);
if ( timer1 != timer2 ) {
timer1=timer2;
u_segundos++;
}
}
void puestaenhora() {
p_minutos=digitalRead(pulsador_minutos);
if ( p_minutos == HIGH ){
u_minutos++;
delay(50);
}
}
void contadorhoras() {
if ( u_segundos == 10 ) {
u_segundos =0;
d_segundos++;
}
if ( ( d_segundos == 6 ) && ( u_segundos == 0 ) ) {
d_segundos =0;
u_minutos++;
}
if ( u_minutos == 10 ) {
u_minutos =0;
d_minutos++;
}
if ( ( d_minutos == 6 ) && ( u_minutos == 0 ) ) {
d_minutos =0;
u_horas++;
}
if ( u_horas == 10 ) {
u_horas =0;
d_horas++;
}
if ( (d_horas == 2) && (u_horas == 4) ) {
u_horas =0;
d_horas =0;
}
}
void lcdhoras() {
lcd.setCursor(4,0);
lcd.print(d_horas);
lcd.print(u_horas);
lcd.print(":");
lcd.print(d_minutos);
lcd.print(u_minutos);
lcd.print(":");
lcd.print(d_segundos);
lcd.print(u_segundos);
}
void sensorlm35() {
temperatura = analogRead(analogico_A0);
temperatura = temperatura * 0.488;
}
void lcdtemperatura() {
lcd.setCursor(1,1);
lcd.print(temperatura);
lcd.print(" grados C");
}
1 respuesta
Respuesta de Marc Climent
2