-
Notifications
You must be signed in to change notification settings - Fork 0
/
Arduino-Reloj-BotonesServosLcd.txt
110 lines (85 loc) · 2.33 KB
/
Arduino-Reloj-BotonesServosLcd.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
//LiquidCrystal(rs, enable, d4, d5, d6, d7)
#include <LiquidCrystal.h>
#include <Servo.h>
LiquidCrystal pantalla(12,13,2,3,4,5);
Servo servoMotor1;
Servo servoMotor2;
Servo servoMotor3;
void setup()
{
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(12, OUTPUT);
pinMode(13, OUTPUT);
pinMode(6, INPUT);
pinMode(7, INPUT);
pinMode(8, INPUT);
pantalla.begin(16, 2);
pantalla.setCursor(3,1);
pantalla.print("00:00:00");
servoMotor1.attach(9);
servoMotor2.attach(10);
servoMotor3.attach(11);
}
long currentMillis = 0;
long previousMillis = 0;
int pulsadorAntes1=LOW;
int pulsadorAntes2=LOW;
int pulsadorAntes3=LOW;
int horas = 0;
int minutos=0;
int segundos=0;
void loop()
{
//--- Tomo tiempo inicial
currentMillis = millis();
int pulsador1 = digitalRead(6);
int pulsador2 = digitalRead(7);
int pulsador3 = digitalRead(8);
servoMotor1.write(horas * 7.5);
servoMotor2.write(minutos * 3);
servoMotor3.write(segundos * 3);
//----- Horas ------
if (pulsador1 == HIGH && pulsadorAntes1 == LOW){
horas = limpiarContador(horas,4,3,24);
}
pulsadorAntes1 = pulsador1;
//----- Minutos ------
if ( pulsador2==HIGH && pulsadorAntes2==LOW){
minutos = limpiarContador(minutos,7,6,60);
}
pulsadorAntes2=pulsador2;
//------ Segundos -------
///--- Calculo si paso un segundo ----
if ( (currentMillis - 1000 > previousMillis) || (pulsador3==HIGH && pulsadorAntes3==LOW) ){
segundos = limpiarContador(segundos,10,9,60);
if(segundos == 0){
//Actualizar minuto
minutos = limpiarContador(minutos,7,6,60);
if(minutos == 0){
horas = limpiarContador(horas,4,3,24);
}
}
//--- Actualizacion de tiempo
previousMillis = currentMillis;
}
pulsadorAntes3 = pulsador3;
delay(50);
}
int limpiarContador(int contador, int posicion1, int posicion2, int maximo){
contador++; //aumenta el contador
if(contador <= 9){
pantalla.setCursor(posicion1,1);
}else{
pantalla.setCursor(posicion2,1);
}
if(contador >= maximo){
pantalla.setCursor(posicion2,1);
contador = 0;
pantalla.print(contador);
}
pantalla.print(contador); //se imprime
return contador;
}