Prolemas con codigos arduinos

Con todo respeto todos los del foro primera vez que escribo en algun foro pidiendo ayuda,
estoy armando un medidor de temperaturas (Personas) con Una pantalla LiquidCrystal_I2C. 20X4 I2C, un ultasonido (HCSR04), un Reloj(DS3231), Un sensor de temperatura(Adafruit_MLX90614) Y las conxiones (Wire), estoy usando para armar el codigo cada uno de los ejemplos de los sensores . es un proyecto de la escuela de mi hija El prycto trata de medidor de temperatura del cuerpo por el COVID 19 que se acerca y en la pantalla presenta la temperatura alta o baja del sujeto..

Lo de la pantalla y el sensor de temperatura es obvio pero lo del reloj y los ultrasonidos no veo que sentido tiene.
Publica ese codigo que da error para empezar por algo.

<f==========================================================================================
 * A D V E R T E N C I A!!! 
 * Este Trabajo f como proyrcto de bachillerato Quinto U
 * =========================================================================================
 */

          //Librerias
#include <Wire.h> //comms
#include <Adafruit_MLX90614.h> //Termico
#include <LiquidCrystal_I2C.h> //Pantalla
#include <DS3231.h> //Reloj
#include <HCSR04.h> //Ultrasonico
#include <Buzzer.h> //Buzzer

      //Definicion de Pines
                    #define Echo 10                              //Echo del Ultrasonico
                    #define Trig 11                             //Trig del Ultrasonico
                    #define LED 9                              //Led de salida
                    #define Dt
        //Inicializar
            Adafruit_MLX90614 mlx = Adafruit_MLX90614(); //Sensor Termico
            LiquidCrystal_I2C lcd(0x27, 20,4); // Pantalla LCD

              DateTime; //Fecha
      int      HCSR04(Echo, Trig); //Ultrasonico

        //Variables
      int Espera1=500; //Espera en el loop

    //Fecha
     String fDia;
      String fMes; //Mes en texto
      String fAno;
      String fHora;
      String fMin;
      String fSeg;
      String fTime;

    //Distancia
    int Distance=40;
  int Dist= 45; //Distancia del ultrasonico
  int DistMin= 10; //Distancia minima para detectar al sujeto 
  int Presente= 0; //Si hay alguien frente al Termometro
  int Espera= 3000; //Tiempo de espera para verificar sujeto
  unsigned long Tiempo=0; //Tiempo que lleva detectado para Millis
  int Ahora= 0; //Millis en el momento que se inicia
  int HCSR04 


 

    //Temperatura
    
     float TempObj= 33.00; //Temperatura del sujeto
    float TempMax=37.00; //Temperatura maxima permitida
    int TpoAlarma=200; //Tiempo de Alarma por alta temperatura

  void setup() 
  {
  pinMode(LED OUTPUT); //LED
  mlx.begin(); //Termico

  clock.begin(); //Reloj
  //clock.setDateTime(2022,7,9,20,19,0); //Quitar comentario y ajustar a la hora deseada en primer run.

  //Sonido inicial
    tone(12,NOTE_C5,3000);
    digitalWrite(LED,HIGH);
    delay(3000);
  digitalWrite(LED,LOW);

//Mensaje inicial
   lcd.begin(20,4);
   lcd.noBacklight();
   lcd.clear();
   lcd.setCursor(0,0);
    lcd.print(" TERMOMETRO / RELOJ");
    lcd.setCursor(0,1);
    lcd.print("AMB: ");
    lcd.setCursor(0,2);
    lcd.print("PER: ");
}

  void loop() 
{
  //Distancia
  long Duration, Distance;
  digitalWrite(Echo, LOW);
  delayMicroseconds(2);
  digitalWrite(Trig, HIGH);
  delayMicroseconds(10);
  digitalWrite(Trig, LOW);
  Duration=pulseIn(Echo, HIGH);
  Distance=(duration/2)/29.1;
  Distance=sr04.Distance();
  if(Dist>DistMin); //No hay nadie
{
  Presente=0;
  Tiempo=millis();
}
if(Dist<=DistMin && Presente==0) //Llego alguien, tomemos el tiempo
{
  Presente=1;
  Tiempo=millis();
}

if(Presente==1)
{
  if(millis()-Tiempo>Espera) //Se completo el tiempo
  {
    Presente=2;
  }
}

    //Actualizar pantalla
    lcd.setCursor(12,3);
    //Temperaturas
      lcd.setCursor(4,1);
      lcd.print(mlx.readAmbientTempC());
      lcd.setCursor(9,1);
      lcd.print("c");

      TempObj=mlx.readObjectTempC();
    switch(Presente)
{
  case 0: //No hay nadie
  lcd.setCursor(4,2);
  lcd.print("--.--c");
  lcd.setCursor(0,3);
  lcd.print("BUSCANDO...  ");
  break;

  case 1: //Llego alguien
  lcd.setCursor(4,2);
  lcd.print("--.--c");
  lcd.setCursor(0,3);
  lcd.print("LEYENDO...");
  tone(12,NOTE_C5,TpoAlarma);
  break;

  case 2: //Se Completo el tiempo
  lcd.setCursor(4,2);
  lcd.print(TempObj);
  lcd.setCursor(9,2);
  lcd.print("c");
  if(TempObj>TempMax)
  {
    tone(12,NOTE_G5,TpoAlarma);
   lcd.setCursor(0,3);
   lcd.print("TEMP ALTA!!!");
   digitalWrite(LED,HIGH);
   delay(TpoAlarma);
   digitalWrite(LED, LOW);
  }
  else
  {
  lcd.setCursor(0,3);
  lcd.print("NORMAL        ");
  }
  break;
}

//Hora y Fecha
Dt=clock  Dist DateTime();
fDia=String Dt day;
if(Dt day<10)fDia="0"+fDia; //Para mantener en dos digitos

fAno=String (Dt.year-2022);

lcd.setCursor(11,1);
lcd.print(fDia+"/"+ fMes()+"/"+fAno); //Uso de la funcion Mes()

fHora=String(Dt.hour);
if(Dt hour<10)fHora="0"+fHora; //Para mantener en dos digitos

fMin=String(Dt. minute);
if(Dt minute<10)fMin="0"+fMin; //Para mantener en dos digitos

fSeg=String (Dt. second);
if(Dt rewind<10)fSeg="0"+fSeg; //Para mantener en dos digitos

fTime=fHora+":" + fMin + ":" + fSeg;
lcd.setCursor(11,2);
lcd.print(fTime);

delay(Espera1);

}

