1 //Задание глобальных переменных целочисленного типа integer
2 //Присваивание переменной ledLamp (светодиод) значение выхода 12 на плате
3 int ledLamp = 12;
4
5 //Установка начальных параметров
6 void setup()
7 {
8 //Задание пина ledLamp в качестве выходного
9 pinMode(ledLamp, OUTPUT);
10 }
11
12 //Основной цикл (повторяется бесконечно)
13 void loop()
14 {
15 //Назначение выходного сигнала от пина (выхода ledLamp) HIGH (5 вольт)
16 digitalWrite(ledLamp, HIGH); //Включение светодиода
17 //Пауза 2000 – задается в миллисекундах (1 секунда = 1000 миллисекунд)
18 delay(2000);
19 //Назначение выходного сигнала от пина (выхода ledLamp) LOW (0 вольт)
20 digitalWrite(ledLamp, LOW); //Выключение светодиода
21 //И опять задержка 2 секунды
22 delay(2000);
23 }
1 //Задание глобальных переменных
2 //Глобальные переменные обладают областью видимости в любом месте программы
3 int ledLamps[] = {2,3,4,5,6,7,8,9,10};
4 //Задание массива (нескольких значений), хранящего номера пинов для светодиодов
5 int lastLamp = 8; //Значение (маркер) для хранения последнего включенного //светодиода (последний элемент – всего 9 элементов, нумерация начинается с 0)
6 //Установка начальных параметров
7
8 void setup()
9 {
10 //Будем обходить значения по очереди (в цикле), увеличивая с каждым проходом
11 //цикла значение переменной element и присваивать текущему значению пина,
12 //значение OUTPUT
13 int element; //Объявление вспомогательной переменной для обхода цикла
14 for (element = 0; element <= 8; element++) //Конструкция цикла
15 { //конструкция «++» означает инкремент (увеличение на 1)
16 pinMode(ledLamps[element], OUTPUT);
17 }
18 }
19
20 void loop() // Основной цикл
21 {
22 //Включение светодиодов по очереди
23 //Циклом обходим элементы массива номеров пинов
24 int element; //Объявление вспомогательной переменной для обхода цикла
25 //Обходим все элементы массива пинов
26 for (element = 0; element<=8; element++)
27 {
28 //Проверим: если сейчас не последний элемент – значит, просто «моргнуть»
29 if(element != lastLamp)
30 {
31 digitalWrite(ledLamps[element], HIGH); //Включить светодиод
32 delay(100); //Задержка на 0,1 секунды
33 digitalWrite(ledLamps[element], LOW); //Выключить светодиод
34 delay(100); //Задержка на 0,1 секунды
35 }
36 else //Иначе, если это последний элемент, только зажечь
37 {
38 digitalWrite(ledLamps[element], HIGH); //Включить светодиод
39 delay(100); //Задержка на 0,1 секунды
40 lastLamp--; //Т.к. последний элемент зажгли, нужно уменьшить маркер
41 //последнего элемента на 1 (конструкция «--» означает декремент
42 //(вычитание) единицы)
43 break; //Принудительно прерываем цикл, чтобы остальные светодиоды,
44 //которые уже зажжены, не трогать
45 }
46 }
47 //После того как цикл прошел несколько раз (по количеству светодиодов), маркер
48 //последнего светодиода станет меньше нуля, поэтому мы выключим все светодиоды
49 //по очереди и снова установим маркер на 8
50 if (lastLamp<0)
51 {
52 //Снова в цикле обойдем все светодиоды и отключим каждый
53 for (element = 0; element <=8; element++)
54 {
55 digitalWrite(ledLamps[element], LOW); //Отключение
56 delay(200); //Задержка на 0,2 секунды
57 }
58 lastLamp = 8; //Возвращаем маркер на 8 (начальное положение)
59 }
60 }