Bonjour,
Je souhaite envoyer une valeur (Float) de Matlab à Arduino et allumer une certaine suivant sa valeur.
Or quand je lance mon code, j'ai les bons résultats qui s'affiche mais pas la bonne LED.
J'ai essayé toutes les combinaisons possibles, et je ne comprends vraiment pas pourquoi je n'ai pas la bonne valeurs sur Arduino.

Arduino :

Code c : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#define LED 4
#define LED2 6
float num;
void setup() {
  Serial.begin(9600);
  pinMode(LED, OUTPUT);
  pinMode(LED2, OUTPUT);
  Serial.print('a');
  char a='b';
  while(a!='a')
  {
    a=Serial.read();
  }
 
 
 
  char test = Serial.read();
  if (test == 'r');
  {
 
     float num = Serial.parseFloat();
     Serial.println(num);
 
  }
 
 
}
 
void loop() {
 
if ((float)num == 1)
{
  digitalWrite(LED,1);
  digitalWrite(LED2,0);
}
else
{
  digitalWrite(LED,0);
  digitalWrite(LED2,1);
}
}

Matlab :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
 
clear all;
close all;
clc;
 
 
comPort = '/dev/cu.usbmodem1421';
flag=1;
current='l';
s= serial(comPort);
set(s,'DataBits',8);
set(s,'StopBits',1);
set(s,'BaudRate',9600);
set(s,'Parity','none');
fopen(s); %connecte à arduino
 
%% Matlab is waiting a char of Arduino
a='b';
while (a~='a')
    a=fread(s,1,'uchar');
end
 
%% After it finds the char, it sends a char at Aduino and display 'serial read'
if(a=='a')
    fprintf(s,'%c','a');
    display('serial read');
end
 
 
 
 
fwrite(s,'r1x');
l=fgets(s);
display(l);