Alcoholímetro con Arduino

Descripción
La idea es crear un alcoholímetro, que mediante el sensor, se reciba como dato el grado o nivel de alcohol de la persona que sopla frente al sensor. Según el nivel o grado de alcohol detectado por el sensor, se encenderán 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.

Además como muchos alcoholímetros portátiles o de mano ofrecen la opción de guardar el estado actual de alcohol, también 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 más. Al picar el botón para ver los estados guardados por primera vez, se muestra el estado recién guardado, al picar por segunda vez, se ve el penúltimo estado, y al picar por tercera vez se muestra el antepenúltimo, y para salir de vuelve a picar por cuarta vez, y volver a recibir información del sensor.

8.11}. OUTPUT). const int ledSave = 0.begin(9600). como yo necesitaba una salida digital más. int int int int ledPins[] = {2.6.9. const int pushButtonRead = 13. quedan automáticamente programadas para salida serial.4. comente las líneas de salida serial. buttonCount = 0.7. para tener dos salidas digitales extras. color amarillo 11 resistencias de 330 ohms 3 resistencias de 10K ohms 2 micro switch. color rojo difuso 1 led de 5mm. color amarillo difuso 3 leds de 5mm. const int ledCount = 10. pinMode(ledSave. void setup() { //Serial. #include <EEPROM. const int pushButtonSave = 12. .h> const int analogSensor = 0.Herramientas usadas    Arduino IDE en Ubuntu 11.10 Cable para conexión USB Arduino Uno Material utilizado           4 leds de 5mm. buttonRead = 0. Nota: Si se usa "Serial" para imprimir contenido en el monitor.10. pinMode(pushButtonSave. buttonSave = 0. INPUT).5.3. con 4 terminales 1 sensor de alcohol MQ-3 Arduino Uno Cables de interconexión macho-macho de 6 pulgadas Código Este es el código completo de mi proyecto. Las partes que están en comentarios fueron utilizadas como prueba para la consola del monitor serial desde el Arduino IDE. color verde difuso 3 leds de 5mm. de push. la salida digital A0 y A1.

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

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

Conexiones .

.

.

Vídeo .

Sign up to vote on this title
UsefulNot useful