Во время летних каникул получилось так что пришло увлечение музыкой. Т.к. мне Arduino не привезли в деревню, кроме прогулок и катания на велосипеде получил несколько элементарных уроков музыки и научился играть мелодию "Воздушная кукуруза" на фортепьяно. Как только вернулся домой сразу же захотелось что нибудь сделать на основе Arduino и вот результат работы, навеянной веселыми днями беззаботных каникул.
Динамик обычный 8 омный, светодиоды тоже обычные, R1=220 Ом, R2=1.5 кОм.
Конечно многое позаимствовано из интернета, но схема упрощена (оставлен один резистор на все светодиоды), а так же адаптирован скетч (так как найденный в интернете не работал на моей плате)
#include "pitches.h"
int speakerPin = 11;
int ledPins[] = {10,9,8,7,6,5,4,3,2};
int notes[] ={NOTE_E5, NOTE_G5, NOTE_A6, NOTE_B6, NOTE_C6, NOTE_D6, NOTE_E6, NOTE_FS6, NOTE_G6,0};
int melody[] = {
6,5,6,4,1,4,0,9,
6,5,6,4,1,4,0,9,
6,7,8,7,8,8,6,7,
6,7,7,5,6,5,6,6,
4,6,9};
int noteDurations[] = {
4,4,4,4,4,4,4,4,
4,4,4,4,4,4,4,4,
4,4,4,8,4,4,8,4,
8,4,4,8,4,8,4,4,
8,4,4
};
int tempo = 300;
double wegmodeleren = 1.05;
double modulatie = 1.00;
void setup() {
for (int thisLed = 0; thisLed < 9; thisLed++) {
pinMode(ledPins[thisLed], OUTPUT);
}
}
void loop() {
for (int x = 0; x < 3; x++){
for (int thisNote = 0; thisNote < 35; thisNote++) {
digitalWrite(ledPins[melody[thisNote-1]], LOW);
int noteDuration = tempo/noteDurations[thisNote];
tone(speakerPin, notes[melody[thisNote]]*modulatie,noteDuration);
digitalWrite(ledPins[melody[thisNote]], HIGH);
int pauseBetweenNotes = noteDuration * 2.20;
delay(pauseBetweenNotes);
}
}
modulatie = modulatie * wegmodeleren;
}
Комментариев нет:
Отправить комментарий