Advertisement
Villalba2006

POST_38

Nov 25th, 2016
7,527
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 4.60 KB | None | 0 0
  1. /*  TITULO: Alcoholímetro con sensor de gas MQ-3.
  2.  
  3.     AUTOR:
  4.    
  5.     MARIANO DEL CAMPO GARCÍA (@2016) --> INGENIERO TÉCNICO INDUSTRIAL ESPECIALIDAD ELECTRÓNICA
  6.     - FACEBOOK: https://www.facebook.com/mariano.delcampogarcia
  7.     - TWITTER: https://twitter.com/MarianoCampoGa
  8.     - CORREO: marianodc83@gmail.com
  9.    
  10.    
  11.     DESCRIPCIÓN DEL PROGRAMA
  12.    
  13.     Con este programa controlamos el encendido y apagado de los LED de una barra de 10 LEDS, mediante
  14.     la cantidad de alcohol en aire que le llega al sensor de gas MQ-3, conectado a la entrada analógica
  15.     A0 de Arduino. Se encenderán todos los lEDS para un valor máximo de 750 y permanecerán apagados para
  16.     un valor mínimo de 300 (en ausencia de alcohol). Para valores intermedios entre 300 y 750 se encenderán
  17.     una cantidad de LEDS proporcional al valor obtenido.
  18.    
  19.    
  20.     ESQUEMA DE CONEXION
  21.    
  22.                                       +-----+
  23.          +----[PWR]-------------------| USB |--+
  24.          |                            +-----+  |
  25.          |         GND/RST2  [ ][ ]            |
  26.          |       MOSI2/SCK2  [ ][ ]  A5/SCL[ ] |    
  27.          |          5V/MISO2 [ ][ ]  A4/SDA[ ] |    
  28.          |                             AREF[ ] |
  29.          |                              GND[ ] |
  30.          | [ ]N/C                    SCK/13[ ] |  
  31.          | [ ]IOREF                 MISO/12[ ] |  
  32.          | [ ]RST                   MOSI/11[ ]~|   Pin 1 de la barra de 10 LEDS
  33.          | [ ]3V3    +---+               10[ ]~|   Pin 2 de la barra de 10 LEDS
  34.          | [ ]5v    -| A |-               9[ ]~|   Pin 3 de la barra de 10 LEDS
  35.          | [ ]GND   -| R |-               8[ ] |   Pin 4 de la barra de 10 LEDS
  36.          | [ ]GND   -| D |-                    |
  37.          | [ ]Vin   -| U |-               7[ ] |   Pin 5 de la barra de 10 LEDS
  38.          |          -| I |-               6[ ]~|   Pin 6 de la barra de 10 LEDS
  39.    AOUT  | [ ]A0    -| N |-               5[ ]~|   Pin 7 de la barra de 10 LEDS
  40.          | [ ]A1    -| O |-               4[ ] |   Pin 8 de la barra de 10 LEDS
  41.          | [ ]A2     +---+           INT1/3[ ]~|   Pin 9 de la barra de 10 LEDS
  42.          | [ ]A3                     INT0/2[ ] |   Pin 10 de la barra de 10 LEDS
  43.          | [ ]A4/SDA  RST SCK MISO     TX>1[ ] |  
  44.          | [ ]A5/SCL  [ ] [ ] [ ]      RX<0[ ] |  
  45.          |            [ ] [ ] [ ]              |
  46.          |  UNO_R3    GND MOSI 5V  ____________/
  47.           \_______________________/
  48.  
  49.   NOTAS:
  50.    
  51.    - Conexión del sensor MQ-3:
  52.       - VCC --> +5V.
  53.       - GND --> GND.
  54.       - AOUT --> Pin analógico A0 de Arduino.
  55.    - Pines del 11 al 20 de la barra de 10 LEDS a GND a través de una R=220 omhs (diferente para cada pin).
  56.    - Utilizamos un potenciómetro lineal de 10K ohms.
  57.    - Denomínamos a los terminales del potenciómetro como P1, P2 y P3 (donde P2 es el terminal central).    
  58.       - P1 conectado a VCC.
  59.       - P3 conectado a GND.
  60.        
  61. */
  62.  
  63.   const int sensor_alcohol = 0;  // Pin digital para el sensor del alcohol
  64.   const int LED[] = {2,3,4,5,6,7,8,9,10,11}; // Pines digitales para los 10 LEDS
  65.   int numero_LEDS = 10;    // Número de LEDS de la barra
  66.   int cuenta;  // Variable para el índice de la matriz de LEDS
  67.   int lectura_sensor; // Variable que guarda el valor del sensor (300-750)
  68.   int nivel_alcohol; // Variable que guarda el nivel mapeado de alcohol
  69.   // Valores máximo y mínimo de la lectura del sensor
  70.   int minimo = 300 ;
  71.   int maximo = 750;
  72.  
  73.   void setup()
  74.   {
  75.     Serial.begin(9600); // Comienzo de la comunicación serie
  76.    
  77.     // Declaramos los pines digitales para los LEDS como salidas
  78.     for (int cuenta = 0; cuenta < numero_LEDS; cuenta++)
  79.     {
  80.       // LED[0] = 2, LED[1] = 3, ... , LED[9]=11.
  81.       pinMode(LED[cuenta], OUTPUT);
  82.     }
  83.   }
  84.  
  85.   void loop()
  86.   {
  87.     // Leemos el valor del sensor de alcohol
  88.     lectura_sensor = analogRead(sensor_alcohol);
  89.     // Ajustamos el máximo y mínimo en la lectura del sensor
  90.     lectura_sensor = constrain (lectura_sensor, minimo, maximo);
  91.     // Mostramos el valor del sensor a través del monitor serie
  92.     Serial.println(lectura_sensor);
  93.     delay(20);  
  94.    
  95.     // Mapeamos el valor del sensor a niveles del 0 al 10
  96.     nivel_alcohol = map(lectura_sensor, minimo, maximo, 0, numero_LEDS);
  97.    
  98.     // Se encienden los LEDS de la barra de LEDS dependiendo del nivel obtenido
  99.     for (cuenta = 0; cuenta < numero_LEDS; cuenta++)
  100.     {
  101.       if (cuenta < nivel_alcohol)
  102.       {
  103.         digitalWrite(LED[cuenta], HIGH);
  104.       }
  105.  
  106.       else
  107.       {
  108.         digitalWrite(LED[cuenta], LOW);
  109.       }  
  110.     }
  111.   }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement