Data hosted with ♥ by Pastebin.com - Download Raw - See Original
  1. /** Estudiante: Edwin Lobo Hernandez
  2.   * Profesor: Diego Marin
  3.   * Laboratorio 9
  4.   * DescripciĆ³n del laboratorio: Crear una interfaz con proccessing que controle un modulo de 8 LED's RGB
  5. */
  6.  
  7. /********** Variables **********/
  8. // se nombran las variables y sus respectivos pines
  9.  
  10. #define TOTAL 8
  11. #define MAX 8
  12.  
  13. //Declaracion de pines y de arreglos
  14. // Conectamos el LED a los pines,9,10,11 que es PWM
  15.  
  16. // salida pwm  para el color rojo
  17. int pin_r = 4;
  18. // salida pwm  para el color azul
  19. int pin_b = 3;
  20. // salida pwm  para el color verde
  21. int pin_g = 2;
  22.  
  23.  
  24. // Indica los pines en el que debe estar conectado el modulo
  25.  
  26. int led[TOTAL] = { 5, 6, 7, 8, 9, 10, 11, 12};
  27.  
  28. // Se inicializan los datos de cada variable de color
  29.  
  30. int R[TOTAL]={0,0,0,0,0,0,0,0};
  31. int G[TOTAL]={0,0,0,0,0,0,0,0};
  32. int B[TOTAL]={0,0,0,0,0,0,0,0};
  33.  
  34. // Variables de cada componenten Inicializadas
  35.  
  36. int pos = 0;
  37. int color = 0;
  38. int estado = 0;
  39. String str = "";
  40.  
  41.  /********** Configuracion **********/
  42. void setup() {
  43.  
  44.  //comunicacion serial sera a 9600 baudios y pines inicializados con sus estados
  45.  
  46.   Serial.begin(9600);
  47.   for (int i = 0; i < TOTAL; i++) {
  48.   pinMode(led[i], OUTPUT);
  49.   digitalWrite(led[i], HIGH);
  50.   }
  51.  
  52.   // se configuran las salidas PWM usadas
  53.     // pin de salida, color rojo
  54.  
  55.   pinMode(pin_r, OUTPUT);
  56.   digitalWrite(pin_r, HIGH);
  57.  
  58.   // pin de salida, color verde
  59.   pinMode(pin_g, OUTPUT);
  60.   digitalWrite(pin_g, HIGH);
  61.  
  62.   // pin de salida, color azul
  63.   pinMode(pin_b, OUTPUT);
  64.   digitalWrite(pin_b, HIGH);
  65. }
  66.   /********** Ciclo Principal **********/
  67.  // Solo se ejecuta una vez, al iniciar o resetear el Arduino
  68. // Ciclo infinito de ejecucion
  69.  
  70. void loop() {
  71.   leerSerial();
  72.   for (int i=0; i<TOTAL; i++) {
  73.     encender(led[i], R[i], G[i], B[i]);
  74.   }
  75. }
  76.     // aqui se condiciona si el valor enviado  para
  77.     // la intensidad del pin R, G o B del modulo
  78.    
  79. //metodo necesario para leer la informacion serial
  80.  
  81. void leerSerial() {
  82.   if (Serial.available() > 0) {
  83.     str = Serial.readString();
  84.     pos = int(str[1] - '0');
  85.     estado = int(str[2] - '0');
  86.     switch (str[0]) {
  87.       case 'r': R[pos] = estado; break;;
  88.       case 'g': G[pos] = estado; break;;
  89.       case 'b': B[pos] = estado; break;; }}}
  90.      
  91. //metodo para encender cada led deacuardo al pin usado
  92. void encender (int pin_led, int r, int g, int b)
  93. {
  94.   digitalWrite(pin_led, LOW);
  95.   digitalWrite(pin_r, r == 0 ? HIGH : LOW);
  96.   digitalWrite(pin_g, g == 0 ? HIGH : LOW);
  97.   digitalWrite(pin_b, b == 0 ? HIGH : LOW);
  98.  
  99.   delay(2);
  100.  
  101.   digitalWrite(pin_led, HIGH);
  102.   digitalWrite(pin_r, HIGH);
  103.   digitalWrite(pin_g, HIGH);
  104.   digitalWrite(pin_b, HIGH);
  105. }
  106.  
  107.     /*********** Fin**************/