Применение циклов, условий, функций и классов при программировании мехатронного устройства
Помимо правильного подключения различных исполнительных элементов и датчиков к микроконтроллеру, необходимо написать программу, способную правильно обрабатывать полученную информацию и формировать управляющие воздействия. Существуют стандартные языковые конструкции для программирования контроллера, которые позволяют реализовать различные логические операции на нём. Будут рассмотрены наиболее распространённые из них – встречающиеся во многих языках программирования: оператор 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?”. Пользователь должен отвечать на вопросы “Да” либо “Нет”, нажимая на одну из двух соответствующих кнопок. Начните с моделирования процесса работы программы, записав последовательности вопросов и ответы на них на бумаге. Составьте блок-схему работы программы и включите её в отчёт в соответствии с требованиями к его оформлению, приведённым в справочных материалах данных методических указаний.
Дата добавления: 2018-09-24; просмотров: 325;