Arduino урок 2 — Бегущая строка, множество светодиодов

На этом уроке мы познакомимся с циклами, арифметическими и логическими операторами.

Для урока используем те же детали, что и в уроке 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);
}
Поделись с друьями:

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *