Риc 8.11. Плата Arduino удачно подключена!
Запускаем (нажимаем на ̎флажок̎ из блока команд управления скриптом) и проверяем работу.
Скачать данный скрипт 08_01.xml можно по ссылке https://amegakit.ru/libraries/lib_Lab_Om-Robot.zip
Создание скетча в программе Arduino IDE.
Создадим программу ̎бегущий огонек̎ в среде Arduino IDE.
В процедуре setup() настроим режим работы контактов (пинов), к которым подключены светодиоды, как OUTPUT (выход)
void setup() {
pinMode(13,OUTPUT);
pinMode(12,OUTPUT);
pinMode(11,OUTPUT);
pinMode(10,OUTPUT);
pinMode(9,OUTPUT);
}
Алгоритм основного цикла следующий:
1. "гасим" все 5 светодиодов;
2. включаем первый светодиод;
3. вклачаем в скетче продолжительную паузу, чтобы увидеть горение одного светодиода;
4. повторяем шаги 1-3 для второго, третьего и далее до восьмого светодиода;
5. далее возврат в начало цикла loop().
Сокращенный код цикла loop() представлен в листинге 8.1.
Листинг 8.1
void loop() {
// выключить 5 светодиодов
digitalWrite(13, LOW);
digitalWrite(12, LOW);
digitalWrite(11, LOW);
digitalWrite(10, LOW);
digitalWrite(9, LOW);
// включить 1 светодиод
digitalWrite(13, HIGH);
// пауза 1000 мсек
delay(1000);
// выключить 5 светодиодов
….
// включить 2 светодиод
digitalWrite(12, HIGH);
// пауза
delay(1000);
// выключить 5 светодиодов
….
// включить 3 светодиод
digitalWrite(11, HIGH);
// пауза
delay(1000);
// выключить 5 светодиодов
….
// включить 4 светодиод
digitalWrite(10, HIGH);
// пауза
delay(1000);
// выключить 5 светодиодов
….
// включить 5 светодиод
digitalWrite(9, HIGH);
// пауза
delay(1000);
}
Скачать данный скетч 08_01.ino можно по ссылке https://amegakit.ru/libraries/lib_Lab_Om-Robot.zip
Загрузим данный скетч на плату Arduino.
При том, что скетч работает верно, у него есть большой недостаток – он очень громоздкий. Рассмотрим, как можно код значительно уменьшить с помощью функций. Функция – это именованная последовательность операций. Причиной создания функции является необходимость выполнять одинаковое действие несколько раз. В цикле loop() восемь раз встречается совершенно одинаковый код для выключения 8 светодиодов. Создадим функцию ledoff() (выключить светодиоды). Функция создается за скобками функций setup(0 и loop(). Создание функции:
void ledsOff() {
// код функции
digitalWrite(13, LOW);
digitalWrite(12, LOW);
digitalWrite(11, LOW);
digitalWrite(10, LOW);
digitalWrite(9, LOW);
}
И тогда цикл loop() нашего скетча сократится следующим образом (листинг 8.2)
Листинг 8.2
void loop() {
// выключить 5 светодиодов
ledsOff();
// включить 1 светодиод
digitalWrite(13, HIGH);
// пауза 1000 мсек
delay(1000);
//
ledsOff();
digitalWrite(12, HIGH);
delay(1000);
//
ledsOff();
digitalWrite(11, HIGH);
delay(1000);
//
ledsOff();
digitalWrite(10, HIGH);
delay(1000);
//
ledsOff();
digitalWrite(9, HIGH);
delay(1000);
}
Скачать данный скетч 08_02.ino можно по ссылке https://amegakit.ru/libraries/lib_Lab_Om-Robot.zip
Как видно, ввведение функции значительно сократило программу. Здесь мы рассмотрели простейший пример функции, в дальнейшем научимся передавать в функцию параметры и возвращать из функции в программу значения.