Data hosted with ♥ by Pastebin.com - Download Raw - See Original
  1. #define pines 3 //creamos la variable maxleds de 8 elementos
  2. #define pot A0    //creamos la variable pot con el pin A0
  3.  
  4. const int pinLatch = 2;  // Este pin se sets baja cuando quiero que el 595 para escuchar
  5. const int pinReloj = 3;  // Este pin es utilizado por shiftout para alternar decir que hay otro granito de arena para cambiar
  6. const int pinDato = 4;  // Este pin se utiliza para pasar al siguiente bit
  7.  
  8. int led[pines] = {2,3,4}; //creamos un vector para los pines a utilizar
  9.  
  10. // creamos una tabla para los numeros del 0 al 9
  11. int num1[1]={249};
  12. int num2[1]={164};
  13. int num3[1]={176};
  14. int num4[1]={153};
  15. int num5[1]={146};
  16. int num6[1]={131};
  17. int num7[1]={248};
  18. int num8[1]={128};
  19. int num9[1]={144};
  20. int num0[1]={192};
  21.  
  22. // Solo se ejecuta una vez, al iniciar o resetear el Arduino
  23. void setup ()
  24. {
  25.   for (int i=0;i<pines;i++)
  26.   pinMode(led[i],OUTPUT); // El pines del 2 al 4 seran de salida
  27. }
  28.  
  29.  
  30. // se ejecuta siempre como un ciclo
  31. void loop()
  32. {
  33.   int valor = analogRead(pot); // lee el valor del potenciometro
  34.   int i=map(valor, 0, 1023, 0, 10); // hace un mapeo o conversion
  35.   rutina(i);                   // llama a la funcion rutina
  36. }
  37.  
  38. void rutina(int i) //funcion para enceder el led
  39. {
  40.    switch(i)
  41.   {
  42.   case 0: //hacer algo cuando sea igual a 0
  43.     for(int j=0;j<1;j++)
  44.     {
  45.       activacion(num0[j]);
  46.       delay(60);
  47.     }
  48.     break;
  49.   case 1: //hacer algo cuando sea igual a 1
  50.     for(int j=0;j<1;j++)
  51.     {
  52.       activacion(num1[j]);
  53.       delay(60);
  54.     }
  55.     break;
  56.   case 2: //hacer algo cuando sea igual a 2
  57.     for(int j=0;j<1;j++)
  58.     {
  59.       activacion(num2[j]);
  60.       delay(60);
  61.     }
  62.     break;
  63.   case 3: //hacer algo cuando sea igual a 3
  64.     for(int j=0;j<1;j++)
  65.     {
  66.       activacion(num3[j]);
  67.       delay(60);
  68.     }
  69.     break;
  70.   case 4: //hacer algo cuando sea igual a 4
  71.     for(int j=0;j<1;j++)
  72.     {
  73.       activacion(num4[j]);
  74.       delay(100);
  75.     }
  76.     break;  
  77.   case 5: //hacer algo cuando sea igual a 5
  78.     for(int j=0;j<1;j++)
  79.     {
  80.       activacion(num5[j]);
  81.       delay(60);
  82.     }
  83.     break;  
  84.    case 6: //hacer algo cuando sea igual a 6
  85.     for(int j=0;j<1;j++)
  86.     {
  87.       activacion(num6[j]);
  88.       delay(60);
  89.     }
  90.     break;  
  91.     case 7: //hacer algo cuando sea igual a 7
  92.     for(int j=0;j<1;j++)
  93.     {
  94.       activacion(num7[j]);
  95.       delay(60);
  96.     }
  97.     break;  
  98.     case 8: //hacer algo cuando sea igual a 8
  99.     for(int j=0;j<1;j++)
  100.     {
  101.       activacion(num8[j]);
  102.       delay(60);
  103.     }
  104.     break;
  105.     case 9: //hacer algo cuando sea igual a 9
  106.     for(int j=0;j<1;j++)
  107.     {
  108.       activacion(num9[j]);
  109.       delay(60);
  110.     }
  111.     break;  
  112.   }
  113. }
  114.  
  115. // Uso de la orden interna shiftout función
  116. void activacion(int i)
  117. {
  118.   digitalWrite (pinLatch, LOW); // señal al 595 para escuchar los datos
  119.   shiftOut (pinDato, pinReloj, MSBFIRST, i); // Señal de la 595 que estoy hecho enviando  
  120.   digitalWrite (pinLatch, HIGH); // sendSerialData1  
  121.   delay(50);  
  122. }