Ülesanne 2 Valguskett

1️⃣ Эксперимент — Использование потенциометра

Цель эксперимента — изучить, как с помощью потенциометра можно управлять скоростью мигания светодиода на плате Arduino. Работаю в tinkercad.com.

◾️Компоненты

  • Плата Arduino Uno
  • Светодиод
  • Резистор (220 Ом)
  • Потенциометр
  • Макетная плата (breadboard)
  • Соединительные провода
  • USB-кабель для подключения Arduino к компьютеру

◾️Схема подключения

  1. Светодиод:
    • Анод светодиода через резистор подключается к пину 13 Arduino.
    • Катод светодиода подключается к GND (земля).
  2. Потенциометр:
    • Один край потенциометра подключается к 5V.
    • Другой край — к GND (земля).
    • Центральный вывод — к аналоговому входу A0.

◾️Код программы

int sensorPin = 0;      // Пин, к которому подключен потенциометр (A0)
int ledPin = 13;        // Пин для светодиода

int sensorValue = 0;    // Переменная для хранения значения с потенциометра

void setup() {
  pinMode(ledPin, OUTPUT);      // Настройка пина светодиода как выход
  Serial.begin(9600);           // Настройка последовательной связи
}

void loop() {
  sensorValue = analogRead(sensorPin);    // Считываем значение потенциометра (0–1023)
  
  digitalWrite(ledPin, HIGH);              // Включаем светодиод
  delay(sensorValue);                      // Ждём время, зависящее от положения потенциометра
  
  digitalWrite(ledPin, LOW);               // Выключаем светодиод
  delay(sensorValue);                      // Ждём снова

  float voltage = sensorValue * (5.0 / 1023.0);  // Перевод значения в напряжение (0–5 Вольт)
  Serial.println(voltage);                       // Отправляем напряжение в монитор порта
}
  • Потенциометр меняет сопротивление и даёт Arduino значение от 0 до 1023 на входе A0.
  • Arduino использует это значение для установки задержки мигания светодиода.
  • Чем больше значение — тем медленнее мигает светодиод.

✅ Вывод

Потенциометр позволяет управлять скоростью мигания светодиода в реальном времени, изменяя значение сопротивления.
Этот простой эксперимент учит работать с аналоговыми входами Arduino и показывает, как физические изменения можно переводить в цифровые сигналы.


2️⃣ Проект Гирлянда (Valguskett)

◾️Описание проекта

В этом проекте создаётся гирлянда, состоящая из девяти светодиодов, управляемых платой Arduino Uno.
Управление режимами мигания происходит с помощью потенциометра.
Пользователь может выбирать один из семи световых режимов.

◾️Используемые компоненты

  • Плата Arduino Uno
  • 9 обычных светодиодов
  • 9 резисторов (220 Ом)
  • Потенциометр
  • Макетная плата (breadboard)
  • Соединительные провода
  • Источник питания (USB)

◾️Схема подключения

  • Аноды светодиодов подключаются к цифровым пинам 2–10 через резисторы.
  • Катоды светодиодов соединяются с GND (земля).
  • Потенциометр подключён к аналоговому входу A0.

◾️Принцип работы

  • Arduino считывает значение с потенциометра.
  • В зависимости от положения потенциометра выбирается один из семи режимов.
  • Каждый режим управляет светодиодами по определённой схеме, создавая разные световые эффекты.

◾️Код

int ledPins[] = {2, 3, 4, 5, 6, 7, 8, 9, 10};
int arrayLength = sizeof(ledPins) / sizeof(ledPins[0]);

void setup() {
  for (int i = 0; i < arrayLength; i++) {
    pinMode(ledPins[i], OUTPUT);
  }
  randomSeed(analogRead(0));
}

void loop() {
  int potValue = analogRead(A0);
  int mode = map(potValue, 0, 1023, 0, 6); // 0–6: всего 7 режимов
  mode = constrain(mode, 0, 6);

  switch (mode) {
    case 0:
      allBlink();
      break;
    case 1:
      sequenceBlink();
      break;
    case 2:
      candleEffect();
      break;
    case 3:
      runningLight();
      break;
    case 4:
      pingPong();
      break;
    case 5:
      meetingLight();
      break;
    case 6:
      starburstEffect();
      break;
  }
}

