Controlando un ventilador con LM35 sensor de temperatura.

Tengo que hacer la siguiente programación.

a) Si la temp < 24°C —> Led 1 ON/OFF

b) Si la temp > 24°C y temp <26°C —> Motor ON y Led 2 ON/OFF

c) Si la temp > 26°C —> Led 3 ON/OFF y Buzzer ON.

Les agradecería su ayuda, soy principiante en esto de programar y todavía tengo muchas dudas al respecto.

Gracias!

Y como quieres encararlo? comienza definiendo tus variables. Asigna pines a cada uno de los elementos involucrados LED1, LED2, LED3 BUZZER y MOTOR

tienes 5 salidas Ademas tienes una entrada Analógica que puedes conectar al pin A0. O sea LM35 se va a leer con pin A0

Luego en el setup() Defines cada pin como Salida para LED1, LED2, LED3 BUZZER y MOTOR

en el loop()

Debes leer LM35 y luego en función de su valor cumplir con las condiciones que planteaste.

Veamos como lo encaras.

Sí, ya he comenzado. Mi duda la tengo en la parte b) no sé como lo condiciono para las dos temperaturas. Así es como lo llevo…

float temperatura = 0; //variable para la temperatura
int motor = 8; //pin digital donde conectar el ventildor
int led1=10;
int led2=11;
int led3=12;
int buzzer=9;
void setup(){

Serial.begin (9600); //inicia comunicacion serial

pinMode (motor,OUTPUT);
pinMode (led1,OUTPUT);
pinMode (led2,OUTPUT);
pinMode (led3,OUTPUT);
pinMode (buzzer,OUTPUT);

}

void loop(){
//Calcula la temperatura usando como referencia 5v
temperatura = (5.0 * analogRead(0)*100.0)/1023.0;
Serial.println (temperatura); //escribe la temperatura en el serial
delay (500); //tiempo para la siguiente medicion

//esto enciende y apaga el ventlador
if (temperatura < 24){
digitalWrite (led1,HIGH);
delay (500);
digitalWrite (led1,LOW);

if (temperatura > 24)
{
digitalWrite (led2,HIGH);
delay (500);
digitalWrite (led2,LOW);

digitalWrite (motor,HIGH);
}

Para la segunda condición, necesitas usar el operador &&

if (temperatura > 24 && temperatura < 26)

Ten en cuenta, que tus condiciones no prevén unas cuantas cosas.

  • Si la temperatura es = 24, no pasa nada. Quizá sería interesante que por ejemplo en la segunda condición, empezase con
temperatura >= 24

para tener cuberta esa condición.

  • Lo mismo pasa con la temperatura = 26, que no se cubre esa posibilidad, con lo que la segunda condición, podría continuar así:
&& temperatura <= 26
  • En la tercera condición, no se contempla que el motor esté en marcha, ¿tiene que ser así?

En la tercera condición el motor debe estar apagado.

Ahora que ya te has esforzado, si podemos darte un empujoncito
Repasemos

a) Si la temp < 24°C —> Led 1 ON/OFF
b) Si la temp > 24°C y temp <26°C —> Motor ON y Led 2 ON/OFF
c) Si la temp > 26°C —> Led 3 ON/OFF y Buzzer ON.

#define N 50   // Cantidad de muestras de temperatura. Modificar a gusto


float temperatura = 0; //variable para la temperatura
int motor = 8; //pin digital donde conectar el ventildor
int led1=10;
int led2=11;
int led3=12;
int buzzer=9;
unsigned long suma = 0;

void setup(){

 Serial.begin (9600); //inicia comunicacion serial

 pinMode (motor,OUTPUT);
 pinMode (led1,OUTPUT);
 pinMode (led2,OUTPUT);
 pinMode (led3,OUTPUT);
 pinMode (buzzer,OUTPUT);
 
}
 
void loop(){
//Calcula la temperatura usando como referencia 5v
// promedia N valores
 for (int i=0; i<N; i++) 
      suma += analogRead(A0);
 temperatura = (500.0 * suma/(1023.0*N); // suma/N es el valor del AD promedidado N veces

Serial.println (temperatura); //escribe la temperatura en el serial
// como tomo el promedio de muchas lecturas no hace falta tener delay entre muestra y muestra

//esto enciende y apaga el ventlador
if (temperatura < 24){ // Led 1 ON/OFF
  digitalWrite (led1,HIGH);
  delay (500);
  digitalWrite (led1,LOW);
}
if (temperatura >= 24 && temperatura <=26) { //Motor ON y Led 2 ON/OFF
   digitalWrite (led2,HIGH);
   delay (500);
   digitalWrite (led2,LOW);
  
   digitalWrite (motor,HIGH);  // el motor queda prendido siempre??? 
}
if (temperatura > 26){ //Led 3 ON/OFF y Buzzer ON
  digitalWrite (led3,HIGH);
  delay (500);
  digitalWrite (led3,LOW);
  digitalWrite (buzzer,HIGH);
  delay (500);
  digitalWrite (buzzer,LOW);
}
}

El motor solo estará prendido en el rango de temperatura que aparece en el apartado B, sino se apaga.

Muchas gracias por su ayuda.

bueno, corrige y agrega la instruccion para hacer que el motor funcione donde dices. Si esta Ok ponle solucinodo al primer post que escribiste. Solo agrega esa leyenda al final