/////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////
/// F U N C I O N E S 
////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////


String month();

  
    
    

como les comente es primera vez que entro a un foro tengo dias practicando y tome este reto

Ese cdigo esta incompleto. y mal posteado, es inposible sacar algo en claro. Postealo entero y bien para ello:
Vas al ide de arduino selecciona todo el codigo y con el boton derecho del raton opcion copiar.
Vuelves aqui.
Edita el primer post

Borra todo el codigo que publicaste y pincha en las etiquetas:

etiquetas

te saldra esto:

pegar

Pega en la linea azul tod el codigo copiado del IDE y pica en Reply.

lo he hecho com 20 veces y da falla distintos (errores) JJJJAJAJA

expected initializer before 'float'
luego de pasar este aparece otro

Vale , eso es al compilar OK.
Lo siento, para mi ya es tarde y mañana tengo que madrugar. Buenas noches.

Bien gracias si puedes seguir mañana te lo agradezco

Cómo no está el código completo no puedo aportar a buscar los fallos pero ya que esto es un proyecto de bachillerato según los comentarios querría hacer unos comentarios sobre el código que podrían ayudarte en un futuro a programar mejor si quieres.

Sobre el formato:
Lo primero es indentar el código de forma correcta pues ayuda a la lectura del mismo.
Lo segundo, recordar el estándar en la programación.

Sobre el código:
Tienes lo que llamamos "cascada de variables". Esto es cuando una persona que está aprendiendo o le enseñan incorrectamente el uso de variables mete un listado gigante de variables, todas goblales y de un tipo mayor al de la memoria de almacenamiento necesitada. :smiley: también y a modo de broma diré que esto se debe a profesores de programación que en realidad son profesores de matemáticas (que esto lo hemos vivido todos).

Suponiendo que en #define estás poniendo valores que obviamente no van a ser modificados, ¿por qué luego tienes globales de tipo int que tampoco cambian? Si algo debe ser una constante que lo sea, y si usas #define donde toca, entonces hazlo en todos los que corresponde o bien usando const.

  int Espera1=500; 
  int Dist= 45;
  int DistMin= 10;

Este timer aparte de necesitar un >= en vez de > está mal planteado y luego tenemos otro problema con el timer y es que en tu código usas delay(), microdelays() que son puntos de detención en dicha línea no un control de tiempo, así que esto también dará problemas.

if(Dist<=DistMin && Presente==0) //Llego alguien, tomemos el tiempo
{
  Presente=1;
  Tiempo=millis();
}

if(Presente==1)
{
  if(millis()-Tiempo>Espera) //Se completo el tiempo
  {
    Presente=2;
  }
}

Si tu código ves que repites las mismas líneas una y otra vez, eso es un anticipo claro que lo suyo es meter eso en una función y pasar las partes que cambiar por parámetros.
Vemos un claro ejemplo con esto (que se repite más veces pero no voy a llenar todo el espacio)

  case 0: //No hay nadie
  lcd.setCursor(4,2);
  lcd.print("--.--c");
  lcd.setCursor(0,3);
  lcd.print("BUSCANDO...  ");
  break;

  case 1: //Llego alguien
  lcd.setCursor(4,2);
  lcd.print("--.--c");
  lcd.setCursor(0,3);
  lcd.print("LEYENDO...");
  tone(12,NOTE_C5,TpoAlarma);
  break;

Muchas gracias por tu aporte voy a corregir

Aunque el código del post#3 se lee bien no esta con etiquetas.
sigue esta guía.

Moderador:
Por favor, lee las Normas del foro y edita tu código/error usando etiquetas de código.
Ve a edición, luego selecciona todo el código que has publicado, lo cortas y click en </>


This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.