// Se definen la cantidad de pines que vamos a usar como PIN
// y la entrada analoga A0 como la que se va a usar por el
// potenciómetro
#define PIN 3
#define Pot A0
// Se le dan nombres a los pines (7-9) del arduino
// que van a ser usados por el integrado respectivamente
// además el pin SH_CP osea Clock debe ser PWM(~)
const int Latch = 8;
const int Clock = 9;
const int Data = 7;
int led[PIN] = {
7,8,9};
// Ocho secuencias
int Serie1[7]={
129,66,36,24,24,36,66};
int Serie2[9]={
0,128,192,224,240,248,252,254,255};
int Serie3[12]={
255,126,60,24,16,8,16,8,24,60,126,255};
int Serie4[2]={
240,15};
int Serie5[14]={
129,0,131,133,137,145,161,0,193,161,145,137,133,131};
int Serie6[2]={
195,60};
int Serie7[11]={
1,0,1,0,15,0,15,0,255,255,0};
int Serie8[50]={
1,2,4,8,16,32,64,128,64,32,16,8,4,2,1,2,4,8,16,32,64,128,192,160,144,136,132,130,129,131,133,137,145,161,193,225,209,201,197,195,199,203,211,227,243,235,231,239,255,0};
// Ciclo para activar los tres pines como salida
// y el pin A0 como entrada
void setup() {
for (int i=0; i<PIN; i++){
pinMode(led[i], OUTPUT);
}
pinMode(Pot, INPUT);
}
// Recibe la info de la posición del potenciómetro
void loop()
{
int Pos = analogRead(Pot);
Pos = map(Pos, 0, 1023, 0,7);
Casos(Pos);
}
// Según la posición del potenciómetro escoge un caso
void Casos(int Valor)
{
switch(Valor)
{
case 0:
for(int j=0;j<7;j++)
{
On(Serie1[j]);
}
break;
case 1:
for(int j=0;j<9;j++)
{
On(Serie2[j]);
}
break;
case 2:
for(int j=0;j<12;j++)
{
On(Serie3[j]);
}
break;
case 3:
for(int j=0;j<2;j++)
{
On(Serie4[j]);
}
break;
case 4:
for(int j=0;j<14;j++)
{
On(Serie5[j]);
}
break;
case 5:
for(int j=0;j<2;j++)
{
On(Serie6[j]);
}
break;
case 6:
for(int j=0;j<11;j++)
{
On(Serie7[j]);
}
break;
case 7:
for(int j=0;j<50;j++)
{
On(Serie8[j]);
}
break;
}
}
// Función para enviar los datos al Integrado IC 74HC595
void On(int Valor)
{
digitalWrite(Latch, LOW);
shiftOut(Data, Clock, MSBFIRST, Valor);
digitalWrite(Latch, HIGH);
delay(100);
}