пятница, 6 сентября 2013 г.

Самый первый проект на Arduino!

Во время летних каникул получилось так что пришло увлечение музыкой. Т.к. мне 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;
}


video




Related Posts Plugin for WordPress, Blogger...