Advertisement
Josueco

lab9

May 28th, 2015
335
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 4.64 KB | None | 0 0
  1. /********** Proyecto **********
  2.  * Laboratorio 9
  3.  * Autor: Josue Mauricio Hurtado Mosquera
  4.  * Descripcion:
  5.  * Controlar desde una interfaz en Processing, el patrón de movimiento y colores en un módulo de 8 LEDs RGB controlado
  6.  * con un Arduino shield.
  7.  */
  8. /********** Constantes **********/
  9.  
  10. #define TOTAL_LED   8 // Total LEDs RGB
  11.  
  12. /********** Variables **********/
  13.  
  14. int led[TOTAL_LED] = {2, 3, 4, 5, 6, 7, 8, 9};
  15.  
  16. int pin_r = 11;
  17. int pin_g = 12;
  18. int pin_b = 13;
  19.  
  20. //colores
  21. int r[TOTAL_LED] = {0, 1, 0, 1, 1, 0, 1, 0};
  22. int g[TOTAL_LED] = {0, 0, 1, 0, 0, 1, 1, 0};
  23. int b[TOTAL_LED] = {1, 0, 0, 0, 1, 1, 0, 0};
  24.  
  25. // Guardamos el valor lo que recibimos via serial
  26. int valor, val;
  27. char letr;
  28.  
  29. //indicado, durante tantos milisegundos
  30. int ms = 100;
  31.  
  32. void setup() {
  33.  
  34.   // La comunicacion serial sera a 9600 baudios
  35.   Serial.begin(9600);
  36.  
  37.   //delay(60);
  38.  
  39.   // inicializar pines digitales como salida.
  40.   for (int i = 0; i <= TOTAL_LED ; i++) {
  41.     pinMode(led[i], OUTPUT);
  42.     digitalWrite(led[i], HIGH);
  43.   }
  44.  
  45.   // inicializar los pines que controlan el color
  46.   pinMode(pin_r, OUTPUT); // RED
  47.   digitalWrite(pin_r, HIGH);
  48.   pinMode(pin_g, OUTPUT); // GREEN
  49.   digitalWrite(pin_r, HIGH);
  50.   pinMode(pin_b, OUTPUT); // BLUE
  51.   digitalWrite(pin_r, HIGH);
  52.  
  53. }
  54.  
  55. void loop() {
  56.  
  57.   // send data only when you receive data:
  58.   if (Serial.available() > 0) {
  59.  
  60.     //letr = Serial.read();
  61.     val = Serial.parseInt();
  62.     Serial.print(letr);
  63.     Serial.println(val);
  64.  
  65.   }
  66.  
  67.  //condiciones para la escojencia del patron
  68.   if (val == 1) {
  69.     patron1();
  70.   }
  71.   if (val == 2) {
  72.     patron2();
  73.   }
  74.   if (val == 3) {
  75.     patron3();
  76.   }
  77.   if (val == 4) {
  78.     patron4();
  79.   }
  80.   if (val == 5) {
  81.     patron5();
  82.   }
  83.   if (val == 6) {
  84.     patron6();
  85.   }
  86.   if (val == 7) {
  87.     patron7();
  88.   }
  89.   if (val == 8) {
  90.     patron8();
  91.   }
  92.  
  93. }
  94. void encendido(int l, int r, int g, int b) {
  95.   digitalWrite(l, LOW);
  96.   digitalWrite(pin_r, r == 0 ? HIGH : LOW);
  97.   digitalWrite(pin_g, g == 0 ? HIGH : LOW);
  98.   digitalWrite(pin_b, b == 0 ? HIGH : LOW);
  99.  
  100.   //delay(2);
  101.  
  102.   digitalWrite(l, HIGH);
  103.   digitalWrite(pin_r, HIGH);
  104.   digitalWrite(pin_g, HIGH);
  105.   digitalWrite(pin_b, HIGH);
  106.  
  107. }
  108.  
  109. void encender_led(int l, int r, int g, int b) {
  110.   digitalWrite(l, LOW);
  111.   digitalWrite(pin_r, r == 0 ? HIGH : LOW);
  112.   digitalWrite(pin_g, g == 0 ? HIGH : LOW);
  113.   digitalWrite(pin_b, b == 0 ? HIGH : LOW);
  114.  
  115.   delay(ms);
  116.  
  117.   digitalWrite(l, HIGH);
  118.   digitalWrite(pin_r, HIGH);
  119.   digitalWrite(pin_g, HIGH);
  120.   digitalWrite(pin_b, HIGH);
  121.  
  122. }
  123.  
  124. void apagar_led(int l, int r, int g, int b) {
  125.   digitalWrite(l, HIGH);
  126.   digitalWrite(pin_r, r == 0 ? LOW : HIGH);
  127.   digitalWrite(pin_g, g == 0 ? LOW : HIGH);
  128.   digitalWrite(pin_b, b == 0 ? LOW : HIGH);
  129.  
  130.   delay(ms);
  131.  
  132.   digitalWrite(l, LOW);
  133.   digitalWrite(pin_r, LOW);
  134.   digitalWrite(pin_g, LOW);
  135.   digitalWrite(pin_b, LOW);
  136.  
  137. }
  138.  //patrones de movimiento de los leds
  139. void patron1() {
  140.   for (int i = 0; i < TOTAL_LED; i++) {
  141.     encender_led(led[i], r[i], g[i], b[i]);
  142.   }
  143. }
  144.  
  145. void patron2() {
  146.   for (int i = 8; i >= 0; i--) {
  147.     encender_led(led[i], r[i], g[i], b[i]);
  148.   }
  149.   for (int i = 0; i < 8; i++) {
  150.     apagar_led(led[i], r[i], g[i], b[i]);
  151.   }
  152. }
  153.  
  154. void patron3() {
  155.   for (int i = 0; i < TOTAL_LED; i++) {
  156.     encender_led(led[i + 1], r[i], g[i], b[i]);
  157.     encender_led(led[i], r[i], g[i], b[i]);
  158.   }
  159.   for (int i = TOTAL_LED ; i >= 0; i--) {
  160.     encender_led(led[i], r[i], g[i], b[i]);
  161.   }
  162. }
  163.  
  164. void patron4() {
  165.   for (int i = 0; i < TOTAL_LED; i++) {
  166.     encender_led(led[i], r[i], g[i], b[i]);
  167.  
  168.   }
  169.   for (int i = 0; i < TOTAL_LED; i++) {
  170.     apagar_led(led[i], r[i], g[i], b[i]);
  171.   }
  172. }
  173.  
  174. void patron5() {
  175.   for (int i = 0; i < TOTAL_LED/2; i++) {
  176.     encender_led(led[i], r[i], g[i], b[i]);
  177.     encender_led(led[TOTAL_LED-i-1], r[i], g[i], b[i]);
  178.   }
  179.   for (int i = TOTAL_LED ; i >= 0; i--) {
  180.     apagar_led(led[i], r[i], g[i], b[i]);
  181.   }
  182. }
  183.  
  184. void patron6() {
  185.   for (int i = 0; i < TOTAL_LED/2; i++) {
  186.     encender_led(led[i], r[i], g[i], b[i]);
  187.     encender_led(led[4+i], r[i], g[i], b[i]);
  188.   }
  189.   for (int i = TOTAL_LED/2 ; i >= 0; i--) {
  190.     encender_led(led[8-i-1], r[i], g[i], b[i]);
  191.     encender_led(led[i], r[i], g[i], b[i]);
  192.   }
  193. }
  194.  
  195. void patron7() {
  196.   for (int i = 0; i < TOTAL_LED; i++) {
  197.     apagar_led(led[i], r[i], g[i], b[i]);
  198.   }
  199.   for (int i = TOTAL_LED ; i >= 0; i--) {
  200.     encender_led(led[i], r[i], g[i], b[i]);
  201.   }
  202. }
  203.  
  204. void patron8() {
  205.   for (int i = TOTAL_LED ; i >= 0; i--) {
  206.     apagar_led(led[i], r[i], g[i], b[i]);
  207.   }
  208.   for (int i = 0; i < TOTAL_LED; i++) {
  209.     apagar_led(led[i], r[i], g[i], b[i]);
  210.   }
  211. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement