AYUDA en crear un código más corto.

Iniciado por Inter-ard, 22 Febrero 2014, 01:52 AM

0 Miembros y 1 Visitante están viendo este tema.

Inter-ard

Buenas noches amig@s, espero se encuentren bien.
En esta ocasión les escribo para solicitarles ayuda sobre un código que ya tengo elaborado, sin embargo quiero hacerlo más corto.

Saludos atentos y bendiciones.

xiruko

Sería un detalle que subieras el código...

Un saludo.

Inter-ard

este es el código amigo:
la funcion de el es hacer que al presionar un pulsador aumente, y al presionar otro disminuya (la cuenta).

Código (cpp) [Seleccionar]

int a=2; //segmentos del display
int b=3;
int c=4;
int d=5;
int e=6;
int f=7;
int g=8;
int botincremento=9;//boton de incremento
int botdecremento=10;//boton de decremento
int timeAntirebote=15;

int cuenta=0;//lleva la cuenta
int estadobotincremento;
int estadobotdecremento;
int estadobotantincremento;
int estadobotantdecremento;

boolean antirebote(int pin){
  int contador=0;
  boolean estado; //guarda el estaado del boton
  boolean estadoAnterior;//guarda el ultimo estado del boton
 
do {
   estado=digitalRead(pin);
   if (estado != estadoAnterior){
     contador=0;
     estadoAnterior = estado;//reiniciamos el contador
   }
  else{
    contador = contador + 1;//aumentamos el contador en 1
  }
  delay(1);
}while(contador < timeAntirebote);

return estado;
}

void setup(){
  Serial.begin(9600);
   pinMode(a, OUTPUT);//los declaramos como salidas
   pinMode(b, OUTPUT);
   pinMode(c, OUTPUT);
   pinMode(d, OUTPUT);
   pinMode(e, OUTPUT);
   pinMode(f, OUTPUT);
   pinMode(g, OUTPUT);
   pinMode(botincremento,INPUT);//los botones los declaramos como salidas
   pinMode(botdecremento,INPUT);


void actualizarNumero(){
  switch(cuenta){//pregunta por el valor de una variable que nosotros le digamos.
   
   case 0:
   digitalWrite(a, HIGH);
   digitalWrite(b, HIGH);
   digitalWrite(c, HIGH);
   digitalWrite(d, HIGH);
   digitalWrite(e, HIGH);
   digitalWrite(f, HIGH);
   digitalWrite(g, LOW);
   break;//de no tener break, seguirá realziando todas las funciones.
   case 1:
   digitalWrite(a, LOW);
   digitalWrite(b, HIGH);
   digitalWrite(c, HIGH);
   digitalWrite(d, LOW);
   digitalWrite(e, LOW);
   digitalWrite(f, LOW);
   digitalWrite(g, LOW);
   break;
   case 2:
   digitalWrite(a, HIGH);
   digitalWrite(b, HIGH);
   digitalWrite(c, LOW);
   digitalWrite(d, HIGH);
   digitalWrite(e, HIGH);
   digitalWrite(f, LOW);
   digitalWrite(g, HIGH);
   break;
   
   case 3:
   digitalWrite(a, HIGH);
   digitalWrite(b, HIGH);
   digitalWrite(c, HIGH);
   digitalWrite(d, HIGH);
   digitalWrite(e, LOW);
   digitalWrite(f, LOW);
   digitalWrite(g, HIGH);
   break;
   case 4:
   digitalWrite(a, LOW);
   digitalWrite(b, HIGH);
   digitalWrite(c, HIGH);
   digitalWrite(d, LOW);
   digitalWrite(e, LOW);
   digitalWrite(f, HIGH);
   digitalWrite(g, HIGH);
   break;
   case 5:
   digitalWrite(a, HIGH);
   digitalWrite(b, LOW);
   digitalWrite(c, HIGH);
   digitalWrite(d, HIGH);
   digitalWrite(e, LOW);
   digitalWrite(f, HIGH);
   digitalWrite(g, HIGH);
   break;
  case 6:
   digitalWrite(a, HIGH);
   digitalWrite(b, LOW);
   digitalWrite(c, HIGH);
   digitalWrite(d, HIGH);
   digitalWrite(e, HIGH);
   digitalWrite(f, HIGH);
   digitalWrite(g, HIGH);
   break;
   case 7:
   digitalWrite(a, HIGH);
   digitalWrite(b, HIGH);
   digitalWrite(c, HIGH);
   digitalWrite(d, LOW);
   digitalWrite(e, LOW);
   digitalWrite(f, LOW);
   digitalWrite(g, LOW);
   break;
   
   case 8:
   digitalWrite(a, HIGH);
   digitalWrite(b, HIGH);
   digitalWrite(c, HIGH);
   digitalWrite(d, HIGH);
   digitalWrite(e, HIGH);
   digitalWrite(f, HIGH);
   digitalWrite(g, HIGH);
   break;
   case 9:
   digitalWrite(a, HIGH);
   digitalWrite(b, HIGH);
   digitalWrite(c, HIGH);
   digitalWrite(d, LOW);
   digitalWrite(e, LOW);
   digitalWrite(f, HIGH);
   digitalWrite(g, HIGH);
   break;
  }
}

void loop()  {
   estadobotincremento=digitalRead(botincremento);//leemos el boton
   if(estadobotincremento !=estadobotantincremento){//si hay cambio respecto al estado anterior
     if(antirebote(botincremento)){//vemos si esta presionado
       cuenta++;//aumentamos la cuenta
       if(cuenta>9){
         cuenta=0;
       }
     }
   }
   estadobotantincremento = estadobotincremento;//guardamos el estado del boton
   estadobotdecremento=digitalRead(botdecremento);//leemos el estado del boton
   if(estadobotdecremento != estadobotantdecremento){
     if(antirebote(botdecremento)){
       cuenta--;//disminuimos la cuenta
       if(cuenta<0){
         cuenta=9;
       }
     }
   }
   estadobotantdecremento = estadobotdecremento;
   actualizarNumero();
}







Meta

Hola:

Al menos di que es Arduino, la gente no es adivina. Lo se porque esstoy metido en ello.

Creal al menos un esquema para saber de que va. Piedes simplificar código, parace que está muy bien estructurado.

Saludo.
Tutoriales Electrónica y PIC: http://electronica-pic.blogspot.com/

Inter-ard

disculpa si se me paso decir que era arduino gracias por la observación...a que te refieres con crear un esquema para ver por lo menos de que va?

Meta

Hola:

Esquema electrónico, diagrama de flujo, en qué consiste.

Para que en manejar display de 7 segmentos, en este caso.

Saludo
Tutoriales Electrónica y PIC: http://electronica-pic.blogspot.com/