Data hosted with ♥ by Pastebin.com - Download Raw - See Original
  1. // Se definen la cantidad de pines que vamos a usar como PIN
  2. // y la entrada analoga A0 como la que se va a usar por el
  3. // potenciómetro
  4. #define PIN 3
  5. #define Pot A0
  6.  
  7. // Se le dan nombres a los pines (7-9) del arduino
  8. // que van a ser usados por el integrado respectivamente
  9. // además el pin SH_CP osea Clock debe ser PWM(~)
  10. const int Latch = 8;
  11. const int Clock = 9;
  12. const int Data = 7;
  13.  
  14. int led[PIN] = {
  15.   7,8,9};
  16.  
  17. // Ocho secuencias
  18. int Serie1[7]={
  19.   129,66,36,24,24,36,66};
  20. int Serie2[9]={
  21.   0,128,192,224,240,248,252,254,255};
  22. int Serie3[12]={
  23.   255,126,60,24,16,8,16,8,24,60,126,255};
  24. int Serie4[2]={
  25.   240,15};
  26. int Serie5[14]={
  27.   129,0,131,133,137,145,161,0,193,161,145,137,133,131};
  28. int Serie6[2]={
  29.   195,60};
  30. int Serie7[11]={
  31.   1,0,1,0,15,0,15,0,255,255,0};
  32. int Serie8[50]={
  33.   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};
  34.  
  35. // Ciclo para activar los tres pines como salida
  36. // y el pin A0 como entrada
  37. void setup() {
  38.   for (int i=0; i<PIN; i++){
  39.     pinMode(led[i], OUTPUT);
  40.   }
  41.   pinMode(Pot, INPUT);
  42. }
  43.  
  44. // Recibe la info de la posición del potenciómetro
  45. void loop()
  46. {
  47.   int Pos = analogRead(Pot);
  48.   Pos = map(Pos, 0, 1023, 0,7);
  49.   Casos(Pos);
  50. }
  51.  
  52. // Según la posición del potenciómetro escoge un caso
  53. void Casos(int Valor)
  54. {
  55.   switch(Valor)
  56.   {
  57.   case 0:
  58.     for(int j=0;j<7;j++)
  59.     {
  60.       On(Serie1[j]);
  61.     }
  62.     break;
  63.   case 1:
  64.     for(int j=0;j<9;j++)
  65.     {
  66.       On(Serie2[j]);
  67.     }
  68.     break;
  69.   case 2:
  70.     for(int j=0;j<12;j++)
  71.     {
  72.       On(Serie3[j]);
  73.     }
  74.     break;
  75.   case 3:
  76.     for(int j=0;j<2;j++)
  77.     {
  78.       On(Serie4[j]);
  79.     }
  80.     break;
  81.   case 4:
  82.     for(int j=0;j<14;j++)
  83.     {
  84.       On(Serie5[j]);
  85.     }
  86.     break;
  87.   case 5:
  88.     for(int j=0;j<2;j++)
  89.     {
  90.       On(Serie6[j]);
  91.     }
  92.     break;
  93.   case 6:
  94.     for(int j=0;j<11;j++)
  95.     {
  96.       On(Serie7[j]);
  97.     }
  98.     break;
  99.   case 7:
  100.     for(int j=0;j<50;j++)
  101.     {
  102.       On(Serie8[j]);
  103.     }
  104.     break;
  105.   }        
  106. }
  107.  
  108. // Función para enviar los datos al Integrado IC 74HC595
  109. void On(int Valor)
  110. {
  111.   digitalWrite(Latch, LOW);
  112.   shiftOut(Data, Clock, MSBFIRST, Valor);
  113.   digitalWrite(Latch, HIGH);
  114.   delay(100);
  115. }