Haz una pregunta
  Foros de Electrónica » Temas de Interés » Software de Simulación y Diseño Electrónico
Foros Registrarse ¿Olvidaste tu contraseña?

Temas similares

25/04/2015 #1


No funciona mi código Arduino
Buenas tardes, soy nuevo en arduino y estoy empezando por lo básico, el programa debe hacer que cuando pulse el primer botón aumente la cuenta en el display y cuando presione el segundo botón disminuya pero no lo hace y no doy con el porque espero alguien pueda orientarme por favor.
Adjunto una imagen del circuito.
El código que estoy utilizando es el siguiente:

Código:
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 botonIncremento = 9;
const int botonDecremento = 10;
const int tiempoAntirebote= 10;

  int cuenta = 0;
  int estadoBotonIncremento;
  int estadoBotonAnteriorIncremento;
  int estadoBotonDecremento;
  int estadoBotonAnteriorDecremento;

boolean antirebote(int pin) {
  int contador = 0;
  boolean estado;
  boolean estadoAnterior;
  
  do {
    estado = digitalRead(pin);
    if(estado = estadoAnterior){
      contador = 0;
      estadoAnterior = estado;
    }
    else {
      contador = contador + 1;
    }
    delay(1);
  } while(contador < tiempoAntirebote);
  
  return estado;
}

void actualizarNumero(){
  switch(cuenta){
    case 0:
 digitalWrite(a, LOW); 
 digitalWrite(b, LOW); 
 digitalWrite(c, LOW); 
 digitalWrite(d, LOW); 
 digitalWrite(e, LOW); 
 digitalWrite(f, LOW); 
 digitalWrite(g, HIGH);
 break;
 case 1:
 digitalWrite(a, HIGH); 
 digitalWrite(b, LOW); 
 digitalWrite(c, LOW); 
 digitalWrite(d, HIGH); 
 digitalWrite(e, HIGH); 
 digitalWrite(f, HIGH); 
 digitalWrite(g, HIGH);
 break;
 case 2:
 digitalWrite(a, LOW); 
 digitalWrite(b, LOW); 
 digitalWrite(c, HIGH); 
 digitalWrite(d, LOW); 
 digitalWrite(e, LOW); 
 digitalWrite(f, HIGH); 
 digitalWrite(g, LOW);
 break;
 case 3:
 digitalWrite(a, LOW); 
 digitalWrite(b, LOW); 
 digitalWrite(c, LOW); 
 digitalWrite(d, LOW); 
 digitalWrite(e, HIGH); 
 digitalWrite(f, HIGH); 
 digitalWrite(g, LOW); 
 break;
 case 4:
 digitalWrite(a, HIGH); 
 digitalWrite(b, LOW); 
 digitalWrite(c, LOW); 
 digitalWrite(d, HIGH); 
 digitalWrite(e, HIGH); 
 digitalWrite(f, LOW); 
 digitalWrite(g, LOW);
 break;
 case 5:
 digitalWrite(a, LOW); 
 digitalWrite(b, HIGH); 
 digitalWrite(c, LOW); 
 digitalWrite(d, LOW); 
 digitalWrite(e, HIGH); 
 digitalWrite(f, LOW); 
 digitalWrite(g, LOW);
 break;
 case 6:
 digitalWrite(a, LOW); 
 digitalWrite(b, HIGH); 
 digitalWrite(c, LOW); 
 digitalWrite(d, LOW); 
 digitalWrite(e, LOW); 
 digitalWrite(f, LOW); 
 digitalWrite(g, LOW);
 break;
 case 7:
 digitalWrite(a, LOW); 
 digitalWrite(b, LOW); 
 digitalWrite(c, LOW); 
 digitalWrite(d, HIGH); 
 digitalWrite(e, HIGH); 
 digitalWrite(f, HIGH); 
 digitalWrite(g, HIGH);
 break;
 case 8:
 digitalWrite(a, LOW); 
 digitalWrite(b, LOW); 
 digitalWrite(c, LOW); 
 digitalWrite(d, LOW); 
 digitalWrite(e, LOW); 
 digitalWrite(f, LOW); 
 digitalWrite(g, LOW);
 break;
 case 9:
 digitalWrite(a, LOW); 
 digitalWrite(b, LOW); 
 digitalWrite(c, LOW); 
 digitalWrite(d, HIGH); 
 digitalWrite(e, HIGH); 
 digitalWrite(f, LOW); 
 digitalWrite(g, LOW);
 break;
  }
}

void setup (){
pinMode(a,OUTPUT);
pinMode(b,OUTPUT);
pinMode(c,OUTPUT);
pinMode(d,OUTPUT);
pinMode(e,OUTPUT);
pinMode(f,OUTPUT);
pinMode(g,OUTPUT);
pinMode(botonIncremento,INPUT);
pinMode(botonDecremento,INPUT);
}

void loop(){
  estadoBotonIncremento = digitalRead(botonIncremento);
    if(estadoBotonIncremento = estadoBotonAnteriorIncremento){
      if(antirebote(botonIncremento)) {
        cuenta++;
        if(cuenta > 9) {
          cuenta = 9;
        }
      }
    }
estadoBotonAnteriorIncremento = estadoBotonIncremento;

estadoBotonDecremento = digitalRead(botonDecremento);
    if(estadoBotonDecremento = estadoBotonAnteriorDecremento){
      if(antirebote(botonDecremento)) {
        cuenta--;
        if(cuenta < 0) {
          cuenta = 0;
        }
      }
    }
    
    estadoBotonAnteriorDecremento = estadoBotonDecremento;
    
    actualizarNumero();
}
26/04/2015 #2

Avatar de Scooter

Se borra instantáneamente: siempre que estado sea igual a estado anterior cuenta es igual a ver y eso pasa el 99,99% del tiempo
Respuesta
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Buscar más temas sobre:
Lupa Software de Simulación y Diseño Electrónico

Todo lo relacionado con estos programas.

Cerrar
Foros de Electrónica » Temas de Interés » Software de Simulación y Diseño Electrónico

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.