¿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