Мелодия из двух массивов
Часть раздела Выходные сигналы путешествия по 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 мс — это пауза перед следующей нотой.
Когда индекс выходит за пределы последней ноты, мелодия заканчивается: подождите немного, прежде чем начать её снова, чтобы она не накладывалась сама на себя.
Задание
СреднеСыграй первую строчку 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, затем перейдите к следующей
// после последней ноты подождите секунду и начните снова
}
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Выходные сигналы
3Звук
Воспроизведение тона на зуммереЗвуковые сигналы и тишинаВысота тона с помощью регулятораНоты в массивеМелодия из двух массивовПотренируйтесь самостоятельно: Песочница Arduino