Salve a tutti,
Cercherò di essere conciso
Non sono un esperto di elettronica ne di informatica.
Avrei bisogno di chiarimenti riguardo a come e che tipo di variabili inviare da matlab ad arduino e viceversa, tramite comunicazione seriale.
In pratica ho scritto questo codice per matlab
a = serial('/dev/ttyUSB0','BaudRate',4800);
fopen(a);
true = 1;
POS = 48;
while true
fwrite(a, POS, 'char');
POS = input('Posizione motore: ');
data = fread(a,1,'char')
true = input('to finish press 0:.... to continue press another value: ');
end
fclose(a)
in cui definisco la comunicazione seriale e il voglio definire dei valori da mandare da ad arduino, da qui poi vorrei mandarli a dei servomotori, lo sketch per arduino è questo
#include<Servo.h>
int matlabData;
int A;
int pos;
int a;
Servo M1;
void setup()
{
M1.attach(9,500,2500);
Serial.begin(4800);
}
void loop()
{
if(Serial.available()>0) // if there is data to read
{
matlabData = Serial.read(); // read data
if(matlabData>0 && matlabData<180)
int pos = matlabData;
M1.write(pos);
A = 100;
Serial.println(A,DEC);
}
}
Ovviamente i codici che ho scritto sono la versione semplificata di quello che vorrei fare. Io vorrei leggere le posizioni dei motori da arduino, inviare questi dati a matlab, processarli in uno script e rinviarli ad arduino per poi inviarli ai motori.
Ora volevo iniziare piano piano. Volevo scrivere un dato da matlab, mandarlo ad arduino e riportarlo indietro per vedere se in matlab ritornasse lo stesso valore inviato. Beh questo non accadeva infatti nei codici scritti noterete che invio un valore da matlab e vorrei che da arduino tornasse sempre il valore A=100 con A variabile di tipo int.
Beh questo non accade, mi ritorna un numero di 2 cifre che periodicamente assume questi valori 48, 48, 13, 10.
Potreste aiutarmi a capire dove sbaglio e indirizzarmi su quali tipo di testi o articoli leggere per chiarirmi queste idee?