Advertisement
Guest User

Codigo arduino laborotorio #9

a guest
May 28th, 2015
301
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.37 KB | None | 0 0
  1.  
  2. /** Laboratorio #9: Controlar desde una interfaz en Processing, el
  3.  * patrón de movimiento y colores en un módulo de 8 LEDs RGB
  4.  * controlado con un Arduino
  5.  * Autor: Sebastian Palacios Tovar
  6.  */
  7.  
  8. #define TOTAL_LED   8 // Total LEDs RGB
  9.  
  10.  
  11.  
  12. int led[TOTAL_LED] = {
  13.   2, 3, 4, 5, 6, 7, 8, 9
  14. };
  15.  
  16. int pin_r = 11;
  17. int pin_g = 12;
  18. int pin_b = 13;
  19.  
  20. //colores
  21. int r[TOTAL_LED] = {1, 0, 0, 1, 0, 1, 0, 1};
  22. int g[TOTAL_LED] = {0, 1, 0, 1, 1, 0, 0, 1};
  23. int b[TOTAL_LED] = {0, 0, 1, 0, 1, 1, 0, 1};
  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.   Serial.println("Iniciando Lab. 08");
  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); // ROJO
  47.   digitalWrite(pin_r, HIGH);
  48.   pinMode(pin_g, OUTPUT); // VERDE
  49.   digitalWrite(pin_r, HIGH);
  50.   pinMode(pin_b, OUTPUT); // AZUL
  51.   digitalWrite(pin_r, HIGH);
  52.  
  53. }
  54.  
  55. void loop() {
  56.  
  57.  
  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.  
  68.   if (val == 1) {
  69.     secuencia1();
  70.   }
  71.   if (val == 2) {
  72.     secuencia2();
  73.   }
  74.   if (val == 3) {
  75.     secuencia3();
  76.   }
  77.   if (val == 4) {
  78.     secuencia4();
  79.   }
  80.   if (val == 5) {
  81.     secuencia5();
  82.   }
  83.   if (val == 6) {
  84.     secuencia6();
  85.   }
  86.   if (val == 7) {
  87.     secuencia7();
  88.   }
  89.   if (val == 8) {
  90.     secuencia8();
  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.  
  139. void secuencia0() {
  140.   for (int i = 0; i < TOTAL_LED; i++) {
  141.     encendido(led[i], r[i], g[i], b[i]);
  142.   }
  143. }
  144.  
  145. void secuencia1() {
  146.   for (int i = 0; i < TOTAL_LED; i++) {
  147.     encender_led(led[i], r[i], g[i], b[i]);
  148.   }
  149. }
  150.  
  151. void secuencia2() {
  152.   for (int i = TOTAL_LED ; i >= 0; i--) {
  153.     encender_led(led[i], r[i], g[i], b[i]);
  154.   }
  155. }
  156.  
  157. void secuencia3() {
  158.   for (int i = 0; i < TOTAL_LED; i++) {
  159.     encender_led(led[i + 1], r[i], g[i], b[i]);
  160.     encender_led(led[i], r[i], g[i], b[i]);
  161.   }
  162. }
  163.  
  164. void secuencia4() {
  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 = TOTAL_LED ; i >= 0; i--) {
  170.     encender_led(led[i], r[i], g[i], b[i]);
  171.   }
  172. }
  173.  
  174. void secuencia5() {
  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/2 ; i >= 0; i--) {
  180.     encender_led(led[TOTAL_LED-i-1], r[i], g[i], b[i]);
  181.     encender_led(led[i], r[i], g[i], b[i]);
  182.   }
  183. }
  184.  
  185. void secuencia6() {
  186.     for (int i = 0; i < TOTAL_LED/2; i++) {
  187.     encender_led(led[i], r[i], g[i], b[i]);
  188.     encender_led(led[(TOTAL_LED/2)+i], r[i], g[i], b[i]);
  189.   }
  190. }
  191.  
  192. void secuencia7() {
  193.   for (int i = 0; i < TOTAL_LED; i++) {
  194.     apagar_led(led[i], r[i], g[i], b[i]);
  195.   }
  196.     for (int i = TOTAL_LED ; i >= 0; i--) {
  197.     apagar_led(led[i], r[i], g[i], b[i]);
  198.   }
  199. }
  200.  
  201. void secuencia8() {
  202.   for (int i = 0; i < TOTAL_LED; i++) {
  203.     encender_led(led[i], r[i], g[i], b[i]);
  204.   }
  205.     for (int i = 0; i < TOTAL_LED; i++) {
  206.     apagar_led(led[i], r[i], g[i], b[i]);
  207.   }
  208. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement