Go Down

Topic: [RISOLTO] OT: Cancellare oggetto di processing (Read 432 times) previous topic - next topic

sciorty

Feb 09, 2012, 08:05 pm Last Edit: Feb 25, 2012, 07:26 pm by sciorty Reason: 1
Ciao a tutti!
Pomeriggio ozioso e ho deciso di rappresentare graficamente i valori ricevuti da un sensore di distanza HC-SR04. Ma come vedete sono già le 20 e sto qui a scrivere sul forum, si vede che qualcosa non va :)

Il metodo che ho pensato di usare è quello di disegnare, al ricevere dei dati da arduino, un rettangolo che cambi altezza.
Quando la distanza aumenta, aumenta anche la linea.. ma quando diminuisce la linea è ferma. In realtà non è ferma perchè si muove, solo che si sovrappone a quella precedente che era più lunga.

C'è un modo per eliminare la linea e disegnarne una nuova? Oppure un modo per creare un oggetto linea con un nome X, al quale poi cambierò l'altezza?


In realtà volevo imitare il progetto visto in un vecchio post di ratto93, dove fa il grafico delle distanze prese da vari angoli, a mo' di sonar, solo che non ho trovato sorgenti Processing per vedere come fa. Ma per il momento sono bloccato alla linea :)

lesto

devi cancellare la finestra (più probabilmente il Canvas) ogni repaint() chiamado g.clearRect(int x, int y, int width, int height) (nota che puoi cancellare solo parte dello schermo... ottimizzazione che per ora puoi evitare, prima prendici la mano)
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

sciorty


devi cancellare la finestra (più probabilmente il Canvas) ogni repaint() chiamado g.clearRect(int x, int y, int width, int height) (nota che puoi cancellare solo parte dello schermo... ottimizzazione che per ora puoi evitare, prima prendici la mano)


Lesto scusami la cafoneria ma l'ho ripreso solo ora il progetto.. devo importare qualche libreria per la funzione?
Se chiamo solo la repaint() non succede nulla

lesto

uhmmm postami il codice che non ti seguo bene
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

sciorty


uhmmm postami il codice che non ti seguo bene


Il codice è essenzialmente questo:
Code: [Select]

capito


import processing.serial.*;

Serial arduino; 
int altezza;     
String val;

void setup()
{
  background(0);
  size(200, 200);

  arduino = new Serial(this, "/dev/ttyUSB4", 9600);
}

void draw()
{

  if ( arduino.available() > 0) {
    val=arduino.readStringUntil('\n');
    if(val!=null){
     altezza=int(float(val));
    }   
  }

  println(altezza);

  noFill();
  rect(100,0,10,altezza);


}



Quello che vorrei fare sarebbe cancellare il rect ogni 100 ms o meno magari (dall'arduino invio solo il valore della distanza ogni 100 ms), perchè in questo modo i rettangoli si sovrappongono.


lesto

come prima istruzione del draw metti background(255); (con 255 cambiato in base al colore che vuoi)
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

sciorty


come prima istruzione del draw metti background(255); (con 255 cambiato in base al colore che vuoi)


Grandissimo :D

Go Up