Da Processing ad Arduino, comunicazione Serial

Salve a tutti!
Sono piuttosto nuova nella programmazione con Arduino, anche se non al mio primo progetto, ma non ho mai provato a farlo comunicare con altri software.
Sto cercando di realizzare un progetto con una stampante termica programmabile da Arduino, ma dovrei "legare" lo sketch a un'interfaccia creata con Processing, in modo che premendo un tasto (es. "A") sulla tastiera del pc collegato, venga mandato allo sketch caricato su Arduino il comando di eseguire una data riga di codice (in questo caso, stampare la lettera A, ma quello è a posto).

In modo semplificato, il mio sketch su Arduino fa solo questo:

char var;


void setup(){

  Serial.begin(9600);
}



void loop() {

  if (Serial.available()>0){  
    var = Serial.read();  

    switch (var) {

    case 'a' :  
      // stampa la lettera corrispondente
      break;

    case 'b' :  
      // stampa la lettera corrispondente
      break;

    case 32:   
      // stampa uno spazio
      break;

    case 13 :  
      // stampa la chiusura del messaggio
      break;
    }

  }
}

Dove ovviamente nelle parti commentate c'è il resto del codice della stampante.

Come posso fare per mandare l'input da Processing in modo che tasto premuto ---> comando sul Serial ---> stampa?

PS. Tra i vari casi io ho inserito anche "13", che se corretto è l'ASCII per il tasto "a capo" perché vorrei usarlo per stampare la chiusura, ma sul monitor seriale dell'IDE di Arduino questo tasto non funziona, è possibile usarlo da Processing?

Magari è una cosa semplicissima, ma io sono piuttosto ignorante in entrambi gli ambienti di programmazione, quindi qualsiasi aiuto mi tirerà fuori da questo casino :slight_smile:

Grazie!

Benvenuto. :slight_smile:
Ti invitiamo a presentarti qui: Re: Presentazioni nuovi iscritti, fatevi conoscere da tutti! - Generale - Arduino Forum
e a leggere il regolamento: [REGOLAMENTO] Come usare questa sezione del forum - Italiano - Arduino Forum

Primo in Processing devi aprire la porta seriale.
Poi esiste l'evento keypress, da li dentro spedisci il tasto verso la seriale.
Se installi Processing, dentro ai suoi esempi c'e' ne sono per la Seriale e per la Keyboard.
Esempi processing recenti nel forum:

http://processing.org/reference/libraries/serial/index.html
import processing.serial.*;
Serial myPort;
void setup() 
{ myPort = new Serial(this, "COM5", 9600); //setto la porta COM di arduino
}

Naturalmente dovrai usare la porta COMx giusta e su Arduino aprirla con la Serial.begin(9600);

void draw() {
  fill(0);
  rect(25, 25, 50, 50);
}

void keyPressed() {
  if (key == 'a' || key == 'A') 
  { myPort.write(65);       // send 'A'
  }
}

Ciao, grazie mille per le infomazioni :slight_smile:

Ho provato a inserire come porta "/dev/tty.usbmodemfd121", che è quella visualizzata nell'ide di Arduino (utilizzo un macbook pro collegato via usb). Ho avviato prima lo sketch su Arduino, e poi aperto Processing. Ora mi sembra che funzioni :slight_smile: Quindi posso semplicemente usare entrambi gli ambienti contemporaneamente?

Si. Col cavo USB collegato ad Arduino si

Per assistenza su MacOs chiedere a Guglielmo. :wink: :grin:

PaoloP:
Per assistenza su MacOs chiedere a Guglielmo. :wink: :grin:

Volentieri ... ma non per Processing ... che non uso :grin: :grin: :grin:

Guglielmo