This forum uses cookies
This forum makes use of cookies to store your login information if you are registered, and your last visit if you are not. Cookies are small text documents stored on your computer; the cookies set by this forum can only be used on this website and pose no security risk. Cookies on this forum also track the specific topics you have read and when you last read them. Please confirm whether you accept or reject these cookies being set.

A cookie will be stored in your browser regardless of choice to prevent you being asked this question again. You will be able to change your cookie settings at any time using the link in the footer.

  • 1 voto(s) - 2 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Contador de créditos
#41
Nada me saltan errores ._.

Añado:

Código:
const int BtnDesbloqueo = 12; // boton de desbloqueo conectado al pin 12
int estadoBtnDesbloqueo;
int estadoBtnDesbloqueoAnterior;

El codigo antes citado y nada errores por todos lados cambio una cosa sale otra XD sobre todo los dicosos corchetes ... te paso el código original sin modificar.

Código:
/* se declaran las contantes para identificar cada led*/
                    const int r = 11;
                    const int a = 2;
                    const int b = 3;
                    const int c = 4;
                    const int d = 5;
                    const int e = 6;
                    const int f = 7;
                    const int g = 8;
                    const int BtnIncremento = 13; // boton de incremento conectadoa al pin 13
                    const int BtnDecremento = 10; // boton de decremento conectadoa al pin 10
                    const int BtnBloqueo = 9; // boton de bloqueo conectado al pin 9

                    const int tiempoAntirebote =10;
                    int cuenta =0;   //lleva la cuenta
                    int estadoBtnIncremento;
                    int estadoBtnIncrementoAnterior;
                    int estadoBtnDecremento;
                    int estadoBtnDecrementoAnterior;
                    int estadoBtnBloqueo;
                    int estadoBtnBloqueoAnterior;  
                    boolean bloqueo = false; // De inicio está desbloqueado, también se podría hacer con el estado

                    boolean antirebote  (int pin ) {
                      int  contador =0;
                      boolean estado;               // guarda el estado del boton
                      boolean estadoAnterior;      // guarda el ultimo estado del boton

                      do {
                        estado = digitalRead (pin);
                        if (estado != estadoAnterior ){   // comparamos el estado actual
                          contador =0;                    // reiniciamos el contador
                          estadoAnterior= estado;
                        }
                        else{
                          contador = contador +1;          // aumentamos el contador en 1
                        }
                        delay (1);
                      }
                      while (contador < tiempoAntirebote);
                      return estado;
                    }
                    /* Metodo para elegir que numero mostrar en el display*/
                    void actualizarNumero(){
                      switch (cuenta) {
                      case 0:
                        /*Bloque para mostrar un 0*/
                        digitalWrite(a, HIGH);
                        digitalWrite(b, HIGH);
                        digitalWrite(c, HIGH);
                        digitalWrite(d, HIGH);
                        digitalWrite(e, HIGH);
                        digitalWrite(f, HIGH);
                        digitalWrite(g, LOW);
                        digitalWrite(r, HIGH);
                        break;
                      case 1:
                        /*Bloque para mostrar un 1*/
                        digitalWrite(a, LOW);
                        digitalWrite(b, HIGH);
                        digitalWrite(c, HIGH);
                        digitalWrite(d, LOW);
                        digitalWrite(e, LOW);
                        digitalWrite(f, LOW);
                        digitalWrite(g, LOW);
                        digitalWrite(r, LOW);
                        break;
                      case 2:
                        /*Bloque para mostrar un 2*/
                        digitalWrite(a, HIGH);
                        digitalWrite(b, HIGH);
                        digitalWrite(c, LOW);
                        digitalWrite(d, HIGH);
                        digitalWrite(e, HIGH);
                        digitalWrite(f, LOW);
                        digitalWrite(g, HIGH);
                        digitalWrite(r, LOW);
                        break;
                      case 3:
                        /*Bloque para mostrar un 3*/
                        digitalWrite(a, HIGH);
                        digitalWrite(b, HIGH);
                        digitalWrite(c, HIGH);
                        digitalWrite(d, HIGH);
                        digitalWrite(e, LOW);
                        digitalWrite(f, LOW);
                        digitalWrite(g, HIGH);
                        digitalWrite(r, LOW);
                        break;
                      case 4:
                        /*Bloque para mostrar un 4*/
                        digitalWrite(a, LOW);
                        digitalWrite(b, HIGH);
                        digitalWrite(c, HIGH);
                        digitalWrite(d, LOW);
                        digitalWrite(e, LOW);
                        digitalWrite(f, HIGH);
                        digitalWrite(g, HIGH);
                        digitalWrite(r, LOW);
                        break;
                      case 5:
                        /*Bloque para mostrar un 5*/
                        digitalWrite(a, HIGH);
                        digitalWrite(b, LOW);
                        digitalWrite(c, HIGH);
                        digitalWrite(d, HIGH);
                        digitalWrite(e, LOW);
                        digitalWrite(f, HIGH);
                        digitalWrite(g, HIGH);
                        digitalWrite(r, LOW);
                        break;
                      case 6:
                        /*Bloque para mostrar un 6*/
                        digitalWrite(a, HIGH);
                        digitalWrite(b, LOW);
                        digitalWrite(c, HIGH);
                        digitalWrite(d, HIGH);
                        digitalWrite(e, HIGH);
                        digitalWrite(f, HIGH);
                        digitalWrite(g, HIGH);
                        digitalWrite(r, LOW);
                        break;
                      case 7:
                        /*Bloque para mostrar un 7*/
                        digitalWrite(a, HIGH);
                        digitalWrite(b, HIGH);
                        digitalWrite(c, HIGH);
                        digitalWrite(d, LOW);
                        digitalWrite(e, LOW);
                        digitalWrite(f, LOW);
                        digitalWrite(g, LOW);
                        digitalWrite(r, LOW);
                        break;
                      case 8:
                        /*Bloque para mostrar un 8*/
                        digitalWrite(a, HIGH);
                        digitalWrite(b, HIGH);
                        digitalWrite(c, HIGH);
                        digitalWrite(d, HIGH);
                        digitalWrite(e, HIGH);
                        digitalWrite(f, HIGH);
                        digitalWrite(g, HIGH);
                        digitalWrite(r, LOW);
                        break;
                      case 9:
                        /*Bloque para mostrar un 9*/
                        digitalWrite(a, HIGH);
                        digitalWrite(b, HIGH);
                        digitalWrite(c, HIGH);
                        digitalWrite(d, HIGH);
                        digitalWrite(e, LOW);
                        digitalWrite(f, HIGH);
                        digitalWrite(g, HIGH);
                        digitalWrite(r, LOW);

                      }
                    }

                    void setup(){
                      /*Declaramos los segmetos del display como salidas*/
                      pinMode(a, OUTPUT);
                      pinMode(b, OUTPUT);
                      pinMode(c, OUTPUT);
                      pinMode(d, OUTPUT);
                      pinMode(e, OUTPUT);
                      pinMode(f, OUTPUT);
                      pinMode(g, OUTPUT);
                      pinMode(r, OUTPUT);
                      /*Declaramos los botones como entradas*/
                      pinMode(BtnIncremento, INPUT);
                      pinMode(BtnDecremento, INPUT);
                      pinMode(BtnBloqueo, INPUT);
                      Serial.begin(9600);
                    }

                    void loop() {
                      estadoBtnBloqueo = digitalRead(BtnBloqueo);
                      Serial.println(estadoBtnBloqueo);
                  
                      if (estadoBtnBloqueo  != estadoBtnBloqueoAnterior) {     // si hay cambio con respeto al estado
                        if (antirebote (BtnBloqueo) == HIGH){         //checamos  si esta preionado y si lo esta
                          bloqueo = !bloqueo;
                          Serial.println("Entra en bloqueo");
                        }
                      }
                      estadoBtnBloqueoAnterior = estadoBtnBloqueo;              // guardamos el estado del boton

                      estadoBtnIncremento = digitalRead(BtnIncremento);
                      Serial.println(estadoBtnIncremento);
                      if (estadoBtnIncremento  != estadoBtnIncrementoAnterior) {     // si hay cambio con respeto al estado
                        if (antirebote (BtnIncremento)){         //checamos  si esta preionado y si lo esta
                          cuenta = cuenta + 4;                                       //aumentamos la cuenta
                          if (cuenta > 9){                
                            cuenta = 9;
                          }
                        }
                      }
                      estadoBtnIncrementoAnterior = estadoBtnIncremento;              // guardamos el estado del boton

                      if (!bloqueo) { // Si está bloqueado, lo ignoramos, y en otro caso, lo leemos
                          estadoBtnDecremento = digitalRead(BtnDecremento);      //leemos el estado del boton
                          Serial.println(estadoBtnDecremento);
                          if (estadoBtnDecremento  != estadoBtnDecrementoAnterior) {     // si hay cambio con respeto al estado anterior
                            if (antirebote (BtnDecremento)){   //si el boton esta presionado disminuimos la cuenta
                              cuenta--;                            
                              if (cuenta<0){

                                cuenta = 0;
                              }
                            }
                          }
                          estadoBtnDecrementoAnterior = estadoBtnDecremento;  //guardamos el estado del boton
                      }

                      actualizarNumero();   //desplegamos la cuenta en el display
                    }
  Responder
