Data hosted with ♥ by Pastebin.com - Download Raw - See Original
  1. //laboratorio 6
  2. //DIEGO LANDAZURY DIAZ
  3. //universidad santiago de cali
  4. // version:1.0
  5.  
  6.  
  7. // se inicializan los pines para en envio de los datos
  8. // al integrado
  9. int latchPin = 8;
  10. int clockPin = 9;
  11. int dataPin = 7;
  12.  
  13. // se inicializan los arreglos para cada patrón
  14. int dato;
  15. int P_A[17] = {0, 1, 3, 7, 15, 31, 63, 127, 255, 127, 63, 31, 15, 7, 3, 1, 0};
  16. int P_B[16] = {0, 2, 4, 8, 16, 32, 64, 128, 64, 32, 16, 8, 4, 2, 1, 0};
  17. int P_C[9] = {0, 129, 66, 36, 24, 36, 66, 129, 0 };
  18. int P_D[10] = {0, 1, 5, 21, 85, 213, 245, 253, 255, 0};
  19. int P_E[7] = {0, 255, 189, 165, 161, 129, 0};
  20. int P_F[13] = {0, 1, 129, 131, 195, 199, 231, 239, 255, 231, 195, 129, 0};
  21. int P_G[9] = {0, 3, 15, 63, 255, 243, 240, 192, 0};
  22. int P_H[9] = {0, 240, 255, 15, 255, 15, 255, 240, 0 };
  23.  
  24. // variable para la lectura del dato serial desde processing
  25. char Letra;
  26.  
  27. // config del programa
  28. void setup() {
  29.  
  30.   // se configuran los pines como salidas y el modulo de com serial
  31.   pinMode(latchPin, OUTPUT);
  32.   pinMode(dataPin, OUTPUT);  
  33.   pinMode(clockPin, OUTPUT);
  34.   Serial.begin(9600);
  35.  
  36. }
  37.  
  38. // Bucle de ejecución del programa
  39. void loop() {
  40.  
  41.   // Si hay datos disponibles en el puerto serial
  42.   if (Serial.available() > 0)
  43.   {  
  44.     // Leer la letra actual en el buffer
  45.     Letra = Serial.read();
  46.    
  47.     // aqui se condiciona si la letra enviada está entre las
  48.     // opciones y ejecuta el patron determinado
  49.    
  50.     if (Letra == 'A'){
  51.       Patron_A();
  52.     }
  53.     if (Letra == 'B'){
  54.       Patron_B();
  55.     }
  56.     if (Letra == 'C'){
  57.       Patron_C();
  58.     }
  59.     if (Letra == 'D'){
  60.       Patron_D();
  61.     }
  62.     if (Letra == 'E'){
  63.       Patron_E();
  64.     }
  65.     if (Letra == 'F'){
  66.       Patron_F();
  67.     }
  68.     if (Letra == 'G'){
  69.       Patron_G();
  70.     }
  71.     if (Letra == 'H'){
  72.       Patron_H();
  73.     }
  74.    
  75.     // el bucle se ejecuta mientras hayan datos disponibles
  76.     // por leer en el buffer.
  77.    
  78.   }
  79. }
  80.  
  81. // a continuacion y hasta el final de codigo estan las funciones
  82. // para mostrar los patrones en cada caso descrito arriba.
  83.  
  84. void Patron_A(){
  85.  
  86.   for (int j = 0; j < 17; j++) {
  87.     // carga la secuencia del arreglo determinado.
  88.     dato = P_A[j];
  89.     // funcion de envio
  90.     envio();
  91.     delay(100);
  92.   }
  93. }  
  94.  
  95. void Patron_B(){
  96.  
  97.   for (int j = 0; j < 16; j++) {
  98.     // carga la secuencia del arreglo determinado
  99.     dato = P_B[j];
  100.     envio();
  101.     delay(100);
  102.     }
  103. }  
  104.  
  105.  
  106.  
  107. void Patron_C(){
  108.  
  109.   for (int j = 0; j < 9; j++) {
  110.     // carga la secuencia del arreglo determinado
  111.     dato = P_C[j];
  112.     envio();
  113.     delay(200);
  114.     }
  115. }
  116.  
  117. void Patron_D(){
  118.  
  119.   for (int j = 0; j < 10; j++) {
  120.     // carga la secuencia del arreglo determinado
  121.     dato = P_D[j];
  122.     envio();
  123.     delay(200);
  124.     }
  125. }
  126.  
  127. void Patron_E(){
  128.  
  129.   for (int j = 0; j < 7; j++) {
  130.     // carga la secuencia del arreglo determinado
  131.     dato = P_E[j];
  132.     envio();
  133.     delay(200);
  134.     }
  135. }
  136.  
  137. void Patron_F(){
  138.  
  139.   for (int j = 0; j < 13; j++) {
  140.     // carga la secuencia del arreglo determinado
  141.     dato = P_F[j];
  142.     envio();
  143.     delay(100);
  144.    
  145.   }
  146. }  
  147.  
  148. void Patron_G(){
  149.  
  150.   for (int j = 0; j < 9; j++) {
  151.     // carga la secuencia del arreglo determinado
  152.     dato = P_G[j];
  153.     envio();
  154.     delay(300);
  155.    
  156.   }
  157. }  
  158.  
  159. void Patron_H(){
  160.   for (int j = 0; j < 9; j++) {
  161.     dato = P_H[j];
  162.     envio();
  163.     delay(300);
  164.   }
  165. }
  166.  
  167. void envio(){
  168.     // se pone el pin latch en cero para guardar el valor mientras se transmite.
  169.     digitalWrite(latchPin, 0);
  170.     //
  171.     shiftOut(dataPin, clockPin, MSBFIRST, dato);
  172.     // se regresa el pin latch a estado alto para esperar el nuevo valor
  173.     digitalWrite(latchPin, 1);
  174. }