Potentsiomeetri kasutamine

Пробуем первое задания реализовать, чтобы попробовать пульсо метр
int sensorPin = 0;
int ledPin = 8;
int sensorValue = 0;
void setup()
{
pinMode(ledPin, OUTPUT);
Serial.begin(9600);
}
void loop() {
sensorValue = analogRead(sensorPin); // loeb analoog sisendi väärtust ja saadab tagasi täisarvu vahemikus 0 kuni 1023. See tähendab 10 bitilist täpsust (2^10 = 1024).
digitalWrite(ledPin, HIGH);
delay(sensorValue);
digitalWrite(ledPin, LOW);
delay(sensorValue);
float voltage = sensorValue * (5.0 / 1023.0); // konverteerime väärtuse (0 - 1023) ja tagastab (0 - 5V):
Serial.println(voltage); // Saadud tulemused kirjutame Serial Monitori.
}
Значения кода:
sensorValue — переменная, в которую будет сохраняться считанное значение с датчика.
pinMode(ledPin, OUTPUT); — настраиваем пин 8 как выход, чтобы можно было управлять светодиодом.
Serial.begin(9600); — запускаем серийный порт для вывода данных на компьютер (скорость передачи — 9600 бод).
sensorValue = analogRead(sensorPin); – Считываем аналоговое значение с пина A0. Диапазон: от 0 до 1023, т.е. 10-битное значение. Например, 0 = 0 В, 1023 ≈ 5 В.
Преобразуем значение sensorValue в напряжение (в вольтах).
Гирлянда-Valguskett
Используемые компоненты:
- Arduino UNO
- 6 светодиодов (-*-)
- 6 резисторов (220 Ом)
- Макетная плата (breadboard)
- Соединительные провода (jumper wires)
- Потенциометр (для выбора режима освещения)
Схема соединения:

