Arduino: свет и звук — US National Anthem на Nano
Компоненты и материалы
- Arduino Nano R3 (ATmega328P, old bootloader) — 1 шт.
- Пьезо-зуммер (16 Ом) — 1 шт.
- Тактильные кнопки 6×6×6 мм — 2 шт.
- Роторный выключатель 250V 3A — 1 шт.
- Резисторы 330 Ом — 3 шт.
- Светодиоды — 6 шт. (2 красных, 2 белых, 2 синих)
- Пайковая макетная плата Mini — 1 шт.
- Крона 9V с держателем — 1 шт.
Инструменты
- Паяльник
О проекте
Проект воспроизводит два мелодических фрагмента: «Charge» (стадионный фанфарный сигнал) и US National Anthem («The Star-Spangled Banner») с синхронной индикацией на RGB-светодиодах. В режиме ожидания светодиоды мерцают случайно. Управление — двумя кнопками.
Особенности реализации
- Используется функция
tone()для генерации звука. - Код структурирован через функции:
SingleDWwithNote()— воспроизведение ноты с зажиганием соответствующего цвета,USNationalAnthem()иCharge()— последовательности нот. - Реализован стaccato (короткие ноты) через коэффициенты
x=0.92,y=0.08. - После завершения гимна частота всех нот повышается на 3 полутона (умножение на
1.06^3) — интересный эффект. - Кнопки подключены с внутренними pull-up резисторами (LOW при нажатии).
Схема подключения
- Красные LED → D6 (через 330 Ом)
- Белые LED → D7
- Синие LED → D8
- Зуммер → D9
- Кнопка «Start» (гимн) → D5
- Кнопка «Charge» → D3 (прерывание)
- Питание: 9V → VIN, GND → GND, выключатель в разрыве плюса.
Полный скетч (USA_ANTHEM_Updated.ino)
/* Star Spangled Banner with LEDs — Ryan Aebi, 2018 */
const int ChargeButton = 3;
const int StartButton = 5;
const int BuzzerPin = 9;
const int RedLED = 6, WhiteLED = 7, BlueLED = 8;
int n = 1000;
int DurationOn = n, DurationRest = n;
float x = .66, y = .34;
int Twinkle_Rate = 250;
int StartButtonState, ChargeButtonState;
// Частоты нот (Гц)
int Note1 = 233, Note2 = 294, Note3 = 330, Note4 = 349, Note5 = 392,
Note6 = 440, Note7 = 466, Note8 = 523, Note9 = 587, Note10 = 622, Note11 = 698;
void Charge() { /* ... фанфары ... */ }
void SingleDWwithNote(int HZ, int TurnOn, int Duration, int Staccato) {
if (Staccato) DurationOn = Duration * x; else DurationOn = Duration;
digitalWrite(TurnOn, HIGH);
tone(BuzzerPin, HZ, DurationOn);
delay(DurationOn);
digitalWrite(TurnOn, LOW);
if (Staccato) { DurationRest = Duration * y; delay(DurationRest); }
}
void USNationalAnthem() {
n = 577; // 104 BPM
x = .92; y = .08;
// Бар 1-5
SingleDWwithNote(Note4, RedLED, n*3/4, 1);
SingleDWwithNote(Note2, WhiteLED, n/4, 1);
// ... далее полная последовательность нот ...
// В конце повышение тона на 3 полутона:
for (int i=1; i<=11; i++) {
int* note = (int*)(&Note1) + (i-1);
*note = *note * 1.06 * 1.06 * 1.06;
}
}
void Twinkle(int Twinkle_Time) { /* случайное мерцание */ }
void setup() {
pinMode(ChargeButton, INPUT_PULLUP);
pinMode(StartButton, INPUT_PULLUP);
pinMode(RedLED, OUTPUT); pinMode(WhiteLED, OUTPUT); pinMode(BlueLED, OUTPUT);
pinMode(BuzzerPin, OUTPUT);
digitalWrite(RedLED, LOW); digitalWrite(WhiteLED, LOW); digitalWrite(BlueLED, LOW);
}
void loop() {
StartButtonState = digitalRead(StartButton);
ChargeButtonState = digitalRead(ChargeButton);
if (StartButtonState == LOW) USNationalAnthem();
else if (ChargeButtonState == LOW) Charge();
else Twinkle(Twinkle_Rate);
}
Схема, фото сборки и таблица стоимости деталей доступны в разделе «Schematics». Проект отлично подходит для изучения работы с tone(), массивами нот и неблокирующей логикой кнопок.
Производственный процесс
- Цепь с переключателем: практическое руководство по базовым электрическим цепям
- Эволюция и мастерство новогодних гирлянд: от древних традиций к современной инженерии
- Мягкость салфеток: как лосьон повышает комфорт и характеристики
- Acceed IGS-9822DGP: 12-портовый гигабитный коммутатор с 4 SFP — высокопроизводительное промышленное сетевое решение
- Точный мониторинг температуры в серверной на Raspberry Pi
- Панель переключателей и LED для Microsoft Flight Simulator 2020 на Arduino
- Оператор switch-case в C++: синтаксис, применение и практические примеры
- Оператор switch-case в C: синтаксис, примеры и лучшие практики
- Оператор Switch-Case в Java: Синтаксис, примеры и лучшие практики
- MEP National Network™ партнерит с производителями из национальных меньшинств для роста