LCD. Primera linea fija. Segunda linea alternar datos en dicha linea.

Buenos días, tengo un problema con Arduino.

Resulta que necesito mostrar los datos de una estación meteorológica por un LCD de dos filas.

El diseño es, en la primera fila, siempre la fecha y hora obtenida mediante un RTC, y en la segunda fila, alternar datos (primera vez Temp y Hum {por ejemplo}, la segunda, velocidad de viento y dirección, y la tercera vez, lluvia y piranometria)

Consigo mostrar la primera vez, la fecha y hora en la primera fila, y en la segunda dirección y velocidad del viento.

El problema lo tengo, al querer cambiar solo la segunda fila.

Os dejo el código para que me digais como seguir:

void print_date() {
   lcd.setCursor(0, 0);                                     // Posicion del cursor al iniciar
   DateTime now = RTC.now();                                // Obtiene la fecha y hora del RTC
   Serial.print(now.year(), DEC);                           // Año
   lcd.print(now.year(), DEC);
  
   if (now.month() < 10) 
   {
      Serial.print("0");                              
      lcd.print("0");
   }
   Serial.print(now.month(), DEC);                          // Mes
   lcd.print(now.month(), DEC);
   
     if (now.day() <10)
   {
     Serial.print("0");
     lcd.print("0");
   }
     Serial.print(now.day(), DEC);                          // Dia
     lcd.print(now.day(), DEC);
  
   Serial.print("--");                                      // Guion separador
   lcd.write("--");
   
   if (now.hour() < 10) 
   {
      Serial.print("0");                                      
      lcd.print("0");
   }
   Serial.print(now.hour(), DEC);                           // Horas
   lcd.print(now.hour(), DEC);
   
   if (now.minute() < 10)                                   // Si es menor de 10 en minutos...
   {
      Serial.print("0");                                    // Se añade un cero al minutero y se muestra por el monitor
      lcd.print("0");                                       // Se añade un cero al minutero y se muestra por el LCD
   }
   Serial.print(now.minute(), DEC);                         // Minutos
   lcd.print(now.minute(), DEC);
   
   if (now.second() < 10) 
   {
      Serial.print("0");      
      lcd.print("0");
   }
   Serial.print(now.second(), DEC);                         // Segundos
   lcd.print(now.second(), DEC);
}
                                                                    //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
                                                                    //Función que devuelve los diferentes valores medidos
                                                                    //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
void printWeather()
{
  calcWeather();                                            // Se clacula el valor de los sensores instalados
  print_date();                                             // Funcion fecha
  lcd.setCursor(0,1);                                       // Posicion del cursor en la segunda fila
  lcd.write("D: ");                                         // Direccion del viento en LCD
  char cWindDir[3];                                           // convert 123 to string [buf]
    itoa(winddir, cWindDir, 10);
  lcd.write(cWindDir);                                      // Recogida datos del sensor y muestra por LCD
    lcd.write("; V:");                                        // Enunciado de velocidad del viento y muestra por LCD
    lcd.print(windspeedkmh);                                  // Recogida de velocidad del viento en KMH y muestra por LCD
  delay(500);                                               // Retardo de X segundos
}

Espero podáis ayudarme.

Saludos

Hola,

Vale, tienes un problema, ¿pero cual es?, no muestra nada, solo lo muestra una vez, se queda texto anterior, aparecn caracteres raros.

¿Por que usas la función itoa? ¿Que contiene windir? y no digas que la direción del viento, ¿ es un int, un long, un char?. ¿Donde actulizas el contenido de windir?, lo mismo para windspeedkmh