Описание схемы Arduino-проекта
На изображении представлена схема управления шестью светодиодами с помощью платы Arduino Uno и потенциометра, который выбирает один из пяти режимов мигания.
Подключения:
- Потенциометр:
- Левый контакт подключён к GND (чёрный провод) — земля.
- Правый контакт — к 5V (красный провод) — питание.
- Средний контакт (выход) — к A0 (зелёный провод) — аналоговый вход для считывания значения в коде (
analogRead(A0)).
- Светодиоды:
- Всего 6 светодиодов, подключены к пинам 13, 12, 11, 10, 9 и 8.
- Каждый пин управляет своим светодиодом через резистор.
Как работает код:
- Потенциометр управляет переменной
mode(0–4), определяя режим мигания. - В функции
loop()выбирается соответствующий эффект:mode == 0– все лампочки мигают вместе.mode == 1– мигают по очереди.mode == 2– мигают парами (например, как красный-зелёный-синий).mode == 3– эффект свечи (случайное мигание).mode == 4– бегущий огонёк (последовательно загораются по одному).
Ниже расмотрим код:
int potValue = 0;
int mode = 0;
int ledPins[] = {13, 12, 11, 10, 9, 8}; // масив на 6 лампочек
int arrayLength = sizeof(ledPins) / sizeof(ledPins[0]);
void setup() {
for (int i = 0; i < arrayLength; i++) {
pinMode(ledPins[i], OUTPUT);
}
Serial.begin(9600);
}
void loop() {
potValue = analogRead(A0);
mode = map(potValue, 0, 1023, 0, 4); // 0–4
Serial.print("Mode:");
Serial.println(mode);
if (mode == 0) {
allBlink();
} else if (mode == 1) {
blinkInSequence();
} else if (mode == 2) {
blinkByColor();
} else if (mode == 3) {
candleEffect();
} else if (mode == 4) {
runningLight();
}
}
// Режим 0: Все мигают одновременно
void allBlink() {
for (int i = 0; i < arrayLength; i++) digitalWrite(ledPins[i], HIGH);
delay(500);
for (int i = 0; i < arrayLength; i++) digitalWrite(ledPins[i], LOW);
delay(500);
}
// Режим 1: Мигают по очереди
void blinkInSequence() {
for (int i = 0; i < arrayLength; i++) {
digitalWrite(ledPins[i], HIGH);
delay(500);
digitalWrite(ledPins[i], LOW);
}
}
// Режим 2: Мигают по "цветам" (условно: группы по 2)
void blinkByColor() {
for (int i = 0; i < arrayLength; i += 2) {
digitalWrite(ledPins[i], HIGH);
if (i + 1 < arrayLength) digitalWrite(ledPins[i + 1], HIGH);
delay(1000);
digitalWrite(ledPins[i], LOW);
if (i + 1 < arrayLength) digitalWrite(ledPins[i + 1], LOW);
}
}
// Режим 3: Эффект свечи (случайное мерцание)
void candleEffect() {
for (int i = 0; i < arrayLength; i++) {
int Chance = random(0, 7); // meil on 0-6
if (Chance < 3) { // Umbes 30% tõenäosus, et LED vilgub
digitalWrite(ledPins[i], HIGH);
delay(random(10, 1000)); // juhuslik vilkumise kestus
digitalWrite(ledPins[i], LOW);
delay(random(10, 500)); // juhuslik paus
}
}
}
// Режим 4: Бегущий свет
void runningLight() {
static int current = 0;
for (int i = 0; i < arrayLength; i++) {
if (i == current) {
digitalWrite(ledPins[i], HIGH);
} else {
digitalWrite(ledPins[i], LOW);
}
}
current = current + 1;
if (current >= arrayLength) {
current = 0;
}
delay(100);
}
Разделим код на несколько частей, чтобы расмотреть их подробнее
Объявление переменных
potValue — значение с потенциометра, от 0 до 1023.
mode — текущий режим мигания (от 0 до 4).
ledPins[] — массив пинов, на которые подключены светодиоды.
arrayLength — автоматически определяет, сколько лампочек.
int potValue = 0;
int mode = 0;
int ledPins[] = {13, 12, 11, 10, 9, 8}; // масив на 6 лампочек
int arrayLength = sizeof(ledPins) / sizeof(ledPins[0]);
Функция setup()
pinMode(..., OUTPUT) — говорит Ардуино, что на этих пинах будут выходы.
Serial.begin(9600) — включаем передачу данных по USB, чтобы можно было выводить информацию на экран компьютера.
void setup() {
for (int i = 0; i < arrayLength; i++) {
pinMode(ledPins[i], OUTPUT);
}
Serial.begin(9600);
}
Функция loop()
analogRead(A0) — считывает аналоговое значение с потенциометра.
map(..., 0, 1023, 0, 4) — переводит значение с потенциометра в режим (5 режимов: 0,1,2,3,4).
Serial.println(mode) – выводим номер режима (на экран 0 – 4).
Далее — обычные if – условия, каждый режим вызывает свою функцию.
void loop() {
potValue = analogRead(A0);
mode = map(potValue, 0, 1023, 0, 4); // 0–4
Serial.print("Mode:");
Serial.println(mode);
if (mode == 0) {
allBlink();
} else if (mode == 1) {
blinkInSequence();
} else if (mode == 2) {
blinkByColor();
} else if (mode == 3) {
candleEffect();
} else if (mode == 4) {
runningLight();
}
}
Режим 0: Все мигают одновременно
for (int i = 0; i < arrayLength; i++) — перебирает каждый светодиод в массиве.
digitalWrite(ledPins[i], HIGH) — включает светодиод.
digitalWrite(ledPins[i], LOW) — выключает светодиод.
delay(500) — задержка полсекунды.
// Режим 0: Все мигают одновременно
void allBlink() {
for (int i = 0; i < arrayLength; i++) digitalWrite(ledPins[i], HIGH);
delay(500);
for (int i = 0; i < arrayLength; i++) digitalWrite(ledPins[i], LOW);
delay(500);
}
Режим 1: Мигают по очереди
digitalWrite(ledPins[i], HIGH) — включаем один светодиод.
digitalWrite(ledPins[i], LOW) — выключаем этот же светодиод.
// Режим 1: Мигают по очереди
void blinkInSequence() {
for (int i = 0; i < arrayLength; i++) {
digitalWrite(ledPins[i], HIGH);
delay(500);
digitalWrite(ledPins[i], LOW);
}
}
Режим 3: Эффект свечи (случайное мерцание)
random(0, 7) — создаёт случайное число от 0 до 6.
if (Chance < 3) — примерно в 30 лампочка загорается.
delay(random(10, 1000)) — лампочка светится случайное количество времени.
delay(random(10, 500)) — после выключения идёт случайная пауза.
// Режим 3: Эффект свечи (случайное мерцание)
void candleEffect() {
for (int i = 0; i < arrayLength; i++) {
int Chance = random(0, 7); // meil on 0-6
if (Chance < 3) { // Umbes 30% tõenäosus, et LED vilgub
digitalWrite(ledPins[i], HIGH);
delay(random(10, 1000)); // juhuslik vilkumise kestus
digitalWrite(ledPins[i], LOW);
delay(random(10, 500)); // juhuslik paus
}
}
}
Режим 4: Бегущий огонёк
static int current = 0; — переменная, которая помнит, какой светодиод горит. Благодаря static, она не сбрасывается при каждом вызове loop().
Цикл for перебирает все лампочки:
- Если это “нужная” лампочка (номер совпадает с
current), она загорается. - Все остальные выключаются.
current = current + 1; — переходим к следующей лампочке.
if (current >= arrayLength) — проверяем, не вышли ли мы за границы. Если да — начинаем с первой.
// Режим 4: Бегущий свет
void runningLight() {
static int current = 0;
for (int i = 0; i < arrayLength; i++) {
if (i == current) {
digitalWrite(ledPins[i], HIGH);
} else {
digitalWrite(ledPins[i], LOW);
}
}
current = current + 1;
if (current >= arrayLength) {
current = 0;
}
delay(100);
}
Как пользователь видит работу гирлянды в зависимости от положения потенциометра
Поворот ручки потенциометра влияет на режим мигания светодиодов. Это делает гирлянду интерактивной — каждый поворот создаёт новую световую атмосферу
В программе Arduino IDE можно наблюдать за положением потенциометра двумя способами:
через Последовательный монитор (Serial Monitor), где значения отображаются цифрами,
или через Графический монитор (Serial Plotter), где изменение значений видно как линия на графике.
Оба инструмента доступны в меню:
Инструменты (Tools/Tööriistad) → Последовательный монитор / Jadapordi monitor и Серийный график / Jadapordi graafik (Serial Plotter).


