Dati seriali per domotica.

Io mi ero fatto una piccola applicazione per ricevere i caratteri dalla seriale in C#.

Per quello che conosco io,le possibilità sono:

  1. Stampi una serie di righe vuote, per cancellare tutto..... :o
  2. Usi un applicazione a parte ad esempio in processing
  3. Cambi terminale ( monitor) perchè serial monitor non supporta alcuni caratteri speciali.
    mentre 'putty' li supporta. Installa putty. http://www.putty.org/

Esempio che simula l'invio di un dato sulla seriale( utilizzare con lo sketch processing oppure con putty):
Lo puoi usare con lo sketch processing o con putty ( per putty elimina il carattere di commento come
spiegato nello sketch infondo)

int cont;

void setup() {
  // put your setup code here, to run once:
  Serial.begin(115200);       //  seriale a 115200
  Serial.println("Hello !");
  delay(1000);   // testa la seriale
  }

void loop() {
  // put your main code here, to run repeatedly:

cont++;
Serial.println(cont);
delay(5000); // simula il tempo tra una azione ed un altra.


/*
 * Se vuoi testare putty con questo sketch Arduino. Togli il commento alle righe sottostanti.
  Serial.write(27);       
  Serial.print("[2J");    
  Serial.write(27);
  Serial.print("[H");     
*/
  
}

sketch Processing ( basic )

import processing.serial.*;

Serial arduino;              // nuova oggetto di tipo 'seriale'
int lf = 10;                //  carattere di Linefeed in codice ascii
String val=null;            //  Dato ricevuto da arduino
String printVal=null;       // variabile che contiene il valore del dato ricevuto da arduino

String portName = Serial.list()[0]; // <-- selezionare la porta corretta

boolean datoOk;            // Alza un flag quando arriva il dato, quindi inizia il conteggio ( 4 secondi), dopo cancella tutto.
int nByte;                 // contiene l'eventuale numero di byte (dato) presente sulla seriale. Se maggiore di zero allora NON lo considera nullo.
int cont;                  // Timer per determinare quanti secondi sono trascorsi dopo l'arrivo del dato
void setup ()

{
 size(500, 500);
 background(255);
 fill(50);
 frameRate(1); // 1 frame per ogni secondo. Quindi se cont = 4 , son trascorsi 4 secondi  
 
  arduino = new Serial(this, portName, 115200);
  arduino.clear();
  val = arduino.readStringUntil(lf);   
  val = null;
  
  printArray(Serial.list());  // stampa le porte disponibili
  
}
void draw()
{

  nByte = arduino.available() ;
   
  if (datoOk == true) cont++;
  
  if (cont>3) { cont = 0; background(255); } // cancella ricolorando lo sfondo...
  
  if ( nByte > 0){
      val = arduino.readStringUntil(lf);         // legge il valore del dato appena arrivato
      if (val !=null)
        {
             printVal = val;
             println(val);
             println(nByte);
             text(val, 200, 200);
             datoOk = true;
       }
  }
}

Altrimenti installa putty e nel tuo sketch quando devi cancellare scrivi:

Serial.write(27);       
Serial.print("[2J");    
Serial.write(27);
Serial.print("[H");