Você está na página 1de 6

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.

Herramientas usadas
 Arduino Droid o Arduino Code para escribir el código
 Cable para conexión 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 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 Droid.
Nota: Si se usa "Serial" para imprimir contenido en el monitor, la salida digital A0 y A1, quedan
automáticamente programadas para salida serial, como yo necesitaba una salida digital más,
comente las líneas 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 ledPins[] = {2,3,4,5,6,7,8,9,10,11};


int buttonSave = 0;
int buttonRead = 0;
int 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();
}
}

Circuito creado en Fritzing

Dibuje el circuito desde Fritzing y lo hice en dos partes para no amontonar componentes y que
estén bien visibles, por si en algún momento alguien sigue estos pasos para armar el suyo
propio, no se pierda viendo solo imágenes.
Esta es la parte donde se conectan todas las salidas del Arduino al protoboard donde se
encuentran incrustados los leds.

Y aquí está por separado lo que conecta al sensor y los botones push.
Imágenes

Você também pode gostar