NewSoftSerial e variabili

Ciao a tutti,
ho due problemi con il mio programma
ho una variabile di tipo float, e acquisisco la temperatura tramite un lm35. Dopo aver acquisito la temperatura vorrei visualizzare solo 1 cifra dopo la virgola, che istruzione posso usare?

Quando uso la nuova seriale per mettere in uscita il mio dato ho un comportamento strano, fino a 99 funziona bene, dopo arrivati alla 3cifra mi si blocca il display lcd (non si aggiorna più) ho provato di tutto, (aumentare la velocità, attendere di più prima di far eseguire una nuova funzione) ma niente. che posso fare?

naturalmente vorrei mettere in uscita il dato preso dall’acquisizione della temperatura. Il display che utilizzo è il BV4511 :slight_smile:

 for(i=1; i<1000; i++)
  {
val1 = analogRead(A0); 
 temp1 = temp1 + ((5.0 * val1 * 100.0)/1024.0);  //convert the analog data to temperature
  }
    if(time>canclcd + 100)
    {
      mySerial.print("\e[2J"); //pulisci schermo
        
        
    }
      if(time>canclcd + 1000 )
    {
  
      mySerial.print(temp1);
      canclcd=millis();
    }
   
   
    
}

Grazie!

mySerial.print(temp1,1);

Grazie, appena posso provo. Per il fatto che si blocca il display alla terza cifra come posso dividere la stringa da inviare? cosi invio i dati in più passi, anche se é strano perché quando cancello il display invio più dati e lui non si blocca

Il comando funziona, grazie! conosci un'altro per memorizzarlo in una variabile?

Per lcd ho visto che aumentando il tempo tra quando cancello il display e quando invio i dati non si blocca più. però la cosa brutta e che si vede a scatti, anche aumentando la velocità di comunicazione. Sarà per via della seconda seriale?

per salvarno in una variabile devi usare un pò di matematica, vediamo se ci riesci da solo per l'LCD molto probabilmente il problema è che fai la clear troopo velocemente, prova a limitare la clear (e quindi l'aggiornamento della grafica LCD) a 10 volte al secondo e dovresti vedere scomparire il problema

Ciao, ho risolto tutti e due i problemi anche se LCD si vede a scatti perché aspetto 300ms dopo averlo cancellato. Secondo te si potrebbe aggiornare solo la variabile e lasciare la scritta uguale Cosi da non avere questi scatti fastidiosissimi?

certo, stampi degli spazi in posizione (per cancellare, potrebbe non essere necessario) e poi ci scrivi sopra la lettera

Funziona benissimo! grazie mille

Adesso volevo fare una cosa più complicata, ho letto che si possono trasformare piccole img in byte e inserirle nel display. Il problema è che da byte deve diventare char per poi essere trasferita. Conosci qualche programmino che seleziono l'img ed esce subito il codice in char? qualche cosa di simile a questo http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1292837251

byte e char sono fondamentalmente la stessa cosa (8 bit)

non so come si costruisca l'immagine, ma credo sia più o meno così: ummagina battaglia navale, hai le coordinate x e y (piano cartesiano), per ogni coordinata tu dici se deve essere accesa o spenta.

Occhio che così facendo è facile rimanere a corto di ram