#42
Los errores te dicen qué falla. Las llaves es típico, y muchas veces te dejas la vista buscando.

Estoy desde el móvil, pero si quieres aprender, lo mejor es que te pelees con ello. Ya me hubiera gustado a mi tener a alguien que me enseñase en lugar de tirarme horas y horas en busca de fallos y haciendo pruebas :elrisas:
  Responder
#43
Eso estoy haciendo buscando los fallos y haciendo pruebas XD al menos lo que tengo que añadirle esta bien no?
  Responder
#44
2 variables de estado, la del pin del arduino (acuérdate de hacerlo de indicar el pin como entrada en el setup), y luego en el loop principal, meterle un bloque como lo que has puesto.
  Responder
#45
Mola Ahora me pongo.
  Responder
#46
Ya por lo menos no me salen los errores y puedo compilar y cargar pero estoy buscando otro fallo XD una vez que bloqueo no se puede desbloquear, estoy mirando a ver si encuentro algún fallo en lo nuevo que le añadí al código.

Código:
/* se declaran las contantes para identificar cada led*/
                    const int r = 11;
                    const int a = 2;
                    const int b = 3;
                    const int c = 4;
                    const int d = 5;
                    const int e = 6;
                    const int f = 7;
                    const int g = 8;
                    const int BtnIncremento = 13; // boton de incremento conectadoa al pin 13
                    const int BtnDecremento = 10; // boton de decremento conectadoa al pin 10
                    const int BtnBloqueo = 9; // boton de bloqueo conectado al pin 9
                    const int BtnDesbloqueo = 12; // boton de desbloqueo conectado al pin 12

                    const int tiempoAntirebote =10;
                    int cuenta =0;   //lleva la cuenta
                    int estadoBtnIncremento;
                    int estadoBtnIncrementoAnterior;
                    int estadoBtnDecremento;
                    int estadoBtnDecrementoAnterior;
                    int estadoBtnBloqueo;
                    int estadoBtnBloqueoAnterior;  
                    int estadoBtnDesbloqueo;
                    int estadoBtnDesbloqueoAnterior;
                    boolean bloqueo = false; // De inicio está desbloqueado, también se podría hacer con el estado

                    boolean antirebote  (int pin ) {
                      int  contador =0;
                      boolean estado;               // guarda el estado del boton
                      boolean estadoAnterior;      // guarda el ultimo estado del boton

                      do {
                        estado = digitalRead (pin);
                        if (estado != estadoAnterior ){   // comparamos el estado actual
                          contador =0;                    // reiniciamos el contador
                          estadoAnterior= estado;
                        }
                        else{
                          contador = contador +1;          // aumentamos el contador en 1
                        }
                        delay (1);
                      }
                      while (contador < tiempoAntirebote);
                      return estado;
                    }
                    /* Metodo para elegir que numero mostrar en el display*/
                    void actualizarNumero(){
                      switch (cuenta) {
                      case 0:
                        /*Bloque para mostrar un 0*/
                        digitalWrite(a, HIGH);
                        digitalWrite(b, HIGH);
                        digitalWrite(c, HIGH);
                        digitalWrite(d, HIGH);
                        digitalWrite(e, HIGH);
                        digitalWrite(f, HIGH);
                        digitalWrite(g, LOW);
                        digitalWrite(r, HIGH);
                        break;
                      case 1:
                        /*Bloque para mostrar un 1*/
                        digitalWrite(a, LOW);
                        digitalWrite(b, HIGH);
                        digitalWrite(c, HIGH);
                        digitalWrite(d, LOW);
                        digitalWrite(e, LOW);
                        digitalWrite(f, LOW);
                        digitalWrite(g, LOW);
                        digitalWrite(r, LOW);
                        break;
                      case 2:
                        /*Bloque para mostrar un 2*/
                        digitalWrite(a, HIGH);
                        digitalWrite(b, HIGH);
                        digitalWrite(c, LOW);
                        digitalWrite(d, HIGH);
                        digitalWrite(e, HIGH);
                        digitalWrite(f, LOW);
                        digitalWrite(g, HIGH);
                        digitalWrite(r, LOW);
                        break;
                      case 3:
                        /*Bloque para mostrar un 3*/
                        digitalWrite(a, HIGH);
                        digitalWrite(b, HIGH);
                        digitalWrite(c, HIGH);
                        digitalWrite(d, HIGH);
                        digitalWrite(e, LOW);
                        digitalWrite(f, LOW);
                        digitalWrite(g, HIGH);
                        digitalWrite(r, LOW);
                        break;
                      case 4:
                        /*Bloque para mostrar un 4*/
                        digitalWrite(a, LOW);
                        digitalWrite(b, HIGH);
                        digitalWrite(c, HIGH);
                        digitalWrite(d, LOW);
                        digitalWrite(e, LOW);
                        digitalWrite(f, HIGH);
                        digitalWrite(g, HIGH);
                        digitalWrite(r, LOW);
                        break;
                      case 5:
                        /*Bloque para mostrar un 5*/
                        digitalWrite(a, HIGH);
                        digitalWrite(b, LOW);
                        digitalWrite(c, HIGH);
                        digitalWrite(d, HIGH);
                        digitalWrite(e, LOW);
                        digitalWrite(f, HIGH);
                        digitalWrite(g, HIGH);
                        digitalWrite(r, LOW);
                        break;
                      case 6:
                        /*Bloque para mostrar un 6*/
                        digitalWrite(a, HIGH);
                        digitalWrite(b, LOW);
                        digitalWrite(c, HIGH);
                        digitalWrite(d, HIGH);
                        digitalWrite(e, HIGH);
                        digitalWrite(f, HIGH);
                        digitalWrite(g, HIGH);
                        digitalWrite(r, LOW);
                        break;
                      case 7:
                        /*Bloque para mostrar un 7*/
                        digitalWrite(a, HIGH);
                        digitalWrite(b, HIGH);
                        digitalWrite(c, HIGH);
                        digitalWrite(d, LOW);
                        digitalWrite(e, LOW);
                        digitalWrite(f, LOW);
                        digitalWrite(g, LOW);
                        digitalWrite(r, LOW);
                        break;
                      case 8:
                        /*Bloque para mostrar un 8*/
                        digitalWrite(a, HIGH);
                        digitalWrite(b, HIGH);
                        digitalWrite(c, HIGH);
                        digitalWrite(d, HIGH);
                        digitalWrite(e, HIGH);
                        digitalWrite(f, HIGH);
                        digitalWrite(g, HIGH);
                        digitalWrite(r, LOW);
                        break;
                      case 9:
                        /*Bloque para mostrar un 9*/
                        digitalWrite(a, HIGH);
                        digitalWrite(b, HIGH);
                        digitalWrite(c, HIGH);
                        digitalWrite(d, HIGH);
                        digitalWrite(e, LOW);
                        digitalWrite(f, HIGH);
                        digitalWrite(g, HIGH);
                        digitalWrite(r, LOW);

                      }
                    }

                    void setup(){
                      /*Declaramos los segmetos del display como salidas*/
                      pinMode(a, OUTPUT);
                      pinMode(b, OUTPUT);
                      pinMode(c, OUTPUT);
                      pinMode(d, OUTPUT);
                      pinMode(e, OUTPUT);
                      pinMode(f, OUTPUT);
                      pinMode(g, OUTPUT);
                      pinMode(r, OUTPUT);
                      /*Declaramos los botones como entradas*/
                      pinMode(BtnIncremento, INPUT);
                      pinMode(BtnDecremento, INPUT);
                      pinMode(BtnBloqueo, INPUT);
                      pinMode(BtnDesbloqueo, INPUT);
                      Serial.begin(9600);
                    }

                    void loop() {
                      estadoBtnBloqueo = digitalRead(BtnBloqueo);
                      Serial.println(estadoBtnBloqueo);
                  
                      if (estadoBtnBloqueo  != estadoBtnBloqueoAnterior) {     // si hay cambio con respeto al estado
                        if (antirebote (BtnBloqueo) == HIGH){         //checamos  si esta preionado y si lo esta
                          bloqueo = true;
                          Serial.println("Entra en bloqueo");
                        }
                      }
                      estadoBtnBloqueoAnterior = estadoBtnBloqueo;              // guardamos el estado del boton
                      
                      if (estadoBtnDesbloqueo  != estadoBtnDesbloqueoAnterior) {     // si hay cambio con respeto al estado
                        if (antirebote (BtnDesbloqueo) == HIGH){         //checamos  si esta preionado y si lo esta
                          bloqueo = false;
                          Serial.println("Entra en bloqueo");
                        }
                      }
                      estadoBtnDesbloqueoAnterior = estadoBtnDesbloqueo;              // guardamos el estado del boton

                      estadoBtnIncremento = digitalRead(BtnIncremento);
                      Serial.println(estadoBtnIncremento);
                      if (estadoBtnIncremento  != estadoBtnIncrementoAnterior) {     // si hay cambio con respeto al estado
                        if (antirebote (BtnIncremento)){         //checamos  si esta preionado y si lo esta
                          cuenta = cuenta + 4;                                       //aumentamos la cuenta
                          if (cuenta > 9){                
                            cuenta = 9;
                          }
                        }
                      }
                      estadoBtnIncrementoAnterior = estadoBtnIncremento;              // guardamos el estado del boton

                      if (!bloqueo) { // Si está bloqueado, lo ignoramos, y en otro caso, lo leemos
                          estadoBtnDecremento = digitalRead(BtnDecremento);      //leemos el estado del boton
                          Serial.println(estadoBtnDecremento);
                          if (estadoBtnDecremento  != estadoBtnDecrementoAnterior) {     // si hay cambio con respeto al estado anterior
                            if (antirebote (BtnDecremento)){   //si el boton esta presionado disminuimos la cuenta
                              cuenta--;                            
                              if (cuenta<0){

                                cuenta = 0;
                              }
                            }
                          }
                          estadoBtnDecrementoAnterior = estadoBtnDecremento;  //guardamos el estado del boton
                      }

                      actualizarNumero();   //desplegamos la cuenta en el display
                    }

Edito .. ya lo tengo XD me olvide de poner

Código:
estadoBtnDesbloqueo = digitalRead(BtnDesbloqueo);
                      Serial.println(estadoBtnDesbloqueo);

Tiene tela XD por ahora ya esta solucionado si sale algo mas que el jefe quiera ponerle ... que lo ponga el con ... y que me compre un arduino mega porque me quedé sin pines digitales Meparto
  Responder
#47
No lees en ningún lado el pin del botón de desbloqueo.
  Responder
#48
WeSo escribió:No lees en ningún lado el pin del botón de desbloqueo.
Lee arriba XD
  Responder


Posibles temas similares…
Tema Autor Respuestas Vistas Último mensaje
  LM35 y Contador binario Mentus 3 2,333 11-04-2015, 10:03 PM
Último mensaje: paredesivan4
  contador bolas airsoft harian33 15 4,611 24-06-2014, 08:00 PM
Último mensaje: harian33