- Potrebne komponente
- Shema vezja
- Zaporedna komunikacija z ukaznim oknom MATLAB
- Zaporedna komunikacija z uporabo MATLAB GUI
MATLAB je vsestranska programska oprema, ki se lahko uporablja za najrazličnejše aplikacije. V prejšnjih vajah MATLAB-a smo razložili, kako uporabljati MATLAB za nadzor enosmernega motorja, servo motorja in gospodinjskih aparatov. V tej vadnici bomo izvedeli, kako uporabljati MATLAB za serijsko komunikacijo. Za sprejemni konec serijske komunikacije uporabljamo Arduino.
Obstajata dva načina za nastavitev serijske komunikacije med MATLAB in Arduino, eden uporablja ukazno okno, drugi pa MATLAB GUI. Koda Arduino za obe metodi bo ostala enaka. Če ste nov v MATLAB-u, je priporočljivo začeti s preprostim programom za utripanje LED z MATLAB-om in se naučiti osnovne terminologije, ki se uporablja v MATLAB-u.
Potrebne komponente
- Prenosni računalnik MATLAB (Preference: R2016a ali novejše različice)
- Arduino UNO
- LED (poljubna barva)
- Upor (330 ohm)
Shema vezja
Zgornji diagram vezja bo ostal enak za oba načina za vzpostavitev serijske komunikacije med MATLAB in Arduino.
Zaporedna komunikacija z ukaznim oknom MATLAB
To je preprost način za nastavitev serijske komunikacije med Arduino in MATLAB. Tu bomo podatke iz MATLAB preprosto poslali Arduinu serijsko z ukaznim oknom in nato Arduino prebral dohodne serijske podatke. Potem se lahko s temi serijsko prenašanimi podatki nadzoruje vse, kar je povezano z Arduinom. Tu smo na Arduino povezali LED, ki se bo vklapljala in izklapljala v skladu s serijsko prejetimi podatki Arduina.
Najprej naložite dano Arduino kodo v Arduino UNO in nato začnite kodirati v oknu urejevalnika MATLAB. Če želite odpreti nov skript urejevalnika, kliknite » Nov skript«, kot je prikazano na spodnji sliki:
Nato kopirajte in prilepite spodnjo celotno kodo MATLAB v okno urejevalnika za serijsko komunikacijo med MATLAB in Arduino.
% MATLAB koda za serijsko komunikacijo med Arduino in MATLAB x = serial ('COM18', 'BAUD', 9600); fopen (x); go = res; medtem ko pojdite a = input ('Pritisnite 1, da vklopite LED in 0, da izklopite:'); fprintf (x, a); če (a == 2) go = false; konec konec
V dani kodi se za definiranje serijske komunikacije v MATLAB uporablja spodnji ukaz. Prepričajte se, da je številka com vhoda številka vrat, na katero je povezan Arduino, in da mora biti hitrost prenosa enaka v kodah Arduino in MATLAB.
x = serijski ('COM18', 'BAUD', 9600);
Če želite odpreti serijska vrata, uporabite spodnji ukaz:
fopen (x);
Spodnji ukaz se uporablja za serijsko pošiljanje podatkov iz MATLAB v Arduino, kjer je x za klicanje serijskega, a pa vrednost, ki jo vnese uporabnik.
fprintf (x, a);
Uporabljamo funkcijo while za ustvarjanje neskončne zanke in kadar koli uporabnik vnese številko '2', se zanka prekine.
medtem ko pojdite a = input ('Pritisnite 1, da vklopite LED in 0, da izklopite:'); fprintf (x, a); če (a == 2) go = false; konec konec
Po končanem kodiranju skripta urejevalnika MATLAB kliknite ' RUN ', da zaženete svoj program, kot je prikazano na spodnji sliki,
MATLAB traja nekaj sekund za obdelavo kode in zagon serijske komunikacije, počakajte, da v spodnjem levem kotu zaslona programske opreme MATLAB prikaže sporočilo »Zaseden«, kot je prikazano na spodnji sliki.
Zdaj boste videli ukazno okno za pošiljanje uporabniškega vnosa, nastavili smo privzeto sporočilo, 'Pritisnite 1, da vklopite LED in 0, da izklopite:'
Pošljite '1', da vklopite LED, '0', da izklopite LED in '2', da prekinete delovanje. Za katero koli nalogo lahko nastavite poljubno številko, vse kar morate storiti je, da samo ustrezno spremenite kodo Arduino. Na koncu je podana celotna koda Arduino.
V spodnjem videoposnetku si lahko ogledate celoten postopek pošiljanja serijskih podatkov iz MATLAB v Arduino z uporabo ukaznega okna.
Zaporedna komunikacija z uporabo MATLAB GUI
Za prikaz serijske komunikacije z uporabo MATLAB GUI bomo z MATLAB-om ustvarili dva grafična gumba za vklop in izklop LED, priključene na Arduino. Podatki bodo serijsko poslani iz MATLAB-a v Arduino ob kliku na te gumbe za vklop in izklop LED. Arduino bo vseboval kodo za sprejemanje serijskih podatkov iz MATLAB in nadzor LED glede na prejete serijske podatke. Koda Arduino bo ostala enaka prejšnji, edina razlika je v tem, da smo prej pošiljali serijske podatke '1' in '0' skozi ukazno okno MATLAB-a, zdaj pa bodo isti podatki poslani ob kliku na dva grafična gumba.
Če želite zagnati GUI, v ukazno okno vnesite spodnji ukaz
vodnik
Odpre se pojavno okno, nato izberite nov prazen GUI, kot je prikazano na spodnji sliki,
Zdaj izberite dve tipki za vklop in izklop LED, kot je prikazano spodaj,
Če želite spremeniti velikost ali spremeniti obliko gumbov, jo preprosto kliknite in lahko povlečete vogale gumba. Z dvoklikom na gumb lahko spremenite barvo, niz in oznako tega gumba. Prilagodili smo dva gumba, kot je prikazano na spodnji sliki.
Gumbe lahko prilagodite po svoji izbiri. Zdaj, ko to shranite, se bo v oknu urejevalnika MATLAB ustvarila koda. Uredite to kodo v skladu z nalogo, ki jo želite izvesti s svojim Arduinom z uporabo MATLAB GUI. Torej spodaj smo uredili kodo MATLAB. Več o ukaznem oknu, oknu urejevalnika itd. Lahko preberete v Uvodu za MATLAB.
Popolna koda MATLAB za vzpostavitev serijske komunikacije med MATLAB in Arduino je podana na koncu tega projekta. Poleg tega sem tukaj za prenos vključili tudi datoteko GUI (.fig) in kodno datoteko (.m) (z desno miškino tipko kliknite povezavo in izberite »Shrani povezavo kot…«), s pomočjo katere lahko gumbe prilagodite svojim zahtevam. Spodaj je nekaj sprememb, ki smo jih naredili za nadzor LED, povezane z Arduino.
Kopirajte in prilepite spodnjo kodo v vrstico št. 74 za nastavitev serijskih vrat in hitrosti prenosa.
Počisti vse; globalni x; x = serijski ('COM18', 'BAUD', 9600); % Prepričajte se, da sta hitrost prenosa podatkov in vrata COM % enaka kot v Arduino IDE fopen (x);
pri čemer se fopen (x) uporablja za odpiranje serijskih vrat za serijsko komunikacijo.
Ko se pomaknete navzdol, boste videli, da sta v GUI ustvarjeni dve funkciji za oba gumba. Zdaj napišite kodo v obe funkciji glede na nalogo, ki jo želite izvesti s klikom.
V funkciji gumba LED-ON kopirajte in prilepite spodnjo kodo tik pred koncem funkcije, da vklopite LED. Kot vidite v spodnji kodi, se fprintf (x, 1) uporablja za pošiljanje serijskih podatkov iz MATLAB v serijski Arduino. Tu pošiljamo na serijsko številko Arduino '1' in če preverite kodo Arduino, boste ugotovili, da bo Arduino zasvetil LED, tako da bo 13. polnilnik VISOK, ko bo na serijska vrata prejel '1'.
globalni x; fprintf (x, 1);
V funkciji gumba za IZKLOP LED kopirajte in prilepite spodnjo kodo tik pred koncem funkcije, da izklopite LED. Kot vidite v spodnji kodi, se fprintf (x, 0) uporablja za pošiljanje serijskih podatkov iz MATLAB v serijski Arduino. V tem delu smo se pošilja "0" na Arduino serijsko in če preverite Arduino kodo, boste našli, da bo Arduino izklop LED tako da je njegova 13 th pin nizka, ko prejme "0" na serijska vrata.
globalni x; fprintf (x, 0);
Po končanem kodiranju s programskim vmesnikom MATLAB in nastavitvi strojne opreme v skladu s shemo vezja, kliknite gumb za zagon, da zaženete urejeno kodo v datoteki.m.
MATLAB lahko traja nekaj sekund, da se odzove, ne kliknite nobenega gumba na GUI, dokler MATLAB ne prikaže indikator zasedenosti, kar lahko vidite v levem spodnjem kotu zaslona, kot je prikazano spodaj,
Ko je vse pripravljeno, kliknite gumb LED-ON in LED-OFF, da vklopite in izklopite LED. Ko pritisnite si LED-ON gumb , 13 th pin Arduino gre visoko in LED povezan s tem PIN začne žareče, in ko pritisnete gumb za LED-OFF , 13 th pin Arduino gre LOW ki omogoča LED izklopiti.
V spodnjem videoposnetku si lahko ogledate celoten postopek pošiljanja serijskih podatkov iz MATLAB v Arduino z uporabo MATLAB GUI.