// Режим 0. Все мигают
void allBlink() {
  for (int i = 0; i < arrayLength; i++) digitalWrite(ledPins[i], HIGH);
  delay(300);
  for (int i = 0; i < arrayLength; i++) digitalWrite(ledPins[i], LOW);
  delay(300);
}

// Режим 1. Последовательное мигание
void sequenceBlink() {
  for (int i = 0; i < arrayLength; i++) {
    digitalWrite(ledPins[i], HIGH);
    delay(100);
    digitalWrite(ledPins[i], LOW);
  }
}

// Режим 2. Эффект свечи
void candleEffect() {
  for (int i = 0; i < arrayLength; i++) {
    int flickerChance = random(0, 10);
    if (flickerChance < 3) {
      digitalWrite(ledPins[i], HIGH);
      delay(random(10, 100));
      digitalWrite(ledPins[i], LOW);
      delay(random(10, 50));
    }
  }
}

// Режим 3. Бегущий огонь
void runningLight() {
  for (int i = 0; i < arrayLength; i++) {
    digitalWrite(ledPins[i], HIGH);
    delay(100);
    digitalWrite(ledPins[i], LOW);
  }
}

// Режим 4. Пинг-понг
void pingPong() {
  for (int i = 0; i < arrayLength; i++) {
    digitalWrite(ledPins[i], HIGH);
    delay(80);
    digitalWrite(ledPins[i], LOW);
  }
  for (int i = arrayLength - 2; i > 0; i--) {
    digitalWrite(ledPins[i], HIGH);
    delay(80);
    digitalWrite(ledPins[i], LOW);
  }
}

// Режим 5. Встречный бегущий свет
void meetingLight() {
  int mid = arrayLength / 2;
  for (int i = 0; i <= mid; i++) {
    if (i < arrayLength) digitalWrite(ledPins[i], HIGH);
    if (arrayLength - 1 - i >= 0) digitalWrite(ledPins[arrayLength - 1 - i], HIGH);
    delay(150);
    if (i < arrayLength) digitalWrite(ledPins[i], LOW);
    if (arrayLength - 1 - i >= 0) digitalWrite(ledPins[arrayLength - 1 - i], LOW);
  }
}

// Режим 6.  Эффект звезды
void starburstEffect() {
  int mid = arrayLength / 2;
  for (int offset = 0; offset <= mid; offset++) {
    if (mid - offset >= 0) digitalWrite(ledPins[mid - offset], HIGH);
    if (mid + offset < arrayLength) digitalWrite(ledPins[mid + offset], HIGH);
    delay(100);
  }
  for (int i = 0; i < arrayLength; i++) {
    digitalWrite(ledPins[i], LOW);
  }
  delay(200);
  • Используется массив для управления несколькими светодиодами.
  • Применяются конструкции for, switch-case, digitalWrite, analogRead.
  • Эффекты построены на простых циклах и задержках delay().
  • Потенциометр позволяет плавно переключаться между режимами.

◾️Описание режимов

№ режимаНазваниеОписание действия
0Все мигаютВсе светодиоды загораются и гаснут одновременно.
1Последовательное миганиеСветодиоды загораются один за другим.
2Эффект свечиСветодиоды случайно мерцают с разной скоростью.
3Бегущий огоньСветодиоды включаются по очереди слева направо.
4Пинг-понгСветодиоды загораются в обе стороны последовательно.
5Встречный бегущий светСветодиоды бегут с краёв к центру.
6Эффект звездыСветодиоды загораются от центра к краям.

💿 Демонстрация на 🔗 ВИДЕО (click)

✅ Вывод

Проект демонстрирует основы работы с массивами, циклами и аналоговыми входами на Arduino.
Гирлянда создаёт разные световые эффекты и позволяет пользователю самостоятельно управлять их сменой с помощью потенциометра.