В этом уроке научимся использовать функцию " tone(); " и исполним великую мелодию Star Wars.
В данном уроке нам понадобится:
- Arduino
- Зуммер пьезоэлектрический
- Провода Папа-Папа или Набор проводов для макетирования 65 шт.
- Резисторы, 1кОм
- RGB Светодиод
Сборка:
1) Звуковой сигнал будет издаваться с помощью зуммера, его подключаем следующим образом.
| Зуммер | Arduino |
|---|---|
| GND | GND |
| IO | pin 3 |
| VCC | 5V или 3V |
Контакт Pin3 так же может быть изменен на любой удобный Вам цифровой выход. Настраивается здесь:
const int Pin_tone = 3; // номер контакта к которому подключен зуммер
2) RGB Светодиод подключается через резисторы, 1-2кОм. Самая длинная ножка (как правило, вторая) подключается к GND, а остальные ножки через резистор к цифровым портам pin 6, pin 9 , pin 10.
Скетч:
const int Pin_tone = 9; // номер порта зуммера
const byte COUNT_NOTES = 39; // Колличество нот
byte PWM_led_R, PWM_led_G, PWM_led_B;
byte pin_led_R = 3; // Номер контакта для Светодиода R
byte pin_led_G = 10; // Номер контакта для Светодиода G
byte pin_led_B = 6; // Номер контакта для Светодиода B
//частоты ноты
int frequences[COUNT_NOTES] = {
392, 392, 392, 311, 466, 392, 311, 466, 392,
587, 587, 587, 622, 466, 369, 311, 466, 392,
784, 392, 392, 784, 739, 698, 659, 622, 659,
415, 554, 523, 493, 466, 440, 466,
311, 369, 311, 466, 392
};
//длительность нот
int durations[COUNT_NOTES] = {
350, 350, 350, 250, 100, 350, 250, 100, 700,
350, 350, 350, 250, 100, 350, 250, 100, 700,
350, 250, 100, 350, 250, 100, 100, 100, 450,
150, 350, 250, 100, 100, 100, 450,
150, 350, 250, 100, 750
};
void setup() {
pinMode(pin_led_R, OUTPUT); // Настраиваем контакт на выход
pinMode(pin_led_G, OUTPUT); // Настраиваем контакт на выход
pinMode(pin_led_B, OUTPUT); // Настраиваем контакт на выход
pinMode(Pin_tone, OUTPUT); // Настраиваем контакт на выход
}
void loop() {
for (int i = 0; i <= COUNT_NOTES; i++ ) { // Цикл от 0 до количества нот
tone(Pin_tone, frequences[i], durations[i] * 2); // Включаем звук, определенной частоты
PWM_led_R = random(0, 254); // Генерируем случайное число от 0 до 254
PWM_led_G = random(0, 254); // Генерируем случайное число от 0 до 254
PWM_led_B = random(0, 254); // Генерируем случайное число от 0 до 254
analogWrite(pin_led_R, PWM_led_R); // Зажигаем светодлиод на случайно сгенерированную яркость
analogWrite(pin_led_G, PWM_led_G); // Зажигаем светодлиод на случайно сгенерированную яркость
analogWrite(pin_led_B, PWM_led_B); // Зажигаем светодлиод на случайно сгенерированную яркость
delay(durations[i] * 2); // Дауза для заданой ноты
noTone(Pin_tone); // Останавливаем звук
}
}
Скачать скетч можно по этой ссылке
Видео:


Обсуждение