salve a tutti,
la mia intenzione era quella di comunicare serialmente (e non tramite firmata) tra arduino e processing, e dopo avere letto alcuni esempi ho provato ma invano.
In pratica arduino legge un potenziometro che da valori da 0 - 1023 e fin li tutto bene. Poi li srcive sulla seriale con un Serial.write().
Su processing ho fatto invece un programmino che legge i valori con un Serial.read() (ho gia incluso la libreria processing.serial)
e gli ho detto di scriverli sul suo monitor seriale, e effettivamente vengono scritto dei valori, ma non si aggiornano al ruotatre del potenziomentro... What i can do?
Allora adesso posto un codice con la lettura di un bottone mandata a processing tramite seriale (alcuni eventuali errori di codice potrebbero essere dovuti alla scrittura veloce =)
import processing.serial.*;
Serial arduino;
void setup()
{
size(200,200);
arduino = new Serial(this,Serial.list()[1],9600);
}
void draw()
{
if(arduino.available() > 0)
{
int val = arduino.Read();
}
if (val==1)
{
background(255,0,0);
}
else
{
background(255);
}
}
const int buttonPin = 2; // the number of the pushbutton pin
const int ledPin = 13; // the number of the LED pin
void setup() {
pinMode(ledPin, OUTPUT);
pinMode(buttonPin, INPUT);
Serial.begin;
}
void loop(){
int buttonState = digitalRead(buttonPin);
if (buttonState == HIGH)
{
Serial.write(1)
}
else
{
Serial.write(0)
}
}
e che non trovavo lo sketch del potenziometro e allora ne ho preso uno di un semplice bottone il cui stato e mandato via serial
il fatto e che non riesco a far funzionare neanche questo sketch, nel quale presumo che ci voglia un solo bite, dove sbaglio?
Ho provato a leggere serialEvent sulla reference di processing, ma non capisco a cosa serve =(
si allora io ho riscritto il codice (scusa per quegli errori banali ) xD
ho anche messo la mia porta seriale (COM5) su entrambi gli sketch, ma ancora non funziona
Il metodo pero di per se e giusto? (cioe serialWrite/serialRead)
Se si allora potrebbero esserci dei problemi sul PC.
Bisogna fare un debug per bene. Inizia a verificare la parte Arduino.
Prova da Arduino a vedere se sul Serial Monitor ti stampa qualcosa quando premi il pulsante.
Magari per la prova metti Serial.print(1) e Serial.print(0) al posto del write.
Se non ti stampa mai l'1 allora hai collegato male il pulsante.
Premetto che di processing non so un fico secco, ma considerando la somiglianza con l'IDE arduinesco, io mi chiedo, ma non sarà che quando dici:
if (val==1)
in realtà dovresti usare:
if (val=='1')
si perchè da quello che so io (non sono un'esperto ma ci ho giocato con la trasmissione dati alla/da seriale), i dati inviati per via seriale sono CHAR e quindi devi usare la virgoletta singola per indicare il numero CHAR e non quello byte/int che sia. Ragazzi, correggetemi se sbaglio!
PS: Anche se ricevi comandi/dati su arduino dalla seriale devi usare le virgolette singole.