Salve a tutti
dovrei inviare da Matlab ad Arduino dei valori da immagazzinare in un array . Essi poi devono essere inviati via seriale ad un altro arduino. Non riesco a capire perchè non va.. in pratica non arriva un bel niente all'arduino "slave". Posto i codici...
Matlab
joy = vrjoystick(1);
delete(instrfind({'Port'},{'COM7'})) %cancella tutto ciò che era presente nella seriale
porta_seriale=serial('COM7','BaudRate',9600); %apro comunicazione seriale
fopen(porta_seriale);
pause(2);
cont_sample=1;
while cont_sample<=sample
[axes, buttons, povs] = read(joy); %leggo tutto ciò che arriva dal joystick
grill=buttons(1); %grilletto
a=buttons(7);
A=[grill a]
fprintf(porta_seriale,'%c',num2str(grill));
fprintf(porta_seriale,'%c',num2str(a));
cont_sample=cont_sample+1;
end
fclose(porta_seriale);
delete(porta_seriale);
clear all;
fprintf('fine');
end
Arduino Master
#include <SoftwareSerial.h>
SoftwareSerial mySerial(10, 11); // RX, TXchar
char Matlab[2];
int NumValSer=2;
void setup() {
pinMode(10, OUTPUT);
pinMode(11, OUTPUT);
Serial.begin(9600);
mySerial.begin(9600);}
void loop() {
if (Serial.available() >= NumValSer){
for (int i=0; i<NumValSer; i++){
Matlab[i]=(Serial.read()-'0');
mySerial.write(Matlab[i]);}
}}
Arduino slave
int NumValSer=2;
char Matlab[2];
void setup() {
pinMode(9, OUTPUT);
pinMode(3, OUTPUT);
Serial.begin(9600);
Serial1.begin(9600);}
void loop() {
if (Serial1.available() >= NumValSer){
for (int i=0; i<(NumValSer); i++){
Matlab[i]=(Serial1.read()-'0');}}
else {pinMode(10,HIGH);}
if (Matlab[0]==1)
{digitalWrite(9,HIGH);}
else {digitalWrite(9,LOW);}
if (Matlab[1]==1) { digitalWrite(3,HIGH);
delay(1);}
else {digitalWrite(3,LOW);}
}