На этом занятии нам понадобится:
10 светодиодов;
10 резисторов на 220 Ом;
Макетная плата;
Микроконтроллер Arduino UNO;
Соединительные провода.
Соберите схему на макетной плате, загрузите скетч на микроконтроллер, запустите работу прототипа. Результат работы запишите на видео и вышлите на электронную почту:
shkadov.v@yandex.ru
//Задание глобальных переменных
//Глобальные переменные обладают областью видимости в любом месте программы
int ledLamps[] = {2, 3, 4, 5, 6, 7, 8, 9, 10};
//Задание массива (нескольких значений), хранящего номера пинов для светодиодов
int lastLamp = 8; //Значение (маркер) для хранения последнего включенного //светодиода (последний элемент – всего 9 элементов, нумерация начинается с 0)
//Установка начальных параметров
void setup()
{
//Будем обходить значения по очереди (в цикле), увеличивая с каждым проходом
//цикла значение переменной element и присваивать текущему значению пина,
//значение OUTPUT
int element; //Объявление вспомогательной переменной для обхода цикла
for (element = 0; element <= 8; element++) //Конструкция цикла
{ //конструкция «++» означает инкремент (увеличение на 1)
pinMode(ledLamps[element], OUTPUT);
}
}
void loop() // Основной цикл
{
//Включение светодиодов по очереди
//Циклом обходим элементы массива номеров пинов
int element; //Объявление вспомогательной переменной для обхода цикла
//Обходим все элементы массива пинов
for (element = 0; element <= 8; element++)
{
//Проверим: если сейчас не последний элемент – значит, просто «моргнуть»
if (element != lastLamp)
{
digitalWrite(ledLamps[element], HIGH); //Включить светодиод
delay(100); //Задержка на 0,1 секунды
digitalWrite(ledLamps[element], LOW); //Выключить светодиод
delay(100); //Задержка на 0,1 секунды
}
else //Иначе, если это последний элемент, только зажечь
{
digitalWrite(ledLamps[element], HIGH); //Включить светодиод
delay(100); //Задержка на 0,1 секунды
lastLamp--; //Т.к. последний элемент зажгли, нужно уменьшить маркер
//последнего элемента на 1 (конструкция «--» означает декремент
//(вычитание) единицы)
break; //Принудительно прерываем цикл, чтобы остальные светодиоды,
//которые уже зажжены, не трогать
}
}
//После того как цикл прошел несколько раз (по количеству светодиодов), маркер
//последнего светодиода станет меньше нуля, поэтому мы выключим все светодиоды
//по очереди и снова установим маркер на 8
if (lastLamp < 0)
{
//Снова в цикле обойдем все светодиоды и отключим каждый
for (element = 0; element <= 8; element++)
{
digitalWrite(ledLamps[element], LOW); //Отключение
delay(200); //Задержка на 0,2 секунды
}
lastLamp = 8; //Возвращаем маркер на 8 (начальное положение)
}
}