Hola a todos. Soy nuevo en Arduino y estoy creando un Reloj con Servo, pero tengo un problema que no puedo resolver.
Quiero implementar un botón que haga lo siguiente:
Iniciar el reloj, pausar el reloj, y si lo dejo apretado unos 3 segundos o más, reiniciar el reloj.
Intenté hacerlo lo mejor que pude, pero al presionar el botón el servo se vuelve loco. empieza a moverse como loco hasta que presiono el botón nuevamente para apgarlo.
También noté que si presiono más de 3 veces el pulsador ya no pasa nada, yo creí que solamente se usarían esos 3 valores, pero se siguen incrementando..
Edit: Agregué un LiquidCrystal para llevar el conteo de los minutos...
NO uso la función millis() porque sinceramente no le entendí jaja.
Asi que, quisiera saber alguna forma de poder hacer eso: Iniciar el reloj presionando el botón, y cuando lo presione de nuevo, se pause... si lo presiono una tercera vez, continúe y así sucesivamente.. Gracias de antemano
Les dejo el código para que por favor me hagan notar mis errores y sus posibles soluciones... gracias
#include <Servo.h>
#include <LiquidCrystal.h>
const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
Servo ServoReloj;
const int pinBoton = 13;
int PosSeg;
int ContMin = 0;
int EstadoBoton;
int EstadoBotonAnterior;
int pulsacion=0;
int Seg=0;
int periodotiempo;
unsigned long TiempoAhora = 0;
void setup()
{
pinMode(6, OUTPUT);
analogWrite(6, 127);
lcd.begin(16, 2);
Serial.begin(9600);
ServoReloj.attach(8);
pinMode(pinBoton, INPUT_PULLUP);
lcd.print("Minutos: ");
}
void loop()
{
for(PosSeg = 1; PosSeg <= 180; PosSeg +=3)
{
ServoReloj.write(PosSeg);
DEC_To_Second_Servo(PosSeg);
delay(1000);
}
ContMin++;
Serial.print("Minutos Totales: ");
Serial.println(ContMin);
lcd.setCursor(0, 1);
lcd.print(ContMin);
}
//----------------------------------------Convercion de Decimales a Segundos e imprimiendolos-----------------------------------------------//
int DEC_To_Second_Servo (int Second_Servo_Value1)
{
int result;
switch (Second_Servo_Value1)
{
case 1: Serial.println("1");break;
case 4: Serial.println("2");break;
case 7: Serial.println("3");break;
case 10: Serial.println("4");break;
case 13: Serial.println("5");break;
case 16: Serial.println("6");break;
case 19: Serial.println("7");break;
case 22: Serial.println("8");break;
case 25: Serial.println("9");break;
case 28: Serial.println("10");break;
case 31: Serial.println("11");break;
case 34: Serial.println("12");break;
case 37: Serial.println("13");break;
case 40: Serial.println("14");break;
case 43: Serial.println("15");break;
case 46: Serial.println("16");break;
case 49: Serial.println("17");break;
case 52: Serial.println("18");break;
case 55: Serial.println("19");break;
case 58: Serial.println("20");break;
case 61: Serial.println("21");break;
case 64: Serial.println("22");break;
case 67: Serial.println("23");break;
case 70: Serial.println("24");break;
case 73: Serial.println("25");break;
case 76: Serial.println("26");break;
case 79: Serial.println("27");break;
case 82: Serial.println("28");break;
case 85: Serial.println("29");break;
case 88: Serial.println("30");break;
case 91: Serial.println("31");break;
case 94: Serial.println("32");break;
case 97: Serial.println("33");break;
case 100: Serial.println("34");break;
case 103: Serial.println("35");break;
case 106: Serial.println("36");break;
case 109: Serial.println("37");break;
case 112: Serial.println("38");break;
case 115: Serial.println("39");break;
case 118: Serial.println("40");break;
case 121: Serial.println("41");break;
case 124: Serial.println("42");break;
case 127: Serial.println("43");break;
case 130: Serial.println("44");break;
case 133: Serial.println("45");break;
case 136: Serial.println("46");break;
case 139: Serial.println("47");break;
case 142: Serial.println("48");break;
case 145: Serial.println("49");break;
case 148: Serial.println("50");break;
case 151: Serial.println("51");break;
case 154: Serial.println("52");break;
case 157: Serial.println("53");break;
case 160: Serial.println("54");break;
case 163: Serial.println("55");break;
case 166: Serial.println("56");break;
case 169: Serial.println("57");break;
case 172: Serial.println("58");break;
case 175: Serial.println("59");break;
default : result = (1);
}
return result;
}