Применение циклов, условий, функций и классов при программировании мехатронного устройства



 

Помимо правильного подключения различных исполнительных элементов и датчиков к микроконтроллеру, необходимо написать программу, способную правильно обрабатывать полученную информацию и формировать управляющие воздействия. Существуют стандартные языковые конструкции для программирования контроллера, которые позволяют реализовать различные логические операции на нём. Будут рассмотрены наиболее распространённые из них – встречающиеся во многих языках программирования: оператор if, оператор for, цикл while.

Оператор if используется в сочетании с операторами сравнения и позволяет выполнять определённые действия при истинности условия.

Например:

if (a != b) // если а не равно b

{

a = b; // присвоить а значение b

}

else // иначе

{

a = 0; // присвоить а

b = 0; // и b нулю

}

Вторая часть конструкции else, выполняемая в случае не соблюдения условия в скобках после if, может быть пропущена, если нет необходимости в альтернативном действии.

В скобках после if могут быть использованы следующие операторы сравнения:

x == y   // x равно y

x != y              // x не равно y

x < y      // x меньше y

x > y      // x больше y

x <= y   // x меньше или равно y

x >= y   // x больше или равно y

Для записи нескольких условий, которые должны проверяться одновременно, могут быть использованы логические операторы:

&& – логическое “И” – истинно только в том случае, если оба условия выполняются, например:

if (x>0 && x<5) // если х больше нуля и меньше пяти

|| – логическое “ИЛИ” – истинно в случае, когда выполняется хотя бы одно из условий:

if (x > 0 || x < 0) // истинно, если x не равен нулю

 

Оператор for используется для повторения блока операторов, заключенных в фигурные скобки. Счетчик повторений обычно используется для приращения и завершения цикла. Оператор for подходит для любых повторяющихся действий и используется в сочетании с массивами данных или выходов.

 

Наращивание яркости горения светодиода на аналоговом выходе

void setup()

{

pinMode(10, OUTPUT);

}

 

void loop()

{

for (int i=0; i <= 255; i++)

{

analogWrite(10, i);

delay(10);

}

}

 

Программа работает следующим образом: переменная i создаётся в начале выполнения оператора for один раз и приравнивается нулю, после этого, пока i меньше или равно 255, её значение подаётся на аналоговый выход контроллера. Каждое выполнение блока операторов сопровождается инкрементированием i на единицу. По достижении 256, оператор завершает своё выполнение и контроллер начинает выполнять функцию loop() сначала.

 

Цикл while(“условие”) будет выполнять блок операторов до тех пор, пока “условие” в скобках не примет значение логического нуля. Например:

int var = 0;      //созданная целочисленная переменная равна нулю

while(var < 200) //пока значение переменной меньше 200, выполнять

{                     //следующий за while блок операторов

var++;           //инкрементируем значение переменной, чтобы цикл

}                     //имел возможность завершения

 

Следует отметить, что конструкция for применяется в тех случаях, когда нам заранее известно количество повторений блока операторов, а цикл while может использоваться в ситуации, когда число итераций цикла заранее неизвестно.

 

Задание: Соберите схему, состоящую из микроконтроллера, LCD-монитора и двух кнопок, подключённых к линиям прерывания. Напишите программу, которая будет угадывать число от одного до ста за семь вопросов следующего типа: “Задуманное число больше 50?”. Пользователь должен отвечать на вопросы “Да” либо “Нет”, нажимая на одну из двух соответствующих кнопок. Начните с моделирования процесса работы программы, записав последовательности вопросов и ответы на них на бумаге. Составьте блок-схему работы программы и включите её в отчёт в соответствии с требованиями к его оформлению, приведённым в справочных материалах данных методических указаний.

 

Программный интерфейс и создание собственных библиотек

 

Любое автоматизированное устройство, алгоритм работы которого необходимо настраивать человеку-оператору, должно иметь в своём составе интерфейс для взаимодействия с ним. В учебных проектах он будет ограничен небольшим количеством кнопок, светодиодов индикации определённых состояний процесса настройки и LCD-монитора, на который будет выводиться значащая информация о текущем состоянии устройства и его компонентов.

 

Довольно часто отдельные фрагменты кода необходимо многократно использовать в различных проектах. Для того, чтобы не переписывать его каждый раз, его помещают в отдельные файлы – библиотеки. Некоторые из них уже использовались в проектах ранее: библиотека монитора, сервопривода, связи микроконтроллеров.

В качестве примера приводится процесс создания библиотеки, содержащей всего одну функцию – вычисления площади круга.

Сначала в папке программы Arduino IDE\libraries\ создаётся папка библиотеки, название которой может состоять только из латинских букв и цифр, при этом не может начинаться с цифры. Назовём её “circleRound”. Внутри папки при помощи текстового редактора создаются два файла:

- circleRound.h;

- circleRound.cpp.

Файл circleRound.h будет содержать следующий код:

#include <inttypes.h> // Необходимо для использования числовых типов

#define PI 3.14 // Определяем Пи с точностью в 2 знака после запятой

 

float circleRound(float radius); //Единственная библиотечная функция

 

Файл circleRound.cpp будет содержать следующий код:

#include <inttypes.h> // Необходимо для использования числовых типов

#include <Arduino.h> // Подключение функции pow()

#include <circleRound.h> // в заголовочном файле

// находится PI и объявление функции

// Собственно библиотечная функция

float circleRound (float radius)

{

return PI*pow(radius, 2);

}

Чтобы библиотека заработала и подключилась к программе, Arduino IDE необходимо перезапустить.

В других файлах библиотеку можно применить следующим образом:

#include <circleRound.h> // Подключение библиотеки

 

float a = circleRound(5.21); // присвоить созданной переменной a

                                        //значение площади круга с радиусом 5.21

 

Задание: соберите автоматическое устройство и напишите программу к нему, реализующую управление некоторым объектом по информации с двух-четырёх датчиков. Исполнительными устройствами могут быть сервоприводы, микроприводы или реле. Снабдите устройство интерфейсом управления, состоящим из монитора и нескольких кнопок или работающего от сигналов, поступающих через последовательное соединение. Уточните вариант своего задания у преподавателя.

 


Дата добавления: 2018-06-27; просмотров: 206; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!