Hola buenas noches, me podrian ayudar con esto, quiero que hacer el control de un 7 segmentos con un pulsador que mande al señal de ascender o descender(en la programacion hay unas leds que indican cuando esta haciendo cada accion) dependiendo de la cantidad de pulsos que mande ejemplo: con
1.ascienda
2.pare
3.descienda
int display7a[10]= {0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x18};
//Delcaración de Los Pines del Display
byte a=2;
byte b=3;
byte c=4;
byte d=5;
byte e=6;
byte f=7;
byte g=8;
byte inc=9; //Pulsador control de ascendente y descendente
byte det1=10; //Pulsador stop ascendencia
byte ledrojo=12;
byte ledverde=13;
byte det2=11;//Pulsador stop descendencia
int op=0;
int contador=0;
int i=0;
int value=0;
//Función que coloca en el puerto de salida los bits comenzando
// desde el pin ini hasta el pin fin
void puerto(int bits,int ini,int fin){
for(int i=ini;i<=fin;i++)
{
digitalWrite(i,bitRead(bits,i-ini));
}
}
void setup() {
pinMode(inc,INPUT);
pinMode(det1,INPUT);
pinMode(det2,INPUT);
pinMode(ledrojo,OUTPUT);
pinMode(ledverde,OUTPUT);
//Configura los 8 Pines digitales como SALIDAS
for(int i=a;i<=g;i++){
pinMode(i,OUTPUT);
}
}
void loop() {
digitalRead(inc);
value=digitalRead(inc);//hago que el pulsos se conviertan en la opcion de trabajo
if(value==HIGH){
op=op+1;}
else{
op==op;}
switch(op){
case 1:{ // asciende y la opcion de stop
digitalRead(det1);
if(digitalRead(det1)==HIGH){
contador=contador;
puerto(display7a[contador],a,g);
}
else{
contador++;
digitalWrite(ledrojo, HIGH);
digitalWrite(ledverde, LOW);
puerto(display7a[contador],a,g);
}
}
case 2: //asciende stop
{
contador==contador;
digitalWrite(ledrojo, LOW);
digitalWrite(ledverde, LOW);
puerto(display7a[contador],a,g);
}
case 3:{ //desciende y la opcion a stop
digitalRead(det2);
if(digitalRead(det2)==HIGH){
contador=contador;
puerto(display7a[contador],a,g);
}
else{
contador--;
digitalWrite(ledrojo, LOW);
digitalWrite(ledverde, HIGH);
puerto(display7a[contador],a,g);
}
}
case 4: //deciende stop
{
contador==contador;
digitalWrite(ledrojo, LOW);
digitalWrite(ledverde, LOW);
puerto(display7a[contador],a,g);
}
default:
{
op=op-op;
}
}
}