Aiuto: inviare più dati tramite seriale Matlab+Arduino

Ciao a tutti :slight_smile:
Sto utilizzando Arduino e Matlab per pilotare un veicolo tramite un comune joystick per PC.
In pratica i valori del joystick vengono letti da Matlab e li invio tramite seriale a IDE che attua un servomotore piuttosto che un altro.
Farò un esempio per rendere chiaro il mio problema:
ho 3 tasti, ogni tasto da valore 0 se non è premuto, 1 se è tenuto premuto. Questi tre valori vengono inviati a IDE che ad ogni ciclo li legge e, a seconda che legga 1 oppure 0, accende un led su arduino. Apparentemente semplice, ma il problema sta nel fatto che temo che IDE non “sia sincronizzato” con Matlab. Ad esempio, da Matlab invio la sequenza 001 che dovrebbe far accendere il led sul pin 4, ma ciò non accade perchè temo che IDE non riesca (col codice scritto) a capire che la sequenza di valori sia proprio 001 piuttosto che 010. Non so se ho reso l’idea… Qualcuno può aiutarmi? allego sia il codice di Matlab che di IDE

int grill;   // for incoming serial data
int a;
int b;

void setup() {
        Serial.begin(9600);
            
      pinMode(10, OUTPUT);
      pinMode(7, OUTPUT);   
      pinMode(4,OUTPUT);   
}
void loop(){
if (Serial.available() >0 ) {
grill=(Serial.read()-48);  
a=(Serial.read()-48);
b=(Serial.read()-48); 
}                
            if (grill == 1){
            digitalWrite(10,HIGH);
            delay(10); 
                          }
           else {
            digitalWrite(10,LOW);
            delay(10);                   
                               }             
            if (a == 1){
            digitalWrite(7,HIGH);
            delay(10);                 
                    }
            else {
            digitalWrite(7,LOW);
            delay(10); }
            
            if (b == 1){
            digitalWrite(4,HIGH);
            delay(10);                 
                    }
            else {
            digitalWrite(4,LOW);
            delay(10); }
                  
                     }[\code]
                               function Matlab_Arduino_joy(sample)

[code]joy = vrjoystick(1);
delete(instrfind({'Port'},{'COM6'}))
porta_seriale=serial('COM6','BaudRate',9600);

warning('off','Matlab:serial:fscanf:unsuccessfulRead')
fopen(porta_seriale);
cont_sample=1;

while cont_sample<=sample
    
    [axes, buttons, povs] = read(joy);
    grill=buttons(1);
    a=buttons(7);   
    b=buttons(6);
    c=[grill,a,b]
    fprintf(porta_seriale,num2str(grill));
    fprintf(porta_seriale,num2str(a));
    fprintf(porta_seriale,num2str(b));
    cont_sample=cont_sample+1;
    pause(0.1);
    
end
fclose(porta_seriale);
delete(porta_seriale);
clear all
fprintf('fine')
end[\code]

Il codice devi racchiuderlo nei tag code, vedi sezione 7 del regolamento, spiega bene come fare. Altrimenti parte del codice può essere visualizzata male o mancare perchè interpretato come attributo del testo stesso. Come info: - 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

ok grazie, ho modificato