Ciao a tutti, ho creato un'interfaccia con Processing(alcuni pulsanti) e ora sto cercando di mettere in comunicazione arduino e Processing via seriale.
Da Processing devo inviare un array o comunque una stringa che poi verrà letta e elaborata da arduino, ho provato inizialmente a inviare un solo carattere ma senza ottenere grossi risultati.
Potete aiutarmi?
Processing
import processing.serial.*;
Serial myPort;
boolean isOn;
void setup()
{
size(400,400);
myPort = new Serial(this, "COM4", 9600);
isOn = false;
}
void draw() {
if (mousePressed == true)
{ myPort.write('1'); //send 1 (led ON)
isOn = !isOn;
println("SEND COMMAND!");
delay(500);
}
}
Arduino
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
}
void loop() {
char val;
if (Serial.available())
val = Serial.read();
if (val == '1')
{
digitalWrite(LED1, HIGH);
}
delay(10);
}
Avevo già consultato quel tutorial ma senza successo, anche perchè al posto di Portname alla settima riga aggiungo "COM4" (porta che devo utilizzare), ma al posto del Portname dopo String non so cosa mettere perchè mi da errore se scrivo COM4
In pratica qualsiasi cosa metta al posto di portName con questo codice mi da errore
void setup()
{
size(200,200); //make our canvas 200 x 200 pixels big
String portName = Serial.list()[0]; //change the 0 to a 1 or 2 etc. to match your port
myPort = new Serial(this,"COM4" , 9600);
}
void draw() {
if (mousePressed == true)
{ //if we clicked in the window
myPort.write('1'); //send a 1
println("1");
} else
{ //otherwise
myPort.write('0'); //send a 0
}
}
ciao...ho affrontato lo stesso argomento con un altro utente del forum...se hai pazienza questa sera, quando torno a casa, cerco e posto la soluzione.
comunque, lato processing, la dicitura:
String portName = Serial.list()[0];
Assegna all'oggetto String portName il "nome" ,dalla lista delle porte seriali attive, alla posizione 0...
se tu sei sicuro che arduino è connesso alla COM4 è giusto scrivere "COM4".
mi sembra che l'avevo risolta, utilizzando dal lato arduino, unSerial.readBytes() o Serial.readBytesUntil()...
Beh il tuo codice Arduino rispetto a quello del tutorial puoi ben controllare che è DIVERSO.
manca la pinMode nel setup
accendi il led se ricevi 1 ma altrimenti non lo spegni.
Se Arduino è su COM4, la frase è giusta.
myPort = new Serial(this,"COM4" , 9600);
ma RIPETO: COSA non funziona ? si accende ma poi non si spegne ? Non fa nulla ?
Di sicuro un pin non è in output se non lo dichiari, altrimenti è in input.
"NOTE: If you do not set the pinMode() to OUTPUT, and connect an LED to a pin, when calling digitalWrite(HIGH), the LED may appear dim. Without explicitly setting pinMode(), digitalWrite() will have enabled the internal pull-up resistor, which acts like a large current-limiting resistor."
Il led non si accende proprio ma diciamo che questa doveva essere una prova di comunicazione seriale, perchè come ho scritto sopra in realtà devo mandare array o comunque stringhe di caratteri da processing ad arduino, conosci un tutorial adeguato?