Buenas tengo un codigo que lo que hace es contar 24 o 14 segundos de manera decreciente. con 4 botones pulsadores, 2 para ingresar valores (24, 14seg) y los otros para inicio y detención. la falla que esta teniendo posiblemente sea el antirrebote, ya que no avanza dando un pulso al inicio, solo si se tiene presionado el botón.
este es el codigo:
`
//pines botones ....
const int pin14 = 4;
const int pin24 = 3;
const int pinplay = 2;
const int pinstop = 0;
const int s0 = 13;
const int s1 = 12;
const int s2 = 11;
const int s3 = 10;
const int s4 = 9;
const int s11 = 8;
const int s12 = 7;
const int s13 = 6;
const int s14 = 5;
//estado de los pines //////////////////////////////
int p14 = LOW;
int p24 = LOW;
int pplay = LOW;
int pstop = LOW;
void setup() {
pinMode(pin14, INPUT);
pinMode(pin24, INPUT);
pinMode(pinplay, INPUT);
pinMode(pinstop, INPUT);
pinMode(s0, OUTPUT);
pinMode(s1, OUTPUT);
pinMode(s2, OUTPUT);
pinMode(s3, OUTPUT);
pinMode(s4, OUTPUT);
pinMode(s11, OUTPUT);
pinMode(s12, OUTPUT);
pinMode(s13, OUTPUT);
pinMode(s14, OUTPUT);
}
void loop() {
////////////////////////INICIA LOOP/////////////////////////////
p14 = digitalRead(pin14);
p24 = digitalRead(pin24);
pplay = digitalRead(pinplay);
if (p24 == HIGH){
while(true){
int a;
p141:
int i=24;
funcNum(24);
pplay = digitalRead(pinplay);
p14 = digitalRead(pin14);
p24 = digitalRead(pin24);
if (p24 == HIGH) goto p141 ;
if (p14 == HIGH)goto p143 ;
if (pplay == HIGH) {
for( i=24;i>-1; a){
p14 = digitalRead(pin14);
p24 = digitalRead(pin24);
funcNum(i);
pstop = digitalRead(pinstop);
if (pstop == HIGH) {
a=i;
while(true){
p14 = digitalRead(pin14);
p24 = digitalRead(pin24);
pplay = digitalRead(pinplay);
if (p24 == HIGH)goto p141;
if (pplay == HIGH){goto p142;pstop == LOW;
}
if (p14 == HIGH)goto p143;
}}
p142:
a=i--;
if (p24 == HIGH) goto p141 ;
if (p14 == HIGH)goto p143 ;
delay(990);
if (a == 0) {
digitalWrite(s0, HIGH);
delay(500);
digitalWrite(s0, LOW);
}
}
}//fin de if play
}//fin while
}//fin if 24
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
p143:
if (p14 == HIGH) {
while(true){
int m;
int n=14;
p14 = digitalRead(pin14);
p24 = digitalRead(pin24);
pplay = digitalRead(pinplay);
funcNum(14);
if (p24 == HIGH) goto p141 ;
if (p14 == HIGH)goto p143 ;
if (pplay == HIGH) {
for( n=14;n>-1; m){
funcNum(n);
p14 = digitalRead(pin14);
p24 = digitalRead(pin24);
pstop = digitalRead(pinstop);
delay(10);
if (pstop == HIGH) {
m=n;
while(true){
p14 = digitalRead(pin14);
p24 = digitalRead(pin24);
pplay = digitalRead(pinplay);
if (p24 == HIGH)goto p141;
if (pplay == HIGH){goto p144;pstop == LOW;
}
if (p14 == HIGH)goto p143;
}
}
p144:
m=n--;
if (p14 == HIGH)goto p143 ;
if (p24 == HIGH)goto p141 ;
delay(990);
if (m == 0) {
digitalWrite(s0, HIGH);
delay(500);
digitalWrite(s0, LOW);
}
}
}//if pplay
}// fin while
}// finde if
///////////////////////////////////////////////////////////
}
void funcNum(int x){
switch (x){
case 0://when count value is zero show”0” on disp
digitalWrite(s1, LOW);
digitalWrite(s2, LOW);
digitalWrite(s3, LOW);
digitalWrite(s4, LOW);
digitalWrite(s11, LOW);
digitalWrite(s12, LOW);
digitalWrite(s13, LOW);
digitalWrite(s14, LOW);
break;
case 1:// when count value is 1 show”1” on disp
digitalWrite(s1, HIGH);
digitalWrite(s2, LOW);
digitalWrite(s3, LOW);
digitalWrite(s4, LOW);
digitalWrite(s11, LOW);
digitalWrite(s12, LOW);
digitalWrite(s13, LOW);
digitalWrite(s14, LOW);
break;
case 2:// when count value is 2 show”2” on disp
digitalWrite(s1, LOW);
digitalWrite(s2, HIGH);
digitalWrite(s3, LOW);
digitalWrite(s4, LOW);
digitalWrite(s11, LOW);
digitalWrite(s12, LOW);
digitalWrite(s13, LOW);
digitalWrite(s14, LOW);
break;
case 3:// when count value is 3 show”3” on disp
digitalWrite(s1, HIGH);
digitalWrite(s2, HIGH);
digitalWrite(s3, LOW);
digitalWrite(s4, LOW);
digitalWrite(s11, LOW);
digitalWrite(s12, LOW);
digitalWrite(s13, LOW);
digitalWrite(s14, LOW);
break;
case 4:// when count value is 4 show”4” on disp
digitalWrite(s1, LOW);
digitalWrite(s2, LOW);
digitalWrite(s3, HIGH);
digitalWrite(s4, LOW);
digitalWrite(s11, LOW);
digitalWrite(s12, LOW);
digitalWrite(s13, LOW);
digitalWrite(s14, LOW);
break;
case 5:// when count value is 5 show”5” on disp
digitalWrite(s1, HIGH);
digitalWrite(s2, LOW);
digitalWrite(s3, HIGH);
digitalWrite(s4, LOW);
digitalWrite(s11, LOW);
digitalWrite(s12, LOW);
digitalWrite(s13, LOW);
digitalWrite(s14, LOW);
break;
case 6:// when count value is 5 show”5” on disp
digitalWrite(s1, LOW);
digitalWrite(s2, HIGH);
digitalWrite(s3, HIGH);
digitalWrite(s4, LOW);
digitalWrite(s11, LOW);
digitalWrite(s12, LOW);
digitalWrite(s13, LOW);
digitalWrite(s14, LOW);
break;
case 7:// when count value is 5 show”5” on disp
digitalWrite(s1, HIGH);
digitalWrite(s2, HIGH);
digitalWrite(s3, HIGH);
digitalWrite(s4, LOW);
digitalWrite(s11, LOW);
digitalWrite(s12, LOW);
digitalWrite(s13, LOW);
digitalWrite(s14, LOW);
break;
case 8:// when count value is 5 show”5” on disp
digitalWrite(s1, LOW);
digitalWrite(s2, LOW);
digitalWrite(s3, LOW);
digitalWrite(s4, HIGH);
digitalWrite(s11, LOW);
digitalWrite(s12, LOW);
digitalWrite(s13, LOW);
digitalWrite(s14, LOW);
break;
case 9:// when count value is 5 show”5” on disp
digitalWrite(s1, HIGH);
digitalWrite(s2, LOW);
digitalWrite(s3, LOW);
digitalWrite(s4, HIGH);
digitalWrite(s11, LOW);
digitalWrite(s12, LOW);
digitalWrite(s13, LOW);
digitalWrite(s14, LOW);
break;
case 10:// when count value is 5 show”5” on disp
digitalWrite(s1, LOW);
digitalWrite(s2, LOW);
digitalWrite(s3, LOW);
digitalWrite(s4, LOW);
digitalWrite(s11, HIGH);
digitalWrite(s12, LOW);
digitalWrite(s13, LOW);
digitalWrite(s14, LOW);
break;
case 11:// when count value is 5 show”5” on disp
digitalWrite(s1, HIGH);
digitalWrite(s2, LOW);
digitalWrite(s3, LOW);
digitalWrite(s4, LOW);
digitalWrite(s11, HIGH);
digitalWrite(s12, LOW);
digitalWrite(s13, LOW);
digitalWrite(s14, LOW);
break;
case 12:// when count value is 5 show”5” on disp
digitalWrite(s1, LOW);
digitalWrite(s2, HIGH);
digitalWrite(s3, LOW);
digitalWrite(s4, LOW);
digitalWrite(s11, HIGH);
digitalWrite(s12, LOW);
digitalWrite(s13, LOW);
digitalWrite(s14, LOW);
break;
case 13:// when count value is 5 show”5” on disp
digitalWrite(s1, HIGH);
digitalWrite(s2, HIGH);
digitalWrite(s3, LOW);
digitalWrite(s4, LOW);
digitalWrite(s11, HIGH);
digitalWrite(s12, LOW);
digitalWrite(s13, LOW);
digitalWrite(s14, LOW);
break;
case 14:// when count value is 5 show”5” on disp
digitalWrite(s1, LOW);
digitalWrite(s2, LOW);
digitalWrite(s3, HIGH);
digitalWrite(s4, LOW);
digitalWrite(s11, HIGH);
digitalWrite(s12, LOW);
digitalWrite(s13, LOW);
digitalWrite(s14, LOW);
break;
case 15:// when count value is 5 show”5” on disp
digitalWrite(s1, HIGH);
digitalWrite(s2, LOW);
digitalWrite(s3, HIGH);
digitalWrite(s4, LOW);
digitalWrite(s11, HIGH);
digitalWrite(s12, LOW);
digitalWrite(s13, LOW);
digitalWrite(s14, LOW);
break;
case 16:// when count value is 5 show”5” on disp
digitalWrite(s1, LOW);
digitalWrite(s2, HIGH);
digitalWrite(s3, HIGH);
digitalWrite(s4, LOW);
digitalWrite(s11, HIGH);
digitalWrite(s12, LOW);
digitalWrite(s13, LOW);
digitalWrite(s14, LOW);
break;
case 17:// when count value is 5 show”5” on disp
digitalWrite(s1, HIGH);
digitalWrite(s2, HIGH);
digitalWrite(s3, HIGH);
digitalWrite(s4, LOW);
digitalWrite(s11, HIGH);
digitalWrite(s12, LOW);
digitalWrite(s13, LOW);
digitalWrite(s14, LOW);
break;
case 18:// when count value is 5 show”5” on disp
digitalWrite(s1, LOW);
digitalWrite(s2, LOW);
digitalWrite(s3, LOW);
digitalWrite(s4, HIGH);
digitalWrite(s11, HIGH);
digitalWrite(s12, LOW);
digitalWrite(s13, LOW);
digitalWrite(s14, LOW);
break;
case 19:// when count value is 5 show”5” on disp
digitalWrite(s1, HIGH);
digitalWrite(s2, LOW);
digitalWrite(s3, LOW);
digitalWrite(s4, HIGH);
digitalWrite(s11, HIGH);
digitalWrite(s12, LOW);
digitalWrite(s13, LOW);
digitalWrite(s14, LOW);
break;
case 20:// when count value is 5 show”5” on disp
digitalWrite(s1, LOW);
digitalWrite(s2, LOW);
digitalWrite(s3, LOW);
digitalWrite(s4, LOW);
digitalWrite(s11, LOW);
digitalWrite(s12, HIGH);
digitalWrite(s13, LOW);
digitalWrite(s14, LOW);
break;
case 21:// when count value is 5 show”5” on disp
digitalWrite(s1, HIGH);
digitalWrite(s2, LOW);
digitalWrite(s3, LOW);
digitalWrite(s4, LOW);
digitalWrite(s11, LOW);
digitalWrite(s12, HIGH);
digitalWrite(s13, LOW);
digitalWrite(s14, LOW);
break;
case 22:// when count value is 5 show”5” on disp
digitalWrite(s1, LOW);
digitalWrite(s2, HIGH);
digitalWrite(s3, LOW);
digitalWrite(s4, LOW);
digitalWrite(s11, LOW);
digitalWrite(s12, HIGH);
digitalWrite(s13, LOW);
digitalWrite(s14, LOW);
break;
case 23:// when count value is 5 show”5” on disp
digitalWrite(s1, HIGH);
digitalWrite(s2, HIGH);
digitalWrite(s3, LOW);
digitalWrite(s4, LOW);
digitalWrite(s11, LOW);
digitalWrite(s12, HIGH);
digitalWrite(s13, LOW);
digitalWrite(s14, LOW);
break;
case 24:// when count value is 5 show”5” on disp
digitalWrite(s1, LOW);
digitalWrite(s2, LOW);
digitalWrite(s3, HIGH);
digitalWrite(s4, LOW);
digitalWrite(s11, LOW);
digitalWrite(s12, HIGH);
digitalWrite(s13, LOW);
digitalWrite(s14, LOW);
break;
break;
}
}
void funcNum1(int l){
switch (l){
case 0://when count value is zero show”0” on disp
digitalWrite(s1, LOW);
digitalWrite(s2, LOW);
digitalWrite(s3, LOW);
digitalWrite(s4, LOW);
digitalWrite(s11, LOW);
digitalWrite(s12, LOW);
digitalWrite(s13, LOW);
digitalWrite(s14, LOW);
break;
case 1:// when count value is 1 show”1” on disp
digitalWrite(s1, HIGH);
digitalWrite(s2, LOW);
digitalWrite(s3, LOW);
digitalWrite(s4, LOW);
digitalWrite(s11, LOW);
digitalWrite(s12, LOW);
digitalWrite(s13, LOW);
digitalWrite(s14, LOW);
break;
case 2:// when count value is 2 show”2” on disp
digitalWrite(s1, LOW);
digitalWrite(s2, HIGH);
digitalWrite(s3, LOW);
digitalWrite(s4, LOW);
digitalWrite(s11, LOW);
digitalWrite(s12, LOW);
digitalWrite(s13, LOW);
digitalWrite(s14, LOW);
break;
case 3:// when count value is 3 show”3” on disp
digitalWrite(s1, HIGH);
digitalWrite(s2, HIGH);
digitalWrite(s3, LOW);
digitalWrite(s4, LOW);
digitalWrite(s11, LOW);
digitalWrite(s12, LOW);
digitalWrite(s13, LOW);
digitalWrite(s14, LOW);
break;
case 4:// when count value is 4 show”4” on disp
digitalWrite(s1, LOW);
digitalWrite(s2, LOW);
digitalWrite(s3, HIGH);
digitalWrite(s4, LOW);
digitalWrite(s11, LOW);
digitalWrite(s12, LOW);
digitalWrite(s13, LOW);
digitalWrite(s14, LOW);
break;
case 5:// when count value is 5 show”5” on disp
digitalWrite(s1, HIGH);
digitalWrite(s2, LOW);
digitalWrite(s3, HIGH);
digitalWrite(s4, LOW);
digitalWrite(s11, LOW);
digitalWrite(s12, LOW);
digitalWrite(s13, LOW);
digitalWrite(s14, LOW);
break;
case 6:// when count value is 5 show”5” on disp
digitalWrite(s1, LOW);
digitalWrite(s2, HIGH);
digitalWrite(s3, HIGH);
digitalWrite(s4, LOW);
digitalWrite(s11, LOW);
digitalWrite(s12, LOW);
digitalWrite(s13, LOW);
digitalWrite(s14, LOW);
break;
case 7:// when count value is 5 show”5” on disp
digitalWrite(s1, HIGH);
digitalWrite(s2, HIGH);
digitalWrite(s3, HIGH);
digitalWrite(s4, LOW);
digitalWrite(s11, LOW);
digitalWrite(s12, LOW);
digitalWrite(s13, LOW);
digitalWrite(s14, LOW);
break;
case 8:// when count value is 5 show”5” on disp
digitalWrite(s1, LOW);
digitalWrite(s2, LOW);
digitalWrite(s3, LOW);
digitalWrite(s4, HIGH);
digitalWrite(s11, LOW);
digitalWrite(s12, LOW);
digitalWrite(s13, LOW);
digitalWrite(s14, LOW);
break;
case 9:// when count value is 5 show”5” on disp
digitalWrite(s1, HIGH);
digitalWrite(s2, LOW);
digitalWrite(s3, LOW);
digitalWrite(s4, HIGH);
digitalWrite(s11, LOW);
digitalWrite(s12, LOW);
digitalWrite(s13, LOW);
digitalWrite(s14, LOW);
break;
case 10:// when count value is 5 show”5” on disp
digitalWrite(s1, LOW);
digitalWrite(s2, LOW);
digitalWrite(s3, LOW);
digitalWrite(s4, LOW);
digitalWrite(s11, HIGH);
digitalWrite(s12, LOW);
digitalWrite(s13, LOW);
digitalWrite(s14, LOW);
break;
case 11:// when count value is 5 show”5” on disp
digitalWrite(s1, HIGH);
digitalWrite(s2, LOW);
digitalWrite(s3, LOW);
digitalWrite(s4, LOW);
digitalWrite(s11, HIGH);
digitalWrite(s12, LOW);
digitalWrite(s13, LOW);
digitalWrite(s14, LOW);
break;
case 12:// when count value is 5 show”5” on disp
digitalWrite(s1, LOW);
digitalWrite(s2, HIGH);
digitalWrite(s3, LOW);
digitalWrite(s4, LOW);
digitalWrite(s11, HIGH);
digitalWrite(s12, LOW);
digitalWrite(s13, LOW);
digitalWrite(s14, LOW);
break;
case 13:// when count value is 5 show”5” on disp
digitalWrite(s1, HIGH);
digitalWrite(s2, HIGH);
digitalWrite(s3, LOW);
digitalWrite(s4, LOW);
digitalWrite(s11, HIGH);
digitalWrite(s12, LOW);
digitalWrite(s13, LOW);
digitalWrite(s14, LOW);
break;
case 14:// when count value is 5 show”5” on disp
digitalWrite(s1, LOW);
digitalWrite(s2, LOW);
digitalWrite(s3, HIGH);
digitalWrite(s4, LOW);
digitalWrite(s11, HIGH);
digitalWrite(s12, LOW);
digitalWrite(s13, LOW);
digitalWrite(s14, LOW);
break;
break;
}
}
`