Regolazione motori

Salve a tutti, sono nuovo del forum e nuovo anche di Arduino, ma ho qualche conoscenza di base in merito al linguaggio di programmazione.

Mi si presenta il seguente problema:
Tramite processing ho realizzato un programma che riceve un input (un numero da 0 a 1023) dal mio iPad e lo memorizza in una variabile differente in base a quale input ho dato all'iPad. Ad esempio, se muovo il fader "motore_1" processing memorizza inputMotore1 = x; in base alla posizione del fader, mentre se muovo il fader "motore_2" lo memorizza su inputMotore2 = x; allo stesso modo. Tramite questi valori vorrei controllare la velocità di rotazione di due motori distinti, usando due H-Bridge.
A questo punto mi sono bloccato, non mi viene in mente nulla di funzionante per dire ad Arduino tramite la porta seriale che il valore che sta arrivando è riferito al motore_2 piuttosto che al motore_1.
Qualche suggerimento? (Se non sono stato chiaro tenterò di spiegarmi meglio)

Grazie in anticipo!

Ti invitiamo a presentarti (dicci quali conoscenze hai di elettronica e di programmazione) qui: Presentazioni
e a leggere il regolamento: Regolamento

Quello che devi creare è un TUO protocollo, ovvero devi decidere come spedire i dati, in quale forma.
Esempio se devi accendere o spegnere 3 led a scelta, si potrebbe pensare a un "comando" del tipo "LxA" oppure "LxS" dove x può essere 1,2 o 3 e A=acceso S=spento

Quindi una cosa del genere è fattibile?

Se con Processing scrivo sulla porta seriale una stringa "Z1023", dove "Z" identifica il motore, "1023" il valore di velocità che il motore deve assumere. Come faccio a far manipolare ad Arduino la stringa per separare il primo carattere dal resto così da capire di quale motore si tratta?
Mi spiego, vorrei dividere la stringa in modo da fare if(primoCarattere == 'Z') { analogWrite(motore_1, restoDellaStringa) }.

Conviene anche "terminare" i valori con un simbolo preciso per esempio # => Z1023# Z123#
Così sai quando termina il dato. Oppure i dati per semplicità li spedisci sempre stessa lunghezza, esempio Z1023 e Z0123 (sempre lunghi 5 caratteri)

Perchè non inizi con un primo semplice sketch di ricezione dati e scarico su serial monitor di quello che ricevi ?
(una specie di echo)

int c = 0;
void setup() 
{ delay(1000);
  Serial.begin(9600);  // opens serial port, sets data rate to 9600 bps
}
void loop() 
{ // send data only when you receive data:
  if (Serial.available() > 0) 
  { c = Serial.read(); // read the incoming byte
    // say what you got:
    Serial.print("ricevuto: ");
    Serial.print(c);
    Serial.print(" -> ");
    Serial.println(c, DEC);
  }
}

Spedisci qualcosa da Processing, su quello non ti sò aiutare, non lo conosco.

Ed è proprio ciò che ho provato, con Processing invio sulla seriale M600# e su Arduino ho questo sketch:

const int enablePin = 8;
char inputSeriale;
int i;
char inData[20];

void setup() {
Serial.begin(9600);
pinMode(enablePin, OUTPUT);
}

void loop() {
if (Serial.available()) {
  inputSeriale = Serial.read();
  if (inputSeriale != '#') {
   inData[i] = inputSeriale;
   i++;
   } else {
     i = 0;
     if (inData[0] == 'M') {
       int inputNum = int(inData[1] + inData[2] + inData[3] + inData[4]);
       if (inputNum > 300) {
         digitalWrite(enablePin, HIGH); //Al posto del digitalWrite ci va analogWrite
       } else { digitalWrite(enablePin, LOW); }
    } else { digitalWrite(enablePin, LOW); }
  }
 }
}

Il programma si compila, ma non fa quello che deve fare, cioè accendere un led quando il numero diventa superiore a 300. Vedi qualche errore?

Ti ringrazio e scusa se approfitto della tua esperienza e pazienza.

Programmi i Basic ? In C non è banale da testo "600" a valore 600.
Qui:

int inputNum = int(inData[1] + inData[2] + inData[3] + inData[4]);

Un primo problema è che spedisci M600 le cifre sono solo 3 quindi in elemento 4 non sai che c'e'.
Quindi '6'+'0'+'0' => elementi char quindi valori ascii => 54+48+48 => inputNum=150 ed elemento 4 che non si sà
Dovresti almeno fare inData[1]-48 * 100 + inData[2]-48 * 10 + inData[3]-48 per avere 600+0+0 ma è difficile sapere quali potenze usare. Se spedisci M60 hai solo 2 cifre.

Ti conviene usare atoi() passandogli array inData, l'unica cosa che devi porre carattere '\0' alla fine di quello che hai ricevuto.