Data hosted with ♥ by Pastebin.com - Download Raw - See Original
  1. // Lab 6
  2. // Cristian Córdoba
  3. // Universidad Santiago de Cali
  4. // Versión 1.0
  5.  
  6. // Se configuran los pines data, latch y clock.
  7. int dataPin = 10;
  8. int latchPin = 9;
  9. int clockPin = 8;
  10.  
  11. // Se configuran los patrones der movimiento.
  12. int dato;
  13. int Patron0[16] = {1,2,4,8,16,32,64,128,1,2,4,8,16,32,64,128};
  14. int Patron1[16] = {1,2,4,8,16,32,64,128,64,32,16,8,4,2,1,0};
  15. int Patron2[16] = {0, 1, 129, 131, 195, 199, 231, 239, 255, 231, 195, 129, 0};
  16. int Patron3[16] = {1,128,2,64,4,32,8,16,16,8,32,4,64,2,18,1};
  17. int Patron4[16] = {128,64,32,16,8,4,2,1,128,64,32,16,8,4,2,2};
  18. int Patron5[16] = {64,8,2,64,32,4,128,16,1,64,8,2,64,32,4,0};
  19. int Patron6[16] = {128,64,32,16,8,4,2,1,128,64,32,16,8,4,2,2};
  20. int Patron7[16] = {240, 255, 15, 255, 15, 255, 240};
  21.  
  22.  
  23.  
  24. // Variable para la lectura del dato serial desde processing.
  25. char Lectura;
  26.  
  27. // Configuración del programa.
  28. void setup() {
  29.  
  30.   // Se configuran los pines como salidas y el modulo de com serial.
  31.   pinMode(dataPin, OUTPUT);
  32.   pinMode(latchPin, 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 el dato actual en el buffer.
  45.     Lectura = Serial.read();
  46.    
  47.     // Aquí se condiciona si el dato enviado está entre las
  48.     // opciones y ejecuta el patrón de movimiento determinado
  49.    
  50.     if (Lectura == '0'){
  51.       Patron_0();
  52.     }
  53.     if (Lectura == '1'){
  54.       Patron_1();
  55.     }
  56.     if (Lectura == '2'){
  57.       Patron_2();
  58.     }
  59.     if (Lectura == '3'){
  60.       Patron_3();
  61.     }
  62.     if (Lectura == '4'){
  63.       Patron_4();
  64.     }
  65.     if (Lectura == '5'){
  66.       Patron_5();
  67.     }
  68.     if (Lectura == '6'){
  69.       Patron_6();
  70.     }
  71.     if (Lectura == '7'){
  72.       Patron_7();
  73.     }
  74.    
  75.     // El bucle se ejecuta mientras hayan datos disponibles
  76.     // por leer en el buffer.
  77.    
  78.   }
  79. }
  80.  
  81. // A continuación y hasta el final del código están las funciones
  82. // para mostrar los patrones en cada caso descrito con antelación.
  83.  
  84. void Patron_0(){
  85.  
  86.   for (int j = 0; j < 16; j++) {
  87.     // Carga la secuencia del arreglo determinado.
  88.     dato = Patron0[j];
  89.     envio();
  90.     delay(100);
  91.   }
  92. }  
  93.  
  94. void Patron_1(){
  95.  
  96.   for (int j = 0; j < 16; j++) {
  97.     // Carga la secuencia del arreglo determinado.
  98.     dato = Patron1[j];
  99.     envio();
  100.     delay(100);
  101.     }
  102. }  
  103.  
  104.  
  105.  
  106. void Patron_2(){
  107.  
  108.   for (int j = 0; j < 16; j++) {
  109.     // Carga la secuencia del arreglo determinado.
  110.     dato = Patron2[j];
  111.     envio();
  112.     delay(200);
  113.     }
  114. }
  115.  
  116. void Patron_3(){
  117.  
  118.   for (int j = 0; j < 16; j++) {
  119.     // Carga la secuencia del arreglo determinado.
  120.     dato = Patron3[j];
  121.     envio();
  122.     delay(200);
  123.     }
  124. }
  125.  
  126. void Patron_4(){
  127.  
  128.   for (int j = 0; j < 16; j++) {
  129.     // Carga la secuencia del arreglo determinado.
  130.     dato = Patron4[j];
  131.     envio();
  132.     delay(200);
  133.     }
  134. }
  135.  
  136. void Patron_5(){
  137.  
  138.   for (int j = 0; j < 16; j++) {
  139.     // Carga la secuencia del arreglo determinado.
  140.     dato = Patron5[j];
  141.     envio();
  142.     delay(100);
  143.    
  144.   }
  145. }  
  146.  
  147. void Patron_6(){
  148.  
  149.   for (int j = 0; j < 16; j++) {
  150.     // Carga la secuencia del arreglo determinado.
  151.     dato = Patron6[j];
  152.     envio();
  153.     delay(300);
  154.    
  155.   }
  156. }  
  157.  
  158. void Patron_7(){
  159.   for (int j = 0; j < 16; j++) {
  160.     // Carga la secuencia del arreglo determinado.
  161.     dato = Patron7[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. }