🔘 Режим 0 — «Синхронное мигание»
Положение потенциометра: ближе к 0 (в моем случаи 0)
🟢 Все шесть светодиодов мигают одновременно, создавая эффект пульсирующего света.
🔁 Свет включается на полсекунды, затем выключается на полсекунды, и так по кругу.
💡 Это классический “новогодний режим” — спокойно и ритмично.
🔘 Режим 1 — «Один за другим»
Положение потенциометра: чуть правее от нуля (в моем случаи 1)
➡️ Светодиоды включаются по очереди, создавая эффект «шагающего света».
🚶 Каждый светодиод загорается и гаснет один за другим, задержка — 500 мс.
✨ Похоже на световые волны — плавно и последовательно.
🔘 Режим 2 — «Цветовые пары»
Положение потенциометра: среднее (в моем случаи 2)
🎨 Светодиоды мигают парами: сначала 1 и 2, затем 3 и 4, потом 5 и 6.
🕒 Каждая пара загорается на секунду, затем выключается.
🌈 Создаёт ритмичную симметрию — подходит для цветовых композиций.
🔘 Режим 3 — «Эффект свечи»
Положение потенциометра: ближе к правому краю (в моем случаи 3)
🕯 Светодиоды мигают хаотично, с разной яркостью и продолжительностью.
🎲 Каждый из них может случайно загореться на разное время (от 10 до 1000 мс).
🌌 Это имитация живого пламени — уютная, живая атмосфера.
🔘 Режим 4 — «Бегущий огонёк»
Положение потенциометра: максимально вправо (в моем случаи 1)
➡️ Только один светодиод горит в каждый момент времени.
🏃 Он быстро «перескакивает» с одной позиции на другую каждые 100 мс.
🔁 Получается эффект бегущей точки.
Видео
Видео схемы, как работает код на www.tinkercad.com
Так же видео как работает в реальности наш проект гирлянда
Применение проекта «Гирлянда с потенциометром» в реальной жизни
- Умная гирлянда для праздников (спользуется в качестве новогоднего или рождественского украшения)
- Освещение для интерьера или мебели (Подсветка полок, ниш, кухонной зоны или кровати)
- Учебный проект и демонстрация эффектов (Пример для уроков электроники, программирования или физики)
- Прототип умного освещения (Возможность добавления дистанционного управления или сенсоров)
- Арт-инсталляции и световые шоу (Выбор режима световых эффектов прямо во время выступления или экспозиции)

