Skocz do zawartości

Komunikacja Arduino-Matlab


Pomocna odpowiedź

Napisano

Cześć!

Mam do zrobienia projekt, mianowicie muszę stworzyć symulator obiektów które mogę sterować za pomocą kontrolera PID. W GUI Matlaba muszę mieć 4 przyciski z gotowymi transmitancjami obiektów, np. serwosilnika. W menu również muszę zmieniać wartości PID a wyniki mają przestawiać się na wykresie też w tym menu. To wszystko ma być zaprogramowane na Arduino a Matlab służy wyłącznie do sterowania poprzez menu oraz przedstawiania wyników na wykresie. W jaki sposób mogę to zrobić aby Arduino współpracowało z Simulinkiem oraz Matlab GUI w tym samym czasie? Bardzo bym prosił o nakierowanie mnie jak to zrobić. 

@Furman_ witam na forum 🙂 Ciekawy temat. Możesz komunikować się przez port szeregowy. Hasło "Arduino matlab communcate" jest dość trafne i jest sporo wyników w poradnikach wydawcy:

Kod na Arduino to zwykły serial:

byte incomingByte1;
 void setup(){
  pinMode(2,OUTPUT);
  Serial.begin(115200);
  Serial.println("Ready");       
}
 void loop() {
  digitalWrite(2,LOW); //turn off LED
  delay(500);
if (Serial.available() > 0) { 
 digitalWrite(2,HIGH); //flash LED everytime data is available
 delay(500);
 incomingByte1 = Serial.read(); //read incoming data
 Serial.println(incomingByte1,HEX); //print data
}
}

a kod Matlaba to:

 clear
 clc
s=serial('COM7','BaudRate',115200);
fopen(s);
 readData=fscanf(s) %reads "Ready" 
writedata=uint16(500); %0x01F4
fwrite(s,writedata,'uint16') %write data
 for i=1:2 %read 2 lines of data
readData=fscanf(s)
end
 fclose(s);
 delete(s);

Kiedyś kiedyś miałem laborke i mieliśmy suwaki w matlabie, możesz zrobić podobne i przy zdarzeniach zmian wartości wysyłać dane do Arduino i odczytywać odpowiedź. Powodzenia 😉 

  • Lubię! 1
(edytowany)

@Gieneq Cześć, dzięki za odpowiedź 🙂 Byłbyś w stanie pokazać mi na jakimś przykładzie jak by to mniej więcej miało wyglądać w kodzie? Np. na tym suwaku o którym wspominasz albo pokrętle, jak mniej więcej napisać kod do tego. Temat jest dosyć ambitny a ja niestety zielony jeżeli o to chodzi. Mam też pytanie co do wywoływania tych transmitancji z przycisków, jak to zrobić?  Jeżeli chodzi o te fragmenty kodu co podałeś wyżej faktycznie widzę, że urządzenie prawidłowo komunikuje się z programem.

Dnia 1.02.2022 o 07:11, Gieneq napisał:

@Furman_ witam na forum 🙂 Ciekawy temat. Możesz komunikować się przez port szeregowy. Hasło "Arduino matlab communcate" jest dość trafne i jest sporo wyników w poradnikach wydawcy:

Kod na Arduino to zwykły serial:



byte incomingByte1;
 void setup(){
  pinMode(2,OUTPUT);
  Serial.begin(115200);
  Serial.println("Ready");       
}
 void loop() {
  digitalWrite(2,LOW); //turn off LED
  delay(500);
if (Serial.available() > 0) { 
 digitalWrite(2,HIGH); //flash LED everytime data is available
 delay(500);
 incomingByte1 = Serial.read(); //read incoming data
 Serial.println(incomingByte1,HEX); //print data
}
}

a kod Matlaba to:



 clear
 clc
s=serial('COM7','BaudRate',115200);
fopen(s);
 readData=fscanf(s) %reads "Ready" 
writedata=uint16(500); %0x01F4
fwrite(s,writedata,'uint16') %write data
 for i=1:2 %read 2 lines of data
readData=fscanf(s)
end
 fclose(s);
 delete(s);

Kiedyś kiedyś miałem laborke i mieliśmy suwaki w matlabie, możesz zrobić podobne i przy zdarzeniach zmian wartości wysyłać dane do Arduino i odczytywać odpowiedź. Powodzenia 😉 

 

Edytowano przez Furman_
Dnia 4.02.2022 o 13:01, Furman_ napisał:

Byłbyś w stanie pokazać mi na jakimś przykładzie jak by to mniej więcej miało wyglądać w kodzie

Niestety nie, matlaba nie mam i używałem go kilka lat temu 😞 myslę że hasła "GUI, slider, gauge" mogą się przydać.

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...