Hola no soy muy entendido en el tema y quisiera que me ayuden con mi proyecto. Estoy haciendo un alcoholimetro y le quiero agregar un relay que se active para cierto grado del sensor mq3.
El programa que estoy usando es este
{
// LED[0] = 2, LED[1] = 3, ... , LED[9]=11.
pinMode(LED[cuenta], OUTPUT);
}
}
void loop()
{
// Leemos el valor del sensor de alcohol
lectura_sensor = analogRead(sensor_alcohol);
// Ajustamos el máximo y mínimo en la lectura del sensor
lectura_sensor = constrain (lectura_sensor, minimo, maximo);
// Mostramos el valor del sensor a través del monitor serie
Serial.println(lectura_sensor);
delay(1000);
// Mapeamos el valor del sensor a niveles del 0 al 10
nivel_alcohol = map(lectura_sensor, minimo, maximo, 0, numero_LEDS);
// Se encienden los LEDS de la barra de LEDS dependiendo del nivel obtenido
for (cuenta = 0; cuenta < numero_LEDS; cuenta++)
{
if (cuenta < nivel_alcohol)
{
digitalWrite(LED[cuenta], HIGH);
}
else
{
digitalWrite(LED[cuenta], LOW);
}
}
}
Para comenzar, si eres universitario, presentas mal tu problema.
Deberías presesntar :
Un link del sensor utilizado.
Un esquema de como esta todo conectado.
La investigación realizada sobre el sensor.
Y un código con fallas pero al menos mediamente completo
No hay nada de lo anterior.
El código esta incompleto o lo copiaste mal porque le falta la definición de variables.
#define numero_LEDS 10
const byte LED[numero_LEDS] = {2,3,4,5,6,7,8,9,10,11};
const byte sensor_alcohol = A0;
int minimo = 0;
int maximo = 100;
int nivel_alcohol;
unsigned int lectura_sensor;
void setup() {
// LED[0] = 2, LED[1] = 3, ... , LED[9]=11.
for (int i = 0; i<10; i++)
pinMode(LED[i], OUTPUT);
}
void loop() {
// Leemos el valor del sensor de alcohol
lectura_sensor = analogRead(sensor_alcohol);
// Ajustamos el máximo y mínimo en la lectura del sensor
lectura_sensor = constrain (lectura_sensor, minimo, maximo);
// Mostramos el valor del sensor a través del monitor serie
Serial.println(lectura_sensor);
delay(1000);
// Mapeamos el valor del sensor a niveles del 0 al 10
nivel_alcohol = map(lectura_sensor, minimo, maximo, 0, numero_LEDS);
// Se encienden los LEDS de la barra de LEDS dependiendo del nivel obtenido
for (int cuenta = 0; cuenta < numero_LEDS; cuenta++) {
if (cuenta < nivel_alcohol) {
digitalWrite(LED[cuenta], HIGH);
}
else {
digitalWrite(LED[cuenta], LOW);
}
}
}
NOTA: no envies privados solicitando ayuda, para eso esta el foro, como te lo indiqué oportunamente.
Lee las Normas del foro.
const int sensor_alcohol = 0; // Pin digital para el sensor del alcohol
const int LED[] = {2,3,4,5,6,7,8,9,10,11}; // Pines digitales para los 10 LEDS
int numero_LEDS = 10; // Número de LEDS de la barra
int cuenta; // Variable para el índice de la matriz de LEDS
int lectura_sensor; // Variable que guarda el valor del sensor (300-750)
int nivel_alcohol; // Variable que guarda el nivel mapeado de alcohol
// Valores máximo y mínimo de la lectura del sensor
int minimo = 400 ;
int maximo = 1000;
int relayPin= 12;
void setup()
{
Serial.begin(9600); // Comienzo de la comunicación serie
// Declaramos los pines digitales para los LEDS como salidas
for (int cuenta = 0; cuenta < numero_LEDS; cuenta++)
{
// LED[0] = 2, LED[1] = 3, ... , LED[9]=11.
pinMode(LED[cuenta], OUTPUT);
pinMode(relayPin, OUTPUT);
}
}
void loop()
{
// Leemos el valor del sensor de alcohol
lectura_sensor = analogRead(sensor_alcohol);
// Ajustamos el máximo y mínimo en la lectura del sensor
lectura_sensor = constrain (lectura_sensor, minimo, maximo);
// Mostramos el valor del sensor a través del monitor serie
Serial.println(lectura_sensor);
delay(1000);
digitalWrite(relayPin, LOW);
delay(1000);
digitalWrite(relayPin, HIGH);
delay(1000);
// Mapeamos el valor del sensor a niveles del 0 al 10
nivel_alcohol = map(lectura_sensor, minimo, maximo, 0, numero_LEDS);
// Se encienden los LEDS de la barra de LEDS dependiendo del nivel obtenido
for (cuenta = 0; cuenta < numero_LEDS; cuenta++)
{
if (cuenta < nivel_alcohol)
{
digitalWrite(LED[cuenta], HIGH);
}
Sigo observando que tu sigues copiando códigos de algun sitio sin sentido!!
Comprendo que no sepas, pero cuando no sabes que se hace?
Se estudia, se aprende, se establece una base minima para saber que se esta haciendo y tener un mínimo grado de autosuficiencia. No te reto porque no soy nadie para hacerlo, solo te aconsejo lo mejor para resolver este y otros problemas con mas velocidad.
Ve a Documentación y mira los tutoriales de Youtube o busca alguno de los libros gratuitos disponibles.
Lee o mira los tutoriales y luego vuelve a la carga.
Ahora te explico porque te pido que hagas eso!!
Lo que acabas de postear por segunda vez luce como un simple copio y pega sin ningún cuidado de tu parte (entiendas o no) porque ese código no compila. Le faltan llaves al final.
El código enciend y solo enciende LEDs al final lo prueba
for (cuenta = 0; cuenta < numero_LEDS; cuenta++)
{
if (cuenta < nivel_alcohol)
{
digitalWrite(LED[cuenta], HIGH);
}
Falta llave para terminar el for.
Falta llave para terminar el loop.
Los leds nunca se apagan asi que los que se vayan encendiendo quedarán asi.
Suena a un excelente proyecto, pero como te menciona Surbyte, cuando el problema es complejo y a pesar de que te querramos ayudar, no podemos hacerlo sin las herramientas; fotos, videos, diagramas, un codigo bien documentado.