Структуры управления языком: держите под контролем своего ардуино

Структуры управления языком: держите под контролем своего ардуино
Структуры управления языком: держите под контролем своего ардуино
Anonim

Структуры управления языками: держите под контролем Arduino

Сделайте ваши программы Arduino более гибкими, узнав, как использовать структуры управления языком Arduino.

Структуры управления языком программирования позволяют вам действовать на основе определенных условий. Структуры управления Arduino очень похожи на управляющую структуру языка C и включают:

  • если
  • если еще
  • для
  • корпус переключателя
  • в то время как
  • делать пока
  • ломать
  • Продолжать
  • вернуть
  • идти к

В этом уроке мы обсудим наиболее часто используемые структуры управления:

  • для цикла
  • инструкция switch
  • если еще
  • while loop

Условные заявления

Если утверждения и while операторы называются условными операторами. Они оценивают конкретное условие и выполняют ряд операторов в скобках, если условие истинно {}. Вот пример:

if (pin_b == LOW) {digitalWrite (ledPin, HIGH); // Это говорит о включении светодиода}

Оператор if состоит из слова «если», за которым следует условие в круглых скобках. Если условие истинно, тогда выполняются инструкции между скобками, которые следуют за ним. В этом случае, если цифровое значение pin_b LOW, программа установит значение ledPin в HIGH. Заявления между скобками выполняются только один раз.

Цикл while похож на оператор if, но в этом случае операторы между скобками выполняются снова и снова, пока условие не станет ложным. Вот пример:

while (pin_0 == LOW) {

digitalWrite (ledPin, HIGH);

задержки (100);

digitalWrite (ledPin, LOW);

задержки (100);

switchValue = digitalRead (pin_0); // Это сохраняет новое значение в переменной switchValue

}

В этом примере программа переключит состояние на светодиод (т.е. мигает), пока пользователь не нажмет переключатель, в результате чего цифровое значение на pin_0 переместится на HIGH.

Эксперимент 1: FOR Loop

В этом эксперименте мы демонстрируем, как использовать «для цикла» для изменения яркости светодиода.

Требуется оборудование

  • 1 x Arduino Mega2560
  • 1 макет
  • 1 светодиод x
  • 1 х 220 Ом резистор
  • 2 провода для перемычек

Схема подключения

Image
Image

В этой простой схеме светодиод подключается к контакту 2 Arduino. Чтобы изменить яркость светодиода, мы меняем рабочий цикл сигнала с широтно-импульсной модуляцией (PWM) на выводе 2. Программа использует цикл for to to fist от тусклого до яркого, а второй - от яркого до тусклого.

Код: изменение яркости с использованием цикла


// changing brightness using for loop const int pwm = 8; int i; void setup() { pinMode(pwm, OUTPUT); } void loop() { /* FOR LOOP SYNTAX for(initialization; condition; increment) { CODE } */ for(i=0; i <256; i+) { analogWrite(pwm, i); // for loop from low to High delay(10); } for(i=255; i> 0; i--) { analogWrite(pwm, i); // for loop from high to low delay(10); } }

Скачать код

Эксперимент 2: Условные заявления

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

  • Выписка
  • Если-else if-else
  • Пока цикл

Оператор switch гораздо более компактен, особенно если необходимо проверить множество условий. Компиляторы также могут оптимизировать операторы switch, что приводит к более быстрому выполнению кода.

Цикл while отличается от цикла for в том смысле, что он не имеет счетчика предельных циклов. Единственный способ выйти из цикла while - это не удовлетворять условие внутри скобки.

Требуется оборудование

  • 1 x Arduino Mega2560
  • 1 макет
  • 2 x светодиода
  • 2 x 220 Ом резистор
  • 3 провода перемычки

Схема подключения

Image
Image

Два светодиода подключены к двум выходным выводам Arduino, и Arduino включает или выключает их с помощью условных операторов. Существует четыре разных состояния:

  1. Если последовательные данные == 1, загорится только зеленый светодиод.
  2. Если последовательные данные == 2, загорится только желтый светодиод.
  3. Если последовательные данные == 3, оба светодиода будут включены.
  4. Если последовательные данные равны любому другому значению, светодиоды будут отключены.

Код 1: Заявление о переключении


// Use of Switch Structure const int green = 8; const int yellow = 9; char i; void setup() { pinMode(green, OUTPUT); //setting pins output pinMode(yellow, OUTPUT); Serial.begin(9600); } void loop() { i = Serial.read(); // To serially send data to switch statements Serial.println(i); delay(50); switch(i) //Typical switch structure { case '1': //Condition for Green LED digitalWrite(green, HIGH); digitalWrite(yellow, LOW); delay(350); break; case '2': //Condition for Yellow LED digitalWrite(green, LOW); digitalWrite(yellow, HIGH); delay(350); break; case '3': //Condition for Both LED digitalWrite(green, HIGH); digitalWrite(yellow, HIGH); delay(350); break; default: //Leds are off digitalWrite(green, LOW); digitalWrite(yellow, LOW); break; } }

Скачать код

Код 2: Использование инструкций If-Else


// Use of If - else statements const int green = 8; const int yellow = 9; char i; void setup() { pinMode(green, OUTPUT); //setting pins output pinMode(yellow, OUTPUT); Serial.begin(9600); } void loop() { i = Serial.read(); // To serially send data to switch statements Serial.println(i); delay(50); if(i=='1') { digitalWrite(green, HIGH); digitalWrite(yellow, LOW); delay(350); } else if(i=='2') { digitalWrite(green, LOW); digitalWrite(yellow, HIGH); delay(350); } else if(i=='3') { digitalWrite(green, HIGH); digitalWrite(yellow, HIGH); delay(350); } else { digitalWrite(green, LOW); digitalWrite(yellow, LOW); } }

Скачать код

Код 3: Использование while Loops


// Use of while Loop const int green = 8; const int yellow = 9; char i; void setup() { pinMode(green, OUTPUT); //setting pins output pinMode(yellow, OUTPUT); Serial.begin(9600); } void loop() { i = Serial.read(); // To serially send data to switch statements Serial.println(i); delay(50); digitalWrite(green, LOW); digitalWrite(yellow, LOW); while(i=='1') { digitalWrite(green, HIGH); digitalWrite(yellow, LOW); i = Serial.read(); Serial.println(i); delay(350); } while(i=='2') { digitalWrite(green, LOW); digitalWrite(yellow, HIGH); i = Serial.read(); Serial.println(i); delay(350); } while(i=='3') { digitalWrite(green, HIGH); digitalWrite(yellow, HIGH); i = Serial.read(); Serial.println(i); delay(350); } }

Скачать код

Видео

Попробуйте этот проект сами! Получить спецификацию.