- Необходими компоненти
- Електрическа схема
- Последователна комуникация с помощта на команден прозорец MATLAB
- Последователна комуникация с помощта на MATLAB GUI
MATLAB е универсален софтуер, който може да се използва за голямо разнообразие от приложения. В предишни уроци на MATLAB обяснихме как да използваме MATLAB за управление на DC двигател, серво мотор и домакински уреди. Тук в този урок ще научим как да използваме MATLAB за последователна комуникация. За приемащия край на серийната комуникация ние използваме Arduino.
Има два начина за настройка на серийната комуникация между MATLAB и Arduino, единият използва командния прозорец, а другият използва MATLAB GUI. Кодът на Arduino и за двата метода ще остане същият. Ако не сте запознати с MATLAB, препоръчително е да започнете с проста LED програма за мигане с MATLAB и да научите основната терминология, използвана в MATLAB.
Необходими компоненти
- MATLAB инсталиран лаптоп (Предпочитание: R2016a или по-нови версии)
- Arduino UNO
- LED (всеки цвят)
- Резистор (330 ома)
Електрическа схема
Горната електрическа схема ще остане същата и за двата начина за установяване на последователна комуникация между MATLAB и Arduino.
Последователна комуникация с помощта на команден прозорец MATLAB
Това е простият метод за настройка на серийната комуникация между Arduino и MATLAB. Тук просто ще изпратим данните от MATLAB до Arduino последователно с помощта на командния прозорец и след това Arduino ще прочете входящите серийни данни. Тогава тези серийно предадени данни могат да се използват за управление на всичко, свързано с Arduino. Тук сме свързали светодиод към Arduino, който ще се включва и изключва според серийно получените данни от Arduino.
Първо качете дадения код на Arduino в Arduino UNO и след това започнете да кодирате в прозореца на редактора на MATLAB. За да отворите нов скрипт на редактора, кликнете върху „ Нов скрипт“, както е показано на изображението по-долу:
След това копирайте и поставете по-долу пълния код на MATLAB в прозореца на редактора за последователна комуникация между MATLAB и Arduino.
% MATLAB код за серийна комуникация между Arduino и MATLAB x = сериен ('COM18', 'BAUD', 9600); fopen (x); go = вярно; докато отидете a = вход ('Натиснете 1, за да включите LED и 0, за да изключите:'); fprintf (x, a); ако (a == 2) go = false; край край
В дадения код по-долу се използва команда за определяне на серийната комуникация в MATLAB. Уверете се, че номерът на com порта е номерът на порта, към който е свързан Arduino и скоростта на предаване трябва да бъде зададена еднаква и в двата кода на Arduino и MATLAB.
x = сериен ('COM18', 'BAUD', 9600);
За да отворите сериен порт, използвайте командата по-долу, fopen (x);
Командата по-долу се използва за серийно изпращане на данни от MATLAB до Arduino, където x е за извикване на сериен, а a е стойността, въведена от потребителя.
fprintf (x, a);
Използваме функцията while за създаване на безкраен цикъл и всеки път, когато потребителят въведе числото „2“, цикълът ще се прекъсне.
докато отидете a = вход ('Натиснете 1, за да включите LED и 0, за да изключите:'); fprintf (x, a); ако (a == 2) go = false; край край
След като завършите кодирането на скрипта на редактора на MATLAB, щракнете върху „ RUN “, за да стартирате програмата си, както е показано на изображението по-долу,
MATLAB отнема няколко секунди за обработка на кода и стартиране на серийната комуникация, изчакайте, докато MATLAB покаже съобщение „ЗАЕТО“ в долния ляв ъгъл на екрана на софтуера, както е показано на изображението по-долу.
Сега ще видите командния прозорец за изпращане на потребителски вход, ние сме задали съобщението по подразбиране, 'Натиснете 1, за да включите LED и 0, за да изключите:'
Изпратете „1“, за да включите светодиода, „0“, за да изключите светодиода и „2“, за да прекъснете операцията. Можете да зададете произволен номер за всяка задача, всичко, което трябва да направите, е просто да промените съответно кода на Arduino. Пълният код на Arduino е даден в края.
Можете да разгледате видеоклипа по-долу, за да разберете пълния процес на изпращане на серийни данни от MATLAB до Arduino с помощта на Command Window.
Последователна комуникация с помощта на MATLAB GUI
За демонстриране на серийната комуникация с помощта на MATLAB GUI, ще създадем два графични бутона с помощта на MATLAB за включване и изключване на светодиода, свързан към Arduino. Данните ще бъдат изпращани последователно от MATLAB до Arduino при кликване върху тези бутони, за да включите и изключите светодиода. Arduino ще съдържа кода за получаване на серийни данни от MATLAB и управление на светодиода според получените серийни данни. Кодът на Arduino ще остане същият като предишния, само че разликата е, че преди това изпращахме серийни данни '1' и '0' през командния прозорец на MATLAB, а сега същите данни ще бъдат изпратени при кликване на два графични бутона.
За да стартирате GUI, въведете командата по-долу в командния прозорец
ръководство
Ще се отвори изскачащ прозорец, след което изберете нов празен GUI, както е показано на изображението по-долу,
Сега изберете два бутона за включване и изключване на светодиода, както е показано по-долу,
За да промените размера или да промените формата на бутоните, просто кликнете върху него и ще можете да плъзнете ъглите на бутона. Чрез двукратно щракване върху бутона можете да промените цвета, низа и етикета на този конкретен бутон. Ние персонализираме два бутона, както е показано на снимката по-долу.
Можете да персонализирате бутоните според вашия избор. Сега, когато запазите това, в прозореца на редактора на MATLAB ще се генерира код. Редактирайте този код според задачата, която искате да изпълните от вашия Arduino, като използвате графичния интерфейс на MATLAB. Така че по-долу сме редактирали кода MATLAB. Можете да научите повече за командния прозорец, прозореца на редактора и т.н. в Първи стъпки с урок MATLAB.
Пълният код на MATLAB за установяване на последователна комуникация между MATLAB и Arduino е даден в края на този проект. Освен това тук включваме GUI файла (.fig) и кодовия файл (.m) за изтегляне (щракнете с десния бутон върху връзката, след което изберете „Запазване на връзката като…“), като използвате, за да можете да персонализирате бутоните според вашите изисквания. По-долу има някои ощипвания, които направихме за управление на светодиода, свързан с Arduino.
Копирайте и поставете долния код на ред №. 74 за настройка на серийния порт и скоростта на предаване.
изчисти всичко; глобален x; x = сериен ('COM18', 'BAUD', 9600); % Уверете се, че скоростта на предаване и COM портът са % същите като в Arduino IDE fopen (x);
където fopen (x) се използва за отваряне на серийния порт за серийна комуникация.
Когато превъртите надолу, ще видите, че има две функции, създадени и за двата бутона в GUI. Сега напишете кода и в двете функции според задачата, която искате да изпълните при щракване.
В LED-ON функция бутон е, копирайте и поставете кода по-долу, точно преди края на функцията, която да включва диода. Както виждате в кода по-долу, fprintf (x, 1) се използва за изпращане на серийни данни от MATLAB към Arduino serial. Тук изпращаме „1“ към серийния Arduino и ако проверите кода на Arduino, ще откриете, че Arduino ще свети светодиода, като направи 13 -ия си пин HIGH, когато получи „1“ на своя сериен порт.
глобален x; fprintf (x, 1);
В LED-OFF функция бутон е, копирайте и поставете кода по-долу, точно преди края на функцията, за да изключите светодиода. Както виждате в кода по-долу, fprintf (x, 0) се използва за изпращане на серийни данни от MATLAB към Arduino serial. В тази част ние изпращаме „0“ на серийния Arduino и ако проверите кода на Arduino, ще откриете, че Arduino ще изключи светодиода, като направи 13 -ия си пин LOW, когато получи „0“ на своя сериен порт.
глобален x; fprintf (x, 0);
След като завършите с MATLAB GUI кодиране и настроите хардуера според схемата, просто кликнете върху бутона за изпълнение, за да стартирате редактирания код във.m файл.
MATLAB може да отнеме няколко секунди, за да отговори, не кликвайте върху който и да е бутон на GUI, докато MATLAB не покаже индикация зает, което можете да видите в долния ляв ъгъл на екрана, както е показано по-долу,
Когато всичко е готово, щракнете върху бутона LED-ON и LED-OFF, за да включите и изключите светодиода. Когато натиснете LED-ON бутон , 13 -ти пин на Arduino отива HIGH и LED свързан с този ПИН код започва да свети, а при натискане на бутон LED-OFF , 13 -ти пин на Arduino отива ниско, което прави е довело до изключване.
Можете да разгледате видеото по-долу, за да разберете пълния процес на изпращане на серийни данни от MATLAB до Arduino с помощта на MATLAB GUI.