Arduino Song - Mary Had a Little Lamb

Published

Introduction: Arduino Song - Mary Had a Little Lamb

This arduino project is a melody player, that plays a song when you press a button

Step 1: Set Up the Arduino

Here is the arduino set-up

Step 2: Code

#define c

3830 // 261 Hz

#define d 3400 // 294 Hz

#define e 3038 // 329 Hz

#define f 2864 // 349 Hz

#define g 2550 // 392 Hz

#define a 2272 // 440 Hz

#define b 2028 // 493 Hz

#define C 1912 // 523 Hz

#define R 0

int speakerOut = 9;

int button = 2;

void setup() {

pinMode(speakerOut, OUTPUT);

pinMode (button, INPUT);

}

int melody[] = { e, R, d, R, c, R, d, R, e, R,e, R,e, R,d, R,d, R,d, R,e, R,g, R,g, R,e, R,d, R,c, R,d, R,e, R,e, R,e, R,e, R,d, R,d, R,e, R,d, R,c, R,c };

int beats[] = { 4, 1 , 4, 1, 4, 1, 4, 1, 4, 1 ,8, 1, 4, 1,4, 1, 8, 1 ,4, 1 ,4, 1, 8, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4,1,8};

int MAX_COUNT = sizeof(melody) / 2;

long tempo = 100000;

int pause = 10;

int rest_count = 20;

int tone_ = 0;

int beat = 0;

long duration = 0;

void playTone() {

long elapsed_time = 0;

if (digitalRead(button)==HIGH){

if (tone_ > 0) {

while (elapsed_time < duration) {

digitalWrite(speakerOut,HIGH);

delayMicroseconds(tone_ / 2);

digitalWrite(speakerOut, LOW);

delayMicroseconds(tone_ / 2);

elapsed_time += (tone_);

}

}

else {

for (int j = 0; j < rest_count; j++) {

delayMicroseconds(duration);

}

}

}

}

void loop() {

for (int i=0; i

tone_ = melody[i];

beat = beats[i];

duration = beat * tempo;

playTone();

delayMicroseconds(pause);

}

}

Share

    Recommendations

    • Make it Move Contest

      Make it Move Contest
    • Clocks Contest

      Clocks Contest
    • Woodworking Contest

      Woodworking Contest
    user

    We have a be nice policy.
    Please be positive and constructive.

    Tips

    Questions

    3 Comments

    can you tell me what is the missing code in void loop?

    Nice project! Willing to make it, although code is not complete at the begining of loop()

    Thanks for sharing your project!

    What a fun project! Thanks for sharing!