Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Производственный процесс

Arduino: свет и звук — US National Anthem на Nano

Компоненты и материалы

Инструменты

О проекте

Проект воспроизводит два мелодических фрагмента: «Charge» (стадионный фанфарный сигнал) и US National Anthem («The Star-Spangled Banner») с синхронной индикацией на RGB-светодиодах. В режиме ожидания светодиоды мерцают случайно. Управление — двумя кнопками.

Особенности реализации

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

Полный скетч (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(), массивами нот и неблокирующей логикой кнопок.

Производственный процесс

  1. Цепь с переключателем: практическое руководство по базовым электрическим цепям
  2. Эволюция и мастерство новогодних гирлянд: от древних традиций к современной инженерии
  3. Мягкость салфеток: как лосьон повышает комфорт и характеристики
  4. Acceed IGS-9822DGP: 12-портовый гигабитный коммутатор с 4 SFP — высокопроизводительное промышленное сетевое решение
  5. Точный мониторинг температуры в серверной на Raspberry Pi
  6. Панель переключателей и LED для Microsoft Flight Simulator 2020 на Arduino
  7. Оператор switch-case в C++: синтаксис, применение и практические примеры
  8. Оператор switch-case в C: синтаксис, примеры и лучшие практики
  9. Оператор Switch-Case в Java: Синтаксис, примеры и лучшие практики
  10. MEP National Network™ партнерит с производителями из национальных меньшинств для роста