Menu
CoddyTech

Мелодия из двух массивов

Часть раздела Выходные сигналы путешествия по Arduino на Coddy. Урок 14 из 24.

Ноты мелодии имеют разную длительность. Второй массив может хранить длительности, соответствующие нотам: notes[i] и durations[i] связаны между собой.

int notes[] = {262, 262, 392, 392, 440, 440, 392};
int durations[] = {400, 400, 400, 400, 400, 400, 800};

Две одинаковые ноты подряд сольются в одну длинную ноту. Короткая пауза после каждой ноты помогает разделить их, поэтому проигрывайте ноту в течение её длительности, а затем подождите немного дольше:

tone(8, notes[i], durations[i]);
delay(durations[i] + 50);

Длительность прекращает звучание ноты, а дополнительные 50 мс — это пауза перед следующей нотой.

Когда индекс выходит за пределы последней ноты, мелодия заканчивается: подождите немного, прежде чем начать её снова, чтобы она не накладывалась сама на себя.

challenge icon

Задание

Средне

Сыграй первую строчку Twinkle Twinkle Little Star на пине 8:

  • ноты: 262, 262, 392, 392, 440, 440, 392
  • длительность: по 400 мс, а для последней ноты — 800 мс
  • после каждой ноты подожди время её звучания плюс 50 мс
  • после последней ноты подожди ещё одну секунду и начни снова

Нажми Run, затем Check.

Попробуйте сами

const int buzzerPin = 8;
// создайте здесь массивы notes и durations, а также индекс

void setup() {
}

void loop() {
  // воспроизведите одну ноту, подождите время её звучания плюс 50 ms, затем перейдите к следующей
  // после последней ноты подождите секунду и начните снова
}
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Выходные сигналы

Потренируйтесь самостоятельно: Песочница Arduino