#define pines 3 //creamos la variable maxleds de 8 elementos
#define pot A0 //creamos la variable pot con el pin A0
const int pinLatch = 2; // Este pin se sets baja cuando quiero que el 595 para escuchar
const int pinReloj = 3; // Este pin es utilizado por shiftout para alternar decir que hay otro granito de arena para cambiar
const int pinDato = 4; // Este pin se utiliza para pasar al siguiente bit
int led[pines] = {2,3,4}; //creamos un vector para los pines a utilizar
// creamos una tabla para los numeros del 0 al 9
int num1[1]={249};
int num2[1]={164};
int num3[1]={176};
int num4[1]={153};
int num5[1]={146};
int num6[1]={131};
int num7[1]={248};
int num8[1]={128};
int num9[1]={144};
int num0[1]={192};
// Solo se ejecuta una vez, al iniciar o resetear el Arduino
void setup ()
{
for (int i=0;i<pines;i++)
pinMode(led[i],OUTPUT); // El pines del 2 al 4 seran de salida
}
// se ejecuta siempre como un ciclo
void loop()
{
int valor = analogRead(pot); // lee el valor del potenciometro
int i=map(valor, 0, 1023, 0, 10); // hace un mapeo o conversion
rutina(i); // llama a la funcion rutina
}
void rutina(int i) //funcion para enceder el led
{
switch(i)
{
case 0: //hacer algo cuando sea igual a 0
for(int j=0;j<1;j++)
{
activacion(num0[j]);
delay(60);
}
break;
case 1: //hacer algo cuando sea igual a 1
for(int j=0;j<1;j++)
{
activacion(num1[j]);
delay(60);
}
break;
case 2: //hacer algo cuando sea igual a 2
for(int j=0;j<1;j++)
{
activacion(num2[j]);
delay(60);
}
break;
case 3: //hacer algo cuando sea igual a 3
for(int j=0;j<1;j++)
{
activacion(num3[j]);
delay(60);
}
break;
case 4: //hacer algo cuando sea igual a 4
for(int j=0;j<1;j++)
{
activacion(num4[j]);
delay(100);
}
break;
case 5: //hacer algo cuando sea igual a 5
for(int j=0;j<1;j++)
{
activacion(num5[j]);
delay(60);
}
break;
case 6: //hacer algo cuando sea igual a 6
for(int j=0;j<1;j++)
{
activacion(num6[j]);
delay(60);
}
break;
case 7: //hacer algo cuando sea igual a 7
for(int j=0;j<1;j++)
{
activacion(num7[j]);
delay(60);
}
break;
case 8: //hacer algo cuando sea igual a 8
for(int j=0;j<1;j++)
{
activacion(num8[j]);
delay(60);
}
break;
case 9: //hacer algo cuando sea igual a 9
for(int j=0;j<1;j++)
{
activacion(num9[j]);
delay(60);
}
break;
}
}
// Uso de la orden interna shiftout función
void activacion(int i)
{
digitalWrite (pinLatch, LOW); // señal al 595 para escuchar los datos
shiftOut (pinDato, pinReloj, MSBFIRST, i); // Señal de la 595 que estoy hecho enviando
digitalWrite (pinLatch, HIGH); // sendSerialData1
delay(50);
}