domanda Serial di Pir passive infrarosso + processing

il Processing non riesce a leggere il "string" di Serial da Arduino per fare qualcosa in più...

collegato Pir infrarosso con Arduino, nel Processing se uso function ".read();" per "println();" delle informazioni del Port, mi mandano delle cifre come es:13 48 49 ecc..che non so cose sono? poi se invece uso ".readString();" il processing non riesce a leggere il "string" dal Port

qualcuno sa spiegarmi xk? grazie in anticipo!

Ciao, ti conviene postare il codice per intero.

ciao
prima di proseguire dai una lettura

arduino:

http://www.arduino.cc/en/Serial/Println

http://www.arduino.cc/en/Serial/Write

processing:

http://www.arduino.cc/en/Serial/Write

https://processing.org/reference/libraries/serial/Serial_read_.html

https://processing.org/reference/libraries/serial/Serial_readString_.html

https://processing.org/reference/libraries/serial/Serial_readBytesUntil_.html

https://processing.org/reference/libraries/serial/Serial_readStringUntil_.html

quello usato di solito è il readStringUntil, di cui arduino ha alcuni esempi processing:
arduino—> file–> esempi–>communication–> virtualColorMixer,

in grigietto c’è lo sketch di esempio processing

pietro1912: qualcuno sa spiegarmi xk? grazie in anticipo!

Ti invitiamo a presentarti (dicci quali conoscenze hai di elettronica e di programmazione) qui: Presentazioni e a leggere il regolamento: Regolamento - qui una serie di schede by xxxPighi per i collegamenti elettronici vari: ABC - Arduino Basic Connections - qui le pinout delle varie schede by xxxPighi: Pinout - qui una serie di link [u]generali[/u] utili: Link Utili

pitusso:
Ciao,
ti conviene postare il codice per intero.

ecco la codice, per Arduino:

int inputPin = 2;
void setup() {
Serial.begin(9600);
}
void loop() {
int val = digitalRead(inputPin);
Serial.println(val);
delay(50);
}

per processing:

import processing.serial.*;
Serial myPort;
String adaptor= “/dev/cu.usbmodem1411”;

void portConnect(){// copiato da internet, con questo modo riesce a trovare il port, uso Mac
int portNumber = 99;
String ports;
println(Serial.list());
ports = Serial.list();
for(int j = 0; j< ports.length; j++) {
if(adaptor.equals(Serial.list()[j])) portNumber = j;
}
if(portNumber == 99) portNumber = 0;
String portName = Serial.list()[portNumber];
println("Connected to "+portName);
myPort = new Serial(this, portName, 9600);
myPort.bufferUntil(10);
}
void setup() {
size(200, 200);
portConnect();
}
void serialEvent(Serial myPort) {
String recieved = myPort.readString() ;

if(received == “1”){ // problema è qui, che non capisco xk non riesce a leggerlo
printnl(“yes”);
}else{
printnl(“no”);
}

}

in realtà volevo fare un progetto artistico, cioè come il Pir mi manda due cifre: 0,1 oppure 48, 49… voglio che quando torna 0 parte un video, quando è 1 parte un altro video. è possibile? chiedo aiuto!

camperos: ciao prima di proseguire dai una lettura

arduino:

http://www.arduino.cc/en/Serial/Println

http://www.arduino.cc/en/Serial/Write

processing:

http://www.arduino.cc/en/Serial/Write

https://processing.org/reference/libraries/serial/Serial_read_.html

https://processing.org/reference/libraries/serial/Serial_readString_.html

https://processing.org/reference/libraries/serial/Serial_readBytesUntil_.html

https://processing.org/reference/libraries/serial/Serial_readStringUntil_.html

quello usato di solito è il readStringUntil, di cui arduino ha alcuni esempi processing: arduino---> file--> esempi-->communication--> virtualColorMixer,

in grigietto c'è lo sketch di esempio processing

grazie per i link. la codice ho già messo, non mi torna una parte di processing.

come avevo scritto volevo fare un progetto artistico, cioè come il Pir mi manda due cifre: 0,1 oppure 48, 49.. voglio che quando torna 0 parte un video, quando è 1 parte un altro video. è possibile? per ora non mi fa neanche "stampare"(println) una string in base alla cifra che mi manda..

non stampa, println, non printnl. ad arduino devi preimpostare il pin, output oppure input nel setup

pinMode(inputPin,INPUT);

manca la funzione "draw()"

void draw(){
}
  received = trim(received); // trim off any whitespace:

per comparare 2 stringhe si usa "equals" non ==

if(received.equals ("1")){

camperos:
non stampa, println, non printnl.
ad arduino devi preimpostare il pin, output oppure input nel setup

pinMode(inputPin,INPUT);

manca la funzione “draw()”

void draw(){

}





received = trim(received); // trim off any whitespace:



per comparare 2 stringhe si usa "equals" non ==


if(received.equals (“1”)){

grazie, la function ho sbagliato era println, ho corretto la codice, però non funziona…

import processing.serial.*;
Serial myPort;
String adaptor= “/dev/cu.usbmodem1411”;

void portConnect(){
int portNumber = 99;
String ports;
println(Serial.list());
ports = Serial.list();
for(int j = 0; j< ports.length; j++) {
if(adaptor.equals(Serial.list()[j])) portNumber = j;
}
if(portNumber == 99) portNumber = 0;
String portName = Serial.list()[portNumber];
println("Connected to "+portName);
myPort = new Serial(this, portName, 9600);
myPort.bufferUntil(10);
}
void setup() {
size(200, 200);
portConnect();
}
void serialEvent(Serial myPort) {
String recieved = myPort.readString() ;

if(recieved.equals (“1”)){
println(“yes”);
}else{
println(“no”);
}

}
void draw(){
}

non hai rimosso gli spazi vuoiti
recieved = trim(recieved); // trim off any whitespace:
if(recieved.equals (“1”)){