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

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

Для урока используем те же детали, что и в уроке 1, только прибавим больше светодиодов и резисторов, ну и проводов (перемычек) тоже добавим.
Собираем как тут:

Screenshot_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);
}
Поделись с друьями:
  • Добавить ВКонтакте заметку об этой странице
  • Мой Мир
  • Facebook
  • Twitter
  • LiveJournal
  • MySpace
  • В закладки Google
  • Яндекс.Закладки
  • LinkedIn
  • Reddit

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

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