Ход работы

  1. Я сделал схему для гирлянды по видео уроку и немного изменил ее
  2. Написал код по видео уроку
  3. Впоследствии изменил его под мою гирлянду
//переменные и массивы, которые я использовал 
int sensorPin = 0; 
int ledred1 = 13; //red
int ledblue1 = 12; //blue
int ledyellow1 = 11; //yellow
int ledred2 = 10; //red
int ledblue2 = 9; //blue
int ledyellow2 = 8; //yellow
int ledred3 = 7; //red
int ledblue3 = 6; //blue
int ledyellow3 = 5; //yellow
int ledwhite1 = 4; //white
int ledwhite2 = 3; //white
int ledwhite3 = 2; //white
int pin_array [13] = {13,12,10,9,7,6,3,11,4,8,2,5}; //массив пинов 
int pin_array_rev [13] = {5,2,8,4,11,3,6,7,9,10,12,13}; //перевернутый массив пинов
int sensorValue = 0;
int Value_new;

4. По видео были написаны 4 функции для красного, желтого, синего и белого цвета

void red()
{
	digitalWrite(ledred1, HIGH); //светодиод загорается 
    digitalWrite(ledred2, HIGH);
    digitalWrite(ledred3, HIGH);
    delay(100);
    digitalWrite(ledred1, LOW); //светодиод гаснет
    digitalWrite(ledred2, LOW);
    digitalWrite(ledred3, LOW);
    delay(100);
}

5. Позже мною были написаны 3 функции для режимов работы гирлянды

void rndcolor() //функция для случайного мигания светодиодов
{
  int rnd=random(2,14); //случайное число. От 2 до 14, потому что у меня пины заняты от 2 до 13
  digitalWrite(rnd,HIGH);
  delay(random(10,50)); //случайная задержка от 10 до 50
  digitalWrite(rnd,LOW);
}
void array_led() //функция для цикличного загорания светодиодов, которая использует массив
{
  for (int i = 0; i < 14; i++)
  {
    digitalWrite(pin_array[i],HIGH);
    delay(200);
    digitalWrite(pin_array[i],LOW);
  }		
}
void wave_led() //функция  для условной "волны" загорания светодиодов, которая использует два массива: перевернутый и обычный
{
  for (int i = 0; i < 14; i++)
  {
    digitalWrite(pin_array[i],HIGH);
    digitalWrite(pin_array_rev[i],HIGH);
    delay(100);
    digitalWrite(pin_array[i],LOW);
    digitalWrite(pin_array_rev[i],LOW);
  }
}

6. Эти функции перенес в основной цикл, в котором уже было создано два режима работы

void loop()
{
  int x = 0;
  Value_new = analogRead(sensorPin); //переменная берет значение из потенциометра
  Value_new = map(Value_new,0,1023,1,5); //здесь значение переносятся из одного диапазона в другой для удобного переключения режимов
  if (Value_new == 1) 
  {
    rndcolor();
  }
  else if (Value_new == 2) 
  {
    while(x!=5)
    {
      white();
      delay(200);
      yellow();
      x++;
    }
    x=0;
    while(x!=5)
    {
      red();
      delay(200);
      blue();
      x++;
    }
    x=0;

  }
  else if (Value_new == 3)
  {
    yellow();
    delay(1000);
    red();
    delay(1000);
    white();
    delay(1000);
    blue();
    delay(1000);
  }
  else if (Value_new == 4)
  {
    array_led();
  }
  else if (Value_new == 5)
  {
    wave_led();
  }
}

Как работает гирлянда

При значении потенциометра

  1. Запускается функция rndcolor(). В этом режиме мигают светодиоды случайным образом
  2. Запускается режим, при котором загорается белый цвет через некоторое время желтый и так 5 раз, после этого загорается красный цвет через некоторое время синий и также 5 раз
  3. Запускается режим, при котором загорается желтый цвет, через некоторое время загорается красный, после красного белый, после белого синий
  4. Запускается функция array_led(). В этом режиме загораются светодиоды поочередно сверху слева и переходят направо. По сути загораются и гаснут по кругу
  5. Запускается функция wave_led(). В этом режиме загораются светодиоды слева сверху и одновременно снизу справа, получается эффект волны

Ссылка на проект
https://www.tinkercad.com/things/9atchzYJtpH-girlyanda/editel?sharecode=HWIa-v60tnakJ1Us1gKLXKvPsvdPmq2-7Zkq0zqe_W4

Компоненты

19 проводов

12 резисторов 220 Ом

12 LED

Потенциометр
Макетка
Arduino UNO R3

Cхема подключения компонентов к плате

Возможности применения в жизни

Потенциометр можно применить для:

  • Регулировки параметров: громкость звука, мощность и т.д.
  • Также как и в практической работе “гирлянда” для изменения режима работы устройства

Видео работы