В музыке каждой ноте соответствует строго определенная частота, или как говорят музыканты — тон. Также у каждой ноты есть обозначение на нотном стане и буквенный код. Например тона Ля обозначается как A.
Не будем сильно вдаваться в музыкальную теорию так как это не является предметом нашего курса. Просто примем эти обозначения, соберем схему и составим программу для воспроизведения нот.
#define SPEAKER_PIN 15 int tones[8] = {262, 294, 330, 349, 392, 440, 494, 523}; enum {c, d, e, f, g, a, b, C}; void setup() { analogWriteRange(1024); } void loop() { analogWriteFreq(tones[c]); analogWriteFreq(tones[f]); analogWriteFreq(tones[b]); }
Объявляем массив tones
для значений частоты нот. Чтобы не запоминать какому индексу в массиве соответствует какая нота воспользуемся специальным типом данных enum
. Он позволяет создать набор именованных констант, перечисленных через запятую, по умолчанию начиная с нуля. То есть с = 0, d = 1, e = 2 и так далее. Теперь мы можем воспользоваться следующим обращением к элементам массива tones[c]
, которое вернет значение частоты ноты с — 262.
Приведенная программа проигрывает по кругу 3 ноты До, Фа и Си.