if no funciona dentro del for
Publicado por joan (1 intervención) el 24/11/2022 06:26:26
hola una ayuda tengo un ciclo for que me muestra datos en una pantalla lcd, y le puse un ciclo if dentro de este for para que me lea una temperatura y si la temperarura alcanza un punto me va a mostrar esa alerta en pantalla, pero si no alcanza ese punto va a seguir mostrando los datos del principio, y este siclo no me funicona solo me fuciona al princio si ya la temperatua alcanso o supero ese punto y conecto el arduino, pero no en el funcionamiento de muestreo en pantalla de datos y temperatura variable
la cosa esta al final en la funcion Ciclo que tiene adrento la funcion TempC, esta ultima no se me ejecuta,excepto cuando ya la temperatura alcanzo o supero ese valor y se conecta el arduino por primera ves
ya prove poniendo el for y dentro el if y que ninguna de las 2 sea funcion y tampoco funciona jjjj.
#include <Wire.h>
#include <LCD.h>
#include <LiquidCrystal_I2C.h>
#include <math.h>
#include "DHT.h"
#define DHTPIN 12 // Pin donde está conectado el sensor
#define DHTTYPE DHT11 // Descomentar si se usa el DHT 11
DHT dht(DHTPIN, DHTTYPE);
const int SensorPIN = A0;
const byte pinBuzzer=5; //pùerto bocina
byte salida=175;
float t=0;
float valor = 3600000;
int mas = 0;
int aceptar = 0;
float vol=0;
float x=0;
int alarm=0;
int b=0;
int temp=70;
LiquidCrystal_I2C lcd (0x27, 2, 1, 0, 4, 5, 6, 7); // DIR, E, RW, RS, D4, D5, D6, D7
void setup() {
pinMode(2, INPUT);//botones
pinMode(3, INPUT);//botones
pinMode(4, INPUT);//botones
pinMode(8, OUTPUT); //rele
lcd.setBacklightPin(3,POSITIVE);
lcd.setBacklight(HIGH);
lcd.begin(16, 2);
lcd.clear();
dht.begin();
}
void loop()
{
//DHT11
delay(500);
t = dht.readTemperature(); //Leemos la temperatura en grados Celsius
digitalWrite(8, LOW);
mas = digitalRead(2); //cambio de numeros
aceptar = digitalRead(3); //comenzar conteo
alarm = digitalRead(4); //temperatura
//Muestra de temperatura
if(alarm==1)
{
lcd.clear();
lcd.setCursor(2, 0);
lcd.print("Temperatura.");
lcd.setCursor(5, 1);
lcd.print(t);
lcd.setCursor(11, 1);
lcd.print("C");
delay(3000);
lcd.clear();
lcd.setCursor(2, 0);
lcd.print("Temp. Alarm.");
lcd.setCursor(5, 1);
lcd.print(temp);
lcd.setCursor(8, 1);
lcd.print("C");
delay(500);lcd.clear();
}
if (mas == 1)
{valor = valor + 1800000; delay(100);}
//temporalizador
//1
if (aceptar == 1)
{
if(valor == 3600000)
{
Ciclo();
}}
//1.5
if (aceptar == 1)
{
if(valor == 5400000)
{
Ciclo();
}}
//2
if (aceptar == 1)
{
if(valor == 7200000)
{
Ciclo();
}}
//2.5
if (aceptar == 1)
{
if(valor == 9000000)
{
Ciclo();
}}
//3
if (aceptar == 1)
{
if(valor == 10800000)
{
Ciclo();
}}
//3.5
if (aceptar == 1)
{
if(valor == 12600000)
{
Ciclo();
}}
//4
if (aceptar == 1)
{
if(valor == 14400000)
{
Ciclo();
}}
//4.5
if (aceptar == 1)
{
if(valor == 16200000)
{
Ciclo();
}}
//5
if (aceptar == 1)
{
if(valor == 18000000)
{
Ciclo();
}}
//5.5
if (aceptar == 1)
{
if(valor == 19800000)
{
Ciclo();
}}
//6
if (aceptar == 1)
{
if(valor == 21600000)
{
Ciclo();
}}
//6.5
if (aceptar == 1)
{
if(valor == 23400000)
{
Ciclo();
}}
//7
if (aceptar == 1)
{
if(valor == 25200000)
{
Ciclo();
}}
else if (valor > 25200000) //volver a comenzar el conteo
{valor = 3600000; }
if(valor==0)
{ lcd.setCursor(0, 0);
lcd.print(" Carga Completa");
}else if(t>temp){
lcd.setCursor(0, 0);
lcd.print("Muy Caliente");
lcd.setCursor(0, 1);
lcd.print(t);
lcd.setCursor(3, 1);
lcd.print("C");
analogWrite(pinBuzzer,salida);
digitalWrite(8, LOW);
valor=1;
}else{
vol=valor/3600000*7/2.5;
lcd.setCursor(3, 0);
lcd.print(valor/3600000);
lcd.setCursor(8, 0);
lcd.print("Horas");
lcd.setCursor(3, 1);
lcd.print(vol);
lcd.setCursor(9, 1);
lcd.print("Vol");
}
}
void Ciclo()
{
digitalWrite(8, HIGH);
for(float i=valor; i>=0; i=i-1000)
{TempC();
lcd.setCursor(2, 0);
lcd.print(i/60000);
lcd.setCursor(8, 0);
lcd.print("minutos");
delay(1000);
}valor=0;
}
void TempC()
{ if(t>temp)//testeo de temperatura
{
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Muy Caliente");
lcd.setCursor(0, 1);
lcd.print(t);
lcd.setCursor(3, 1);
lcd.print("C");
analogWrite(pinBuzzer,salida);
digitalWrite(8, LOW);
valor=1;
temp=100;
delay(1000000000);
}}
la cosa esta al final en la funcion Ciclo que tiene adrento la funcion TempC, esta ultima no se me ejecuta,excepto cuando ya la temperatura alcanzo o supero ese valor y se conecta el arduino por primera ves
ya prove poniendo el for y dentro el if y que ninguna de las 2 sea funcion y tampoco funciona jjjj.
#include <Wire.h>
#include <LCD.h>
#include <LiquidCrystal_I2C.h>
#include <math.h>
#include "DHT.h"
#define DHTPIN 12 // Pin donde está conectado el sensor
#define DHTTYPE DHT11 // Descomentar si se usa el DHT 11
DHT dht(DHTPIN, DHTTYPE);
const int SensorPIN = A0;
const byte pinBuzzer=5; //pùerto bocina
byte salida=175;
float t=0;
float valor = 3600000;
int mas = 0;
int aceptar = 0;
float vol=0;
float x=0;
int alarm=0;
int b=0;
int temp=70;
LiquidCrystal_I2C lcd (0x27, 2, 1, 0, 4, 5, 6, 7); // DIR, E, RW, RS, D4, D5, D6, D7
void setup() {
pinMode(2, INPUT);//botones
pinMode(3, INPUT);//botones
pinMode(4, INPUT);//botones
pinMode(8, OUTPUT); //rele
lcd.setBacklightPin(3,POSITIVE);
lcd.setBacklight(HIGH);
lcd.begin(16, 2);
lcd.clear();
dht.begin();
}
void loop()
{
//DHT11
delay(500);
t = dht.readTemperature(); //Leemos la temperatura en grados Celsius
digitalWrite(8, LOW);
mas = digitalRead(2); //cambio de numeros
aceptar = digitalRead(3); //comenzar conteo
alarm = digitalRead(4); //temperatura
//Muestra de temperatura
if(alarm==1)
{
lcd.clear();
lcd.setCursor(2, 0);
lcd.print("Temperatura.");
lcd.setCursor(5, 1);
lcd.print(t);
lcd.setCursor(11, 1);
lcd.print("C");
delay(3000);
lcd.clear();
lcd.setCursor(2, 0);
lcd.print("Temp. Alarm.");
lcd.setCursor(5, 1);
lcd.print(temp);
lcd.setCursor(8, 1);
lcd.print("C");
delay(500);lcd.clear();
}
if (mas == 1)
{valor = valor + 1800000; delay(100);}
//temporalizador
//1
if (aceptar == 1)
{
if(valor == 3600000)
{
Ciclo();
}}
//1.5
if (aceptar == 1)
{
if(valor == 5400000)
{
Ciclo();
}}
//2
if (aceptar == 1)
{
if(valor == 7200000)
{
Ciclo();
}}
//2.5
if (aceptar == 1)
{
if(valor == 9000000)
{
Ciclo();
}}
//3
if (aceptar == 1)
{
if(valor == 10800000)
{
Ciclo();
}}
//3.5
if (aceptar == 1)
{
if(valor == 12600000)
{
Ciclo();
}}
//4
if (aceptar == 1)
{
if(valor == 14400000)
{
Ciclo();
}}
//4.5
if (aceptar == 1)
{
if(valor == 16200000)
{
Ciclo();
}}
//5
if (aceptar == 1)
{
if(valor == 18000000)
{
Ciclo();
}}
//5.5
if (aceptar == 1)
{
if(valor == 19800000)
{
Ciclo();
}}
//6
if (aceptar == 1)
{
if(valor == 21600000)
{
Ciclo();
}}
//6.5
if (aceptar == 1)
{
if(valor == 23400000)
{
Ciclo();
}}
//7
if (aceptar == 1)
{
if(valor == 25200000)
{
Ciclo();
}}
else if (valor > 25200000) //volver a comenzar el conteo
{valor = 3600000; }
if(valor==0)
{ lcd.setCursor(0, 0);
lcd.print(" Carga Completa");
}else if(t>temp){
lcd.setCursor(0, 0);
lcd.print("Muy Caliente");
lcd.setCursor(0, 1);
lcd.print(t);
lcd.setCursor(3, 1);
lcd.print("C");
analogWrite(pinBuzzer,salida);
digitalWrite(8, LOW);
valor=1;
}else{
vol=valor/3600000*7/2.5;
lcd.setCursor(3, 0);
lcd.print(valor/3600000);
lcd.setCursor(8, 0);
lcd.print("Horas");
lcd.setCursor(3, 1);
lcd.print(vol);
lcd.setCursor(9, 1);
lcd.print("Vol");
}
}
void Ciclo()
{
digitalWrite(8, HIGH);
for(float i=valor; i>=0; i=i-1000)
{TempC();
lcd.setCursor(2, 0);
lcd.print(i/60000);
lcd.setCursor(8, 0);
lcd.print("minutos");
delay(1000);
}valor=0;
}
void TempC()
{ if(t>temp)//testeo de temperatura
{
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Muy Caliente");
lcd.setCursor(0, 1);
lcd.print(t);
lcd.setCursor(3, 1);
lcd.print("C");
analogWrite(pinBuzzer,salida);
digitalWrite(8, LOW);
valor=1;
temp=100;
delay(1000000000);
}}
Valora esta pregunta


0