Vous êtes sur la page 1sur 7

//Declaracion de pines

#define N 100

Byte
s_triang[N]={0,5,10,15,21,26,31,36,41,46,51,56,62,67,72,77,82,87,92,97,103,108,113,118,123,128,133,139,
144,149,154,159,164,169,174,180,185,190,195,200,205,210,216,221,226,231,236,241,246,251,251,246,241,236
,231,226,221,216,210,205,200,195,190,185,180,174,169,164,159,154,149,144,139,133,128,123,118,113,108,10
3,97,92,87,82,77,72,67,62,56,51,46,41,36,31,26,21,15,10,5,0};
byte
s_reactang[N]={254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,
254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254
,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,254};
byte
s_saw[N]={0,3,5,8,10,13,15,18,21,23,26,28,31,33,36,38,41,44,46,49,51,54,56,59,62,64,67,69,72,74,77,80,8
2,85,87,90,92,95,97,100,103,105,108,110,113,115,118,121,123,126,128,131,133,136,139,141,144,146,149,151
,154,157,159,162,164,167,169,172,174,177,180,182,185,187,190,192,195,198,200,203,205,208,210,213,216,21
8,221,223,226,228,231,233,236,239,241,244,246,249,251,0};
byte
s_impul[N]={177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0};
byte
s_sin[N]={191,197,204,210,216,222,227,232,236,240,243,246,249,251,252,253,254,254,253,252,251,249,246,2
43,240,236,232,227,222,216,210,204,197,191,183,176,169,161,153,145,137,129,121,113,105,97,89,82,74,67,6
0,53,47,41,35,30,25,20,16,12,9,6,4,2,1,0,0,0,1,2,4,6,9,12,16,20,25,30,35,41,47,53,60,67,74,82,89,97,105
,113,121,129,137,145,153,161,169,176,183,191};
byte
s_expodec[N]={254,246,239,232,226,219,214,208,203,199,194,190,186,183,179,176,173,170,168,165,163,160,1
58,157,155,153,151,150,148,147,146,145,144,143,142,141,140,139,138,138,137,136,136,135,135,134,134,133,
133,133,132,132,132,131,131,131,131,130,130,130,130,130,129,129,129,129,129,129,129,129,128,128,128,128
,128,128,128,128,128,128,128,128,128,128,128,128,128,128,127,127,127,127,127,127,127,127,127,127,127,12
7};
byte
s_ramp[N]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,5,10,15,20,25,30,35,40,45,50,55,60,65,70,75,80,85,90,95,100,105,110,115,120,125,130,135,140,1
45,150,155,160,165,170,175,180,185,190,195,200,205,210,215,220,225,230,235,240,245};
byte
s_sinc[N]={50,54,58,61,63,64,64,62,59,54,49,44,40,36,33,32,32,35,39,45,51,58,65,70,74,76,75,71,65,57,47
,36,26,17,10,7,8,13,23,39,58,82,108,135,163,189,211,230,243,249,249,243,230,211,189,163,135,108,82,58,3
9,23,13,8,7,10,17,26,36,47,57,65,71,75,76,74,70,65,58,51,45,39,35,32,32,33,36,40,44,49,54,59,62,64,64,6
3,61,58,54,50};
byte
s_sinexpo[N]={85,156,192,185,142,82,30,5,12,45,89,127,145,138,113,80,53,41,46,65,90,110,118,113,99,81,6
6,61,64,76,89,99,103,100,91,82,74,72,74,81,88,93,95,93,88,83,79,78,79,83,87,90,90,89,86,83,81,81,82,84,
86,88,88,87,86,84,83,83,83,85,86,87,87,86,85,84,84,84,84,85,85,86,86,86,85,85,84,84,85,85,85,85,85,85,8
5,85,85,85,85,85};
byte
s_parti[N]={83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,3,8,13,18,23,28,33,38,43,48,53,58,63,68,
73,78,125,166,166,166,166,166,166,166,166,166,166,166,166,166,166,166,166,249,249,249,249,249,249,249,2
49,249,249,249,249,249,249,249,249,208,161,156,151,146,141,136,131,126,121,116,111,106,101,96,91,86,83,
83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83};

int pulsadorAvanzar = 9;
int pulsadorRetroceder = 10;
int presionado1 = 0; //Variable usada para el antirrebote del pulsador avanzar
int presionado2 = 0; //Variable usada para el antirrebote del pulsador disminuir
int contador; //Variable asociada a un contador

void setup() {

//Declaracion de entradas/salidas digitales


DDRD = B11111111;
PORTD = 0;
pinMode(pulsadorAvanzar, INPUT);
pinMode(pulsadorRetroceder, INPUT);

void loop() {

//Secuencia para aumentar o avanzar

if (digitalRead(pulsadorAvanzar) == LOW)
{
presionado1 = 1; //Cambia de estado si se presiona el pulsador
}
if (digitalRead(pulsadorAvanzar) == HIGH && presionado1 == 1)
{
presionado1 = 0; //Se reinicia la variable del antirrebote
contador++; //El contador aumenta en una unidad

if (contador > 9)
{
contador = 0; //Se reinicia el contador regresando a la señal 1
}
}

//Secuencia para disminuir o retroceder

if (digitalRead(pulsadorRetroceder) == LOW)
{
presionado2 = 1; //Cambia de estado si se presiona el pulsador
}
if (digitalRead(pulsadorRetroceder) == HIGH && presionado2 == 1)
{
presionado2 = 0; //Se reinicia la variable del antirrebote
contador--; //El contador disminuye en una unidad

if (contador < 0)
{
contador = 9; //Se reinicia el contador regresando a la primera señal
}
}

switch (contador)
{
//Muestra las señales de acuerdo al contador

case 0:
for ( byte i = 0; i < N; i++)
{
PORTD = s_triang[i];
delay (1);
}

break;

case 1:
for ( byte i = 0; i < N; i++)
{
PORTD = s_reactang[i];
delay (1);
}
break;

case 2:
for ( byte i = 0; i < N; i++)
{
PORTD = s_saw[i];
delay (1);
}
break;

case 3:
for ( byte i = 0; i < N; i++)
{
PORTD = s_sin[i];
delay (1);
}
break;

case 4:
for ( byte i = 0; i < N; i++)
{
PORTD = s_impul[i];
delay (1);
}
break;

case 5:
for ( byte i = 0; i < N; i++)
{
PORTD = s_sinexpo[i];
delay (1);
}
break;

case 6:
for ( byte i = 0; i < N; i++)
{
PORTD = s_expodec[i];
delay (1);
}
break;

case 7:
for ( byte i = 0; i < N; i++)
{
PORTD = s_ramp[i];
delay (1);
}
break;

case 8:
for ( byte i = 0; i < N; i++)
{
PORTD = s_sinc[i];
delay (1);
}
break;
case 9:
for ( byte i = 0; i < N; i++)
{
PORTD = s_parti[i];
delayMicroseconds (1000);
}
break;
}
}

Vous aimerez peut-être aussi