На этом уроке мы познакомимся с циклами, арифметическими и логическими операторами.
Для урока используем те же детали, что и в уроке 1, только прибавим больше светодиодов и резисторов, ну и проводов (перемычек) тоже добавим.
Собираем как тут:
int n = 0; // начинаем подключать светодиоды с о пина void setup() { for (n = 0; n <= 8; n++) // создаем цикл, с каждым разом n увеличивается на 1, но до условия, что n<=8 { pinMode(n, OUTPUT); digitalWrite(n, LOW); // все светодиоды изначально потушены } } void loop() { for (n = 0; n <= 8; n++) // зажигаем светодиоды от 0 пина до 8 { digitalWrite(n, HIGH); delay(80); digitalWrite(n, LOW); } for (n = 8; n > 0; n--) // теперь в обратную сторону { digitalWrite(n, HIGH); delay(80); digitalWrite(n, LOW); }}
Визуально это выглядит так:
Вот еще один интересный пример
int ledPins[] = {2,3,4,5,6,7,8,9}; // так мы задаем массив void setup() { int index; for(index = 0; index <= 7; index++) // опять создаем цикл { pinMode(ledPins[index],OUTPUT); } } void loop() { oneAfterAnotherNoLoop(); // тут несколько объявлений функций, достаточно их раскоментировать //oneAfterAnotherLoop(); //oneOnAtATime(); //pingPong(); //marquee(); //randomLED(); } void oneAfterAnotherNoLoop() { int delayTime = 100; digitalWrite(ledPins[0], HIGH); delay(delayTime); digitalWrite(ledPins[1], HIGH); delay(delayTime); digitalWrite(ledPins[2], HIGH); delay(delayTime); digitalWrite(ledPins[3], HIGH); delay(delayTime); digitalWrite(ledPins[4], HIGH); delay(delayTime); digitalWrite(ledPins[5], HIGH); delay(delayTime); digitalWrite(ledPins[6], HIGH); delay(delayTime); digitalWrite(ledPins[7], HIGH); delay(delayTime); digitalWrite(ledPins[7], LOW); delay(delayTime); digitalWrite(ledPins[6], LOW); delay(delayTime); digitalWrite(ledPins[5], LOW); delay(delayTime); digitalWrite(ledPins[4], LOW); delay(delayTime); digitalWrite(ledPins[3], LOW); delay(delayTime); digitalWrite(ledPins[2], LOW); delay(delayTime); digitalWrite(ledPins[1], LOW); delay(delayTime); digitalWrite(ledPins[0], LOW); delay(delayTime); } void oneAfterAnotherLoop() { int index; int delayTime = 100; for(index = 0; index <= 7; index++) { digitalWrite(ledPins[index], HIGH); delay(delayTime); } for(index = 7; index >= 0; index--) { digitalWrite(ledPins[index], LOW); delay(delayTime); } } void oneOnAtATime() { int index; int delayTime = 100; for(index = 0; index <= 7; index++) { digitalWrite(ledPins[index], HIGH); delay(delayTime); digitalWrite(ledPins[index], LOW); } } void pingPong() { int index; int delayTime = 100; for(index = 0; index <= 7; index++) { digitalWrite(ledPins[index], HIGH); delay(delayTime); digitalWrite(ledPins[index], LOW); } for(index = 7; index >= 0; index--) { digitalWrite(ledPins[index], HIGH); delay(delayTime); digitalWrite(ledPins[index], LOW); } } void marquee() { int index; int delayTime = 200; for(index = 0; index <= 3; index++) { digitalWrite(ledPins[index], HIGH); digitalWrite(ledPins[index+4], HIGH); delay(delayTime); digitalWrite(ledPins[index], LOW); digitalWrite(ledPins[index+4], LOW); } } void randomLED() { int index; int delayTime; index = random(8); // функция выводит случайные числа, и загораются случайные светодиоды delayTime = 100; digitalWrite(ledPins[index], HIGH); delay(delayTime); digitalWrite(ledPins[index], LOW); }