[go: up one dir, main page]

0% encontró este documento útil (0 votos)
986 vistas8 páginas

Alcoholímetro DIY con Arduino

Este proyecto crea un alcoholímetro que usa un sensor MQ-3 para detectar el nivel de alcohol en el aliento de una persona. Los niveles se indican encendiendo LEDs de colores diferentes, con verde para bajo nivel, amarillo para nivel medio y rojo para nivel alto. El dispositivo también incluye botones para guardar y ver los tres últimos niveles detectados.

Cargado por

PANDAEL
Derechos de autor
© Attribution Non-Commercial (BY-NC)
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
986 vistas8 páginas

Alcoholímetro DIY con Arduino

Este proyecto crea un alcoholímetro que usa un sensor MQ-3 para detectar el nivel de alcohol en el aliento de una persona. Los niveles se indican encendiendo LEDs de colores diferentes, con verde para bajo nivel, amarillo para nivel medio y rojo para nivel alto. El dispositivo también incluye botones para guardar y ver los tres últimos niveles detectados.

Cargado por

PANDAEL
Derechos de autor
© Attribution Non-Commercial (BY-NC)
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 8

Alcoholmetro con Arduino

Descripcin
La idea es crear un alcoholmetro, que mediante el sensor, se reciba como dato el grado o nivel de alcohol de la persona que sopla frente al sensor. Segn el nivel o grado de alcohol detectado por el sensor, se encendern de 1 a 10 leds de diferentes colores, empezando con el verde, que indica un bajo nivel de alcohol, amarillo un nivel medio y rojo un nivel alto.

Adems como muchos alcoholmetros porttiles o de mano ofrecen la opcin de guardar el estado actual de alcohol, tambin agregue dos botones, uno es para guardar el estado marcado actualmente por el sensor, y el segundo es para ver los estados guardados, que son tres, aunque pudieron haber sido ms. Al picar el botn para ver los estados guardados por primera vez, se muestra el estado recin guardado, al picar por segunda vez, se ve el penltimo estado, y al picar por tercera vez se muestra el antepenltimo, y para salir de vuelve a picar por cuarta vez, y volver a recibir informacin del sensor.

Herramientas usadas

Arduino IDE en Ubuntu 11.10 Cable para conexin USB Arduino Uno

Material utilizado

4 leds de 5mm, color verde difuso 3 leds de 5mm, color amarillo difuso 3 leds de 5mm, color rojo difuso 1 led de 5mm, color amarillo 11 resistencias de 330 ohms 3 resistencias de 10K ohms 2 micro switch, de push, con 4 terminales 1 sensor de alcohol MQ-3 Arduino Uno Cables de interconexin macho-macho de 6 pulgadas

Cdigo
Este es el cdigo completo de mi proyecto. Las partes que estn en comentarios fueron utilizadas como prueba para la consola del monitor serial desde el Arduino IDE. Nota: Si se usa "Serial" para imprimir contenido en el monitor, la salida digital A0 y A1, quedan automticamente programadas para salida serial, como yo necesitaba una salida digital ms, comente las lneas de salida serial, para tener dos salidas digitales extras.
#include <EEPROM.h> const int analogSensor = 0; const int ledCount = 10; const int ledSave = 0; const int pushButtonSave = 12; const int pushButtonRead = 13; int int int int ledPins[] = {2,3,4,5,6,7,8,9,10,11}; buttonSave = 0; buttonRead = 0; buttonCount = 0;

void setup() { //Serial.begin(9600); pinMode(ledSave, OUTPUT); pinMode(pushButtonSave, INPUT);

pinMode(pushButtonRead, INPUT); for (int thisLed = 0; thisLed < ledCount; thisLed++) { pinMode(ledPins[thisLed], OUTPUT); } } void guardar(int value) { int temp1 = EEPROM.read(0); int temp2 = EEPROM.read(1); EEPROM.write(0, value); EEPROM.write(1, temp1); EEPROM.write(2, temp2); //Serial.println("guardado"); delay(2000); } void mostrar() { while (true) { buttonRead = digitalRead(pushButtonRead); if (buttonRead == HIGH) { if (buttonCount < 3) { int dataReaded = EEPROM.read(buttonCount); //Serial.print(buttonCount); //Serial.print("\t"); //Serial.println(dataReaded); for (int ledHigh = 0; ledHigh < ledCount; ledHigh++) { if (ledHigh < dataReaded) { digitalWrite(ledPins[ledHigh], HIGH); } else { digitalWrite(ledPins[ledHigh], LOW); } } buttonCount++; delay(500); } else { break; } } } buttonCount = 0; delay(500); }

void loop() { int dataLevel = map(analogRead(analogSensor), 700, 900, 0, ledCount); if (dataLevel < 0) { dataLevel = 0; } if (dataLevel > 10) { dataLevel = 10; } //Serial.println(dataLevel); for (int ledHigh = 0; ledHigh < ledCount; ledHigh++) { if (ledHigh < dataLevel) { digitalWrite(ledPins[ledHigh], HIGH); } else { digitalWrite(ledPins[ledHigh], LOW); } } buttonSave = digitalRead(pushButtonSave); if (buttonSave == HIGH) { digitalWrite(ledSave, HIGH); guardar(dataLevel); } else { digitalWrite(ledSave, LOW); } buttonRead = digitalRead(pushButtonRead); if (buttonRead == HIGH) { mostrar(); } }

Conexiones

Vdeo

También podría gustarte