Применение циклов, условий, функций и классов при программировании мехатронного устройства
Помимо правильного подключения различных исполнительных элементов и датчиков к микроконтроллеру, необходимо написать программу, способную правильно обрабатывать полученную информацию и формировать управляющие воздействия. Существуют стандартные языковые конструкции для программирования контроллера, которые позволяют реализовать различные логические операции на нём. Будут рассмотрены наиболее распространённые из них – встречающиеся во многих языках программирования: оператор 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; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!