Amigos, estoy con un proyecto de mi hijo y necesitamos ayuda con arreglar un pequeño código,
NO sabemos nada de estos temas soy Administrador de empresas y necesitamos hacer un Alcoholimetro, sucede que ya logré hacer el código.
La idea es que lea el código, lo despliegue en la pantalla, eso funciona, paralelamente si la lectura es superior a 4, encienda un buzzer y un led rojo, y si la lectura es menor a 4, mantener encendido un led verde.
lo que sucede mal es que cuando solo tengo en el código la parte desplegar la lectura funciona bien, pero cuando adjunto las líneas correspondientes al funcionamiento del buzzer y led, las lecturas me les agrega un UNO como prefijo de la lectura que no se de donde sale, por si me pueden ayudar a corregir.
Gracias
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2);
#define p_clk 3
#define p_rst 2
#define p_mq3 A0
int s_mq3,val_i=0;
byte i_acentuada[8] = {
0b00001,
0b00010,
0b00100,
0b00100,
0b00100,
0b00100,
0b00100,
0b00000
};
void setup()
{
lcd.init();
lcd.createChar(0, i_acentuada);
lcd.backlight();
Serial.begin(115200);
lcd.setCursor(2,0);
lcd.print("Alcohol");
lcd.write((uint8_t)0);
lcd.print("metro");
pinMode(p_clk,OUTPUT);
pinMode(p_rst,OUTPUT);
pinMode(13,OUTPUT); // Configura el Pin 13 como salida para un zumbador y como salida visual para la alarma
pinMode(12,OUTPUT);
digitalWrite(p_rst,1);
delay(1);
digitalWrite(p_rst,0);
for(int x=0;x<50;x++)
{
val_i=val_i+analogRead(p_mq3);
delay(10);
}
val_i=val_i/50;
Serial.println(val_i);
}
void loop() {
s_mq3 = analogRead(p_mq3);
Serial.print("ADC sensor = ");
Serial.println(s_mq3);
s_mq3 = map(s_mq3,val_i,900,0,9);
Serial.print("Nivel Alcohol = ");
Serial.println(s_mq3);
lcd.setCursor(0,1);
lcd.print("NA(0-9): ");
lcd.setCursor(10,1);
lcd.print(s_mq3);
if(s_mq3>0)
{
for(int x=1;x<=s_mq3;x++)
{
digitalWrite(p_clk,1);
delay(1);
digitalWrite(p_clk,0);
}
digitalWrite(p_rst,1);
delay(100);
digitalWrite(p_rst,0);
}
if(s_mq3<4) // Si la medida de alcohol es mayor de valor limite
digitalWrite(12, HIGH); // Enciende el zumbador conectado al Pin 13 y también este LED
else { // Si el valor de la medida de alcohol es menor al valor limite apaga el zumbador y al led del pin 13
digitalWrite(12, LOW); // Apaga el zumbador conectado al Pin 13 y también este LED
}
if(s_mq3>=4) // Si la medida de alcohol es mayor de valor limite
digitalWrite(13, HIGH); // Enciende el zumbador conectado al Pin 13 y también este LED
else { // Si el valor de la medida de alcohol es menor al valor limite apaga el zumbador y al led del pin 13
digitalWrite(13, LOW); // Apaga el zumbador conectado al Pin 13 y también este LED
}
delay (100);
}