Празднуем со светом и звуком: DIY-проект «С днём рождения» на Arduino
Компоненты и материалы
- Динамик: 0,25 Вт, 8 Ом (возможно, придётся припаять провода; у автора — 0,5 Вт) — 1 шт.
- Беспаечная макетная плата (breadboard) — 1 шт.
- Arduino UNO — 1 шт.
- Перемычки (jumper wires) — 1 набор
- Светодиоды (LED): красный, синий, белый (цвета можно выбрать по желанию) — 3 шт.
- Резисторы 220 Ом — 3 шт. (для светодиодов)
Необходимые инструменты
- Паяльник (если нужно припаять провода к динамику)
Программное обеспечение
- Arduino IDE
О проекте
После неудачной попытки создать индикатор расстояния на светодиодной шкале автор решил заняться чем-то более простым. Вдохновение пришло после просмотра проектов на Arduino Project Hub — так родилась идея музыкальной поздравительной установки, играющей «Happy Birthday» с сопровождением световых эффектов.
Пошаговая инструкция
Шаг 1: Подготовка компонентов
Соберите все детали. При необходимости припаяйте перемычки к контактам динамика.
Шаг 2: Установка светодиодов
Установите три светодиода на макетную плату рядом друг с другом. Обратите внимание на полярность: длинная нога — анод (+), короткая — катод (–).
Шаг 3: Подключение анодов к Arduino
Соедините аноды светодиодов перемычками с цифровыми выводами Arduino:
- Красный — пин 9
- Синий — пин 10
- Белый — пин 11
Шаг 4: Подключение катодов через резисторы
Катоды каждого светодиода подключите к отдельному резистору 220 Ом. Вторые выводы резисторов соедините с общей шиной земли (GND) на макетной плате, а её — с выводом GND на Arduino.
Шаг 5: Подключение динамика
Отрицательный провод динамика — на шину GND макетной платы, положительный — на пин 3 Arduino (PWM-вывод, поддерживающий функцию tone()).
Код прошивки
Проект использует два файла: основной скетч и библиотеку нот pitches.h.
Основной скетч (Happy Birthday Lights + Sounds)
// RED 9; BLUE 10; WHITE 11
#include "pitches.h"
// Ноты мелодии "Happy Birthday"
int melody[] = {
NOTE_C4, NOTE_C4, NOTE_D4, NOTE_C4, NOTE_F4, NOTE_E4,
NOTE_C4, NOTE_C4, NOTE_D4, NOTE_C4, NOTE_G4, NOTE_F4,
NOTE_C4, NOTE_C4, NOTE_C5, NOTE_A4, NOTE_F4, NOTE_E4,
NOTE_D4, NOTE_AS4, NOTE_AS4, NOTE_A4, NOTE_F4, NOTE_G4, NOTE_F4
};
// Длительности нот: 4 = четверть, 8 = восьмая и т.д.
int noteDurations[] = {
8, 8, 4, 4, 4, 2,
8, 8, 4, 4, 4, 2,
8, 8, 4, 4, 4, 4, 4,
8, 8, 4, 4, 4, 2
};
void setup() {
pinMode(9, OUTPUT); // красный
pinMode(10, OUTPUT); // синий
pinMode(11, OUTPUT); // белый
for (int thisNote = 0; thisNote < 25; thisNote++) {
// Случайно зажигаем два из трёх светодиодов
int randomLight1 = random(9, 12);
int randomLight2 = random(9, 12);
int randomLight3 = random(9, 12);
digitalWrite(randomLight1, HIGH);
digitalWrite(randomLight2, HIGH);
digitalWrite(randomLight3, LOW);
// Длительность ноты в мс
int noteDuration = 1130 / noteDurations[thisNote];
tone(3, melody[thisNote], noteDuration);
// Пауза между нотами (1.275 от длительности)
int pause = noteDuration * 1.275;
delay(pause);
noTone(3);
}
delay(3000);
// Гасим все светодиоды
digitalWrite(9, LOW);
digitalWrite(10, LOW);
digitalWrite(11, LOW);
}
void loop() {
// Повтор не нужен — играем один раз
}
Библиотека pitches.h
Файл содержит определения частот для нот от B0 до D8. Подключается директивой #include "pitches.h". Полный список констант доступен в исходном коде проекта.
Схема подключения
Схема в формате Fritzing (happy_birthday_lights__sounds_I16bf0SBDq.fzz) показывает все соединения наглядно. Откройте её в программе Fritzing для просмотра.
Заключение
Простой и весёлый проект для начинающих: за 15–20 минут сборки получите устройство, которое поздравит именинника музыкой и мигающими огнями. Отличная база для экспериментов с звуком и светом на Arduino.
Производственный процесс
- Титановые проволоки: типы, свойства и промышленные применения
- Соглашения об обозначении соединений проводов на электрических схемах: понятное руководство
- Сети vs шины: понятное руководство по проводке в цифровых системах
- Управление яркостью LED с ШИМ через кнопку на Arduino Mega
- Проект с датчиком DHT11: индикация температуры светодиодами и пьезо-динамиком на Arduino
- GPS-трекер с пространственным анализом на Azure IoT Hub
- Логгер температуры и влажности на Arduino с DHT11 и Ethernet Shield
- DIY Guitar Speed Pick & Stomp Pedal — моторизированный медиатор на Arduino
- Расшифровка приборной панели: лампы, индикаторы и их значение
- Празднование 50-летия точности: Metal Cutting Corporation отмечает полувековой юбилей