LCD4884 e DHT11

Ciao, innanzitutto GRAZIE A Massimo Banzi per renderci la vita più facile e piacevole.
Premetto che sono nuovo e non praticissimo di elettronica, ma mi sto piano piano “impratichendo” ma vorrei andare oltre
l’accendere e spegnere qualche lucina (che per me è già stato importante).

Volevo chiedere delucidazioni su un particolare.
Ho un sensore DHT11 (temp e umidità) su ArdUNO e vorrei visualizzare le letture su display LCD4884 (Shield) il tutto su breadboard.
Riesco chiaramente a leggere il risultato sulla seriale ma non a stamparlo sul 4884.
Posso postare lo sketch qui?

provo…

#include <dht11.h>                     // libreria del sensore
#include "LCD4884.h"                  // libreria del display
// #include "DFrobot_bmp.h"        // libreria del display per le img bmp   per ora non mi serve
dht11 DHT11;                             // Dichiara oggetto (come da istruzioni)/
#define DHT11PIN 10                   // inizializzo il pin arduino dove è collegato il pin blu del dht11 (che da la misura)

void setup(){
  lcd.LCD_init();
  lcd.LCD_clear();
  lcd.LCD_write_string( 0, 2, "MISURE", MENU_NORMAL); // stampa su LCD la scritta MISURE... OK!
  delay(2000); 
}

void loop(){
  Serial.begin(9600); 
  int chk = DHT11.read(DHT11PIN);                     // inizializza la lettura del pin BLU del DHT11    come da istruzioni
  lcd.LCD_clear();                                             // pulisce il display
  String humy2 = String(DHT11.humidity);            // setto la variabile humy2 che legge nella classe DHT11 il valore humidity
  String temp2 = String(DHT11.temperature);       // setto la variabile temp2 che legge nella classe DHT11 il valore temperature
  Serial.println(humy2);                                      // stampo su seriale humy2 e temp2
  Serial.println(temp2);                                      // e fino a qui funziona tutto.

                          // ora voglio stampare su LCD

      lcd.LCD_clear();       
      lcd.LCD_write_string(00, 1, humy2, MENU_NORMAL );       // qui mi da errore  sulle variabili humy2 e temp2
      lcd.LCD_write_string(00, 2, temp2, MENU_NORMAL );
}

l’errore è: error: initializing argument 3 of ‘void LCD4884::LCD_write_string(unsigned char, unsigned char, char*, char)’

come se la funzione LCD_write_string si aspetta al 3° argomento una variabile char*

su seriale posso stampare senza assegnare una variabile:
Serial.println((float)DHT11.temperature),2); // e funziona
oppure :
var =String(DHT11.temperature);
Serial.println(var); // e funziona

ho provato a fare:
String var = String(DHT11.temperature); // e lcd.LCD_write_string(00, 2, var, MENU_NORMAL ) non va
int var… e non va

nello sketch di esempio del LCD4884 c’è:

    char menu_items[NUM_MENU_ITEM][12]={
         "TEMPERATURE",
       "CHAR MAP",
       "BITMAP",
       "ABOUT"   
     };

   //menu initialization
   init_MENU();
   current_menu_item = 0;   
   ....... altro codice per la creazione di un menu
    lcd.LCD_write_string(MENU_X, MENU_Y + current_menu_item, menu_items[current_menu_item], MENU_HIGHLIGHT );  // e funziona.

qualcuno sa aiutarmi?

grazie cmnq

La prox volta racchiudi il codice con il tag apposito (tastino con il simbolo # altrimenti non si riesce a leggere).

Il tuo problema nasce dal fatto che nell'Arduino esistono 2 oggetti di tipo stringa, il vecchio tipo del C char* ed il nuovo oggetto String che, però, NON sono intercambiabili. Se una funzione si aspetta un tipo char* non puoi passargli uno String. Prova convertendo la stringa con String.toCharArray(): http://arduino.cc/en/Reference/StringToCharArray

OK, grazie... ora provo.