Data hosted with ♥ by Pastebin.com - Download Raw - See Original
  1. /*
  2.  
  3. // Labo 4
  4. // Doriam Gomez Sarria
  5. // Universidad Santiago de Cali
  6. // Versión 1.0
  7.  ---------------------------------------------
  8.   LED RGB + Potenciómetro
  9.  ---------------------------------------------
  10.  
  11.   Programa que varia el color del LED según
  12.   el valor obtenido por unos potenciómetros.
  13.  
  14. */
  15.  
  16. //--------------------------------------------------
  17. //Declara puertos de entradas y salidas y variables
  18. //--------------------------------------------------
  19. int ledRojo = 9; //Declara Pin LED Rojo
  20. int ledVerde=10; //Declara Pin LED Verde
  21. int ledAzul=11;  //Declara Pin LED Azul
  22.  
  23. int pinPot0 = A0;  //Declara Pin Potenciometro Rojo
  24. int pinPot1 = A1;  //Declara Pin Potenciometro Verde
  25. int pinPot2 = A2;  //Declara Pin Potenciometro Azul
  26.  
  27. int valorsensor0 = 0;  //Valores analogicos de la salida del potenciometro
  28. int valorsensor1 = 0;  //   ||        ||            ||            ||
  29. int valorsensor2 = 0;  //   ||        ||            ||            ||
  30.  
  31. float divisionR;
  32. float divisionV;
  33. float divisionA;
  34.  
  35. //------------------------------------
  36. //Funcion principal
  37. //------------------------------------
  38. void setup() // Se ejecuta cada vez que el Arduino se inicia
  39. {
  40.   pinMode(ledRojo,OUTPUT);  //El LED Rojo como una salida
  41.   pinMode(ledVerde,OUTPUT); //El LED Verde como una salida
  42.   pinMode(ledAzul,OUTPUT);  //El LED Azul como una salida
  43.   Serial.begin(9600);
  44.  
  45. }
  46.  
  47. //------------------------------------
  48. //Funcion ciclicla
  49. //------------------------------------
  50. void loop() {
  51.  
  52.    // Llamada a la función Color que recibe
  53.    // 1er posicion: Intensidad Rojo
  54.    // 2da posición: Intensidad Verde
  55.    // 3ra posición: Intensidad Azul
  56.  
  57.    float Constante = (float) 255 / 1023;  //Divide el máximo valor de color entre el máximo valor del potenciómetro
  58.  
  59.    valorsensor0 = analogRead(pinPot0);
  60.    valorsensor1 = analogRead(pinPot1);
  61.    valorsensor2 = analogRead(pinPot2);
  62.  
  63.    divisionR = Constante * valorsensor0;    
  64.    divisionV = Constante * valorsensor1;
  65.    divisionA = Constante * valorsensor2;
  66.  
  67.    color(divisionR,divisionV,divisionA);     // Carga un valor para (ROJO,VERDE,AZUL)
  68.                                              //segun el valor de tres potenciómetros.
  69.  
  70. }
  71.  
  72. //------------------------------------
  73. //Funcion color
  74. //------------------------------------
  75.  
  76. void color(int rojo, int verde, int azul){
  77.  
  78.     //ROJO. Le resta al total (255) el valor obtenido de los potenciometros
  79.     analogWrite(ledRojo, 255-rojo);
  80.  
  81.     //VERDE. Le resta al total (255) el valor obtenido de los potenciometros
  82.     analogWrite(ledVerde, 255-verde);
  83.  
  84.     //AZUL. Le resta al total (255) el valor obtenido de los potenciometros
  85.     analogWrite(ledAzul, 255-azul);
  86. }