Calificación:
  • 0 voto(s) - 0 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
                    }
Citar
#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:
NOVEDAD: CoreXY Eternal Edition (Custom) -> https://www.spainlabs.com/foros/tema-Ete...So-Edition
Mi Prusa i3, ¡con lista de componentes! -> http://www.spainlabs.com/foros/tema-Un-clon-mas
Citar
#43
Eso estoy haciendo buscando los fallos y haciendo pruebas XD al menos lo que tengo que añadirle esta bien no?
Citar
#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.
NOVEDAD: CoreXY Eternal Edition (Custom) -> https://www.spainlabs.com/foros/tema-Ete...So-Edition
Mi Prusa i3, ¡con lista de componentes! -> http://www.spainlabs.com/foros/tema-Un-clon-mas
Citar
#45
Mola Ahora me pongo.
Citar
#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
Citar
#47
No lees en ningún lado el pin del botón de desbloqueo.
NOVEDAD: CoreXY Eternal Edition (Custom) -> https://www.spainlabs.com/foros/tema-Ete...So-Edition
Mi Prusa i3, ¡con lista de componentes! -> http://www.spainlabs.com/foros/tema-Un-clon-mas
Citar
#48
WeSo escribió:No lees en ningún lado el pin del botón de desbloqueo.
Lee arriba XD
Citar


Temas similares...
Tema Autor Respuestas Vistas Último mensaje
  LM35 y Contador binario Mentus 3 973 11-04-2015, 10:03 PM
Último mensaje: paredesivan4
  contador bolas airsoft harian33 15 2,170 24-06-2014, 08:00 PM
Último mensaje: harian33