1 Arduino v prostredí MATLAB

Práca s digitálnymi a analógovými vstupmi a výstupmi

Prostredie MATLAB umožňuje komunikáciu s Arduinom pomocou podporného balíčka. MATLAB nahrá na Arduino komunikačný server, ktorý umožní zapisovať a čítať rôzne periférie. V tomto návode si pozrieme ako môžeme pracovať s digitálnymi a analógovými vstupmi a výstupmi.

Čo budeme potrebovať?

  • Arduino MEGA 2560
  • USB kábel typu A-B
  • bread board (BB-301)
  • 2x rezistor 220 Ohm a 1x rezistor 10 kOhm
  • 2x LED (napr. červená a modrá)
  • tlačidlo
  • potenciometer
  • prepojovacie drôty
  • počítač/notebook s prostredím MATLAB
  • MATLAB Support Package for Arduino

Schéma

Zapojte súčiastky podľa uvedenej schémy

Príklad dráhy

Príklad dráhy

Spojenie s Arduinom

Pre spojenie prostredia MATLAB s Arduino doskou potrebujeme vytvoriť do premennej objekt arduino. MATLAB väčšinou dokáže rozpoznať typ a port, na ktorom sa nachádza Arduino. Objektu arduino ich však môžete tiež špecifikovať. Percento v nasledujúcom kóde reprezentuje komentár - riadok, ktorý sa nevykoná.

% vytvorenie objektu a pre spojenie s Arduinom
a=arduino
% alternatívny príkaz pre špecifikáciu dosky a portu
% a=arduino('COM3','MEGA2560')

Digitálny výstup

Digitálny výstup môžeme zapnúť a vypnúť funkciou writeDigitalPin objektu arduino v premennej a. Funkcia potrebuje pin Arduina a logickú 1 (5 Voltov) pre zapnútie výstupu a logickú 0 (0 Voltov), pre jeho vypnutie.

% Zapnutie LED na pine D7
a.writeDigitalPin('D7',1)
% Vypnutie LED na pine D7
% a.writeDigitalPin('D7',0)

Pre blikanie LED môžeme vytvoriť nasledujúci program. Cyklus for 10x zapne a vypne LED na pine D7, pričom medzi blikaniami urobí 0.5s prestávky.

for x=1:10
    a.writeDigitalPin('D7',1)
    pause(0.5)
    a.writeDigitalPin('D7',0)
    pause(0.5)
end

Analogový výstup

Arduino nemá analógový výstup v pravom slova zmysle. Vie ho ale vytvárať pomocou PWM na digitálnom výstupe. Analógový výstup môžeme nastaviť funkciou writePWMVoltag objektu arduino v premennej a. Funkcia potrebuje pin Arduina a hodnotu analogového výstupu v rozsahu 0 až 5 Voltov.

% Analogový výstup 5V
a.writePWMVoltage('D9',5)
%% Analogový výstup 2V
a.writePWMVoltage('D9',2)
%% Analogový výstup 0.5V
a.writePWMVoltage('D9',0.5)

Nasledujúci kód postupne rozsvecuje a stmavuje LED s krokom 0.5 Volta.

for x=0:0.5:5
    a.writePWMVoltage('D7',x)
    pause(0.1)
end
for x=5:-0.5:0
    a.writePWMVoltage('D7',x)
    pause(0.1)
end

Digitálny vstup

Digitálny vstup môžeme prečítať funkciou readDigitalPin objektu arduino v premennej a. Vyskúšajte nasledujúci príkaz so stlačeným tlačidlom na pine D8 a následne zopakujte s uvoľneným tlačidlom. Čo výpíše MATLAB do prikazového riadku? Jedna hodnota reprezentuje logickú 1 a druhá logickú 0.

% Čítanie digitálneho pinu
a.readDigitalPin("D8")

Analógový vstup

Analógový vstup môžeme prečítať funkciou readVoltage objektu arduino v premennej a. Analógový signál z potenciometra prečítame na pine A0.

% Čítanie analogového pinu
a.readVoltage("A0")

Naučené príkazy môžeme skombinovať v nasledujúcom príklade. Stlačte tlačídlo, pootočte poteciometrom, sledujte čo robia LED a čo sa deje na vašej obrazovke.

tic
% program pobeží 60 sekúnd 
while toc<60
    % prečítaj digitálny vstup
    di=a.readDigitalPin('D8');
    % prečítaj analógový vstup 
    ai=a.readVoltage('A0');
    % zapíš na digitálny výstup
    a.writeDigitalPin('D9',di);
    % zapíš PWM
    a.writePWMVoltage('D7',ai);  
    % výpis na obrazovku
    [di ai toc] 
end

Zrušenie spojenia s Arduinom

Pre uvoľnenie spojenia s Arduinom potrebujeme zmazať objekt arduino v premennej a. Funkcia clear zmaže všetky premenné z pracovného prostredia, prípadne môžeme priamo špecifikovať konkrétnu premennú. Pred prácou so Simulinkom nezabudnite uvoľniť objekt arduino.

clear
% clear a