Advertisement
Guest User

Captura intensidad luminosa -Final

a guest
Nov 26th, 2015
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.10 KB | None | 0 0
  1.  
  2. /** Proyecto Final**
  3.   * Programación de sistemas embebidos
  4.   * Profesor: Diego Marin
  5.   * Estudiante: Edwin Lobo Hernandez
  6.   * Descripción: Capturar el nivel de intensidad de luz en un
  7.   * lugar cerrado mostrando a través de un color la intensidad
  8.   * de la luz siendo rojo la mas alta, azul nivel medio y la verde la más minima
  9.    
  10. /**************** Constantes ************/
  11. #define PH_CELL A0
  12. #define RGB 3
  13. /*************** Variables *************/
  14.  
  15. // Asigna los pines PWM 9, 10, 11 a los tres colores
  16. int red = 6;
  17. int green = 5;
  18. int blue = 3;
  19.  
  20. // Contenedor de los pines Red, Green, Blue
  21. int rgb[RGB] = {6, 5, 3};
  22.  
  23. /*********** COnfiguración **************/
  24.  
  25. void setup() {
  26.   // COmunicación serial a 9600 baudios
  27.   Serial.begin(9600);
  28.   // Configura los tres pines de salida
  29.   int pos = 0;
  30.   while ( pos > RGB ){
  31.     pinMode( rgb[pos], OUTPUT);
  32.     pos ++;
  33.   }
  34.   // COnfigura el pin analogo de la Fotocelda
  35.   pinMode( PH_CELL, INPUT );
  36. }
  37.  
  38.  
  39. /************ Ciclo *************/
  40.  
  41. void loop() {
  42.   // Declara el valor analogo capturado por la fotocelda  
  43.   int aPhCell = analogRead(PH_CELL);
  44.   // Mapea el valor analogo a un valor digital
  45.   int digitalValue = map(aPhCell, 0, 11, 253, 255);
  46.  
  47.   /** Compara en cada caso, si la intensidad es verde (minima)
  48.   /** si es azul (media) o si es roja (alta)
  49.   */
  50.   switch(digitalValue){
  51.     case 253:
  52.         apagar(); // Apaga todos los colores del LED RGB
  53.         analogWrite( green, digitalValue ); // Enciende solo el color que corresponda
  54.         break;
  55.     case 254:
  56.         apagar();
  57.         analogWrite( blue, digitalValue );
  58.         break;
  59.     case 255:
  60.         apagar();
  61.         analogWrite( red, digitalValue );
  62.         break;
  63.   }
  64.  
  65.         // Imprime en el monitor serial
  66.         Serial.print(aPhCell);
  67.         Serial.print("  ");
  68.         Serial.println(digitalValue);
  69.          
  70. }
  71.  
  72.  
  73. /********** Funciones *************/
  74.  
  75. // Función que apaga completamente el LED RGB
  76. void apagar(){
  77.   for (int i = 0; i <= RGB; i++){
  78.     digitalWrite( rgb[i], LOW  );
  79.   }
  80. }
  81.  
  82. /************ FIN ********************/
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement