torsdag 8 oktober 2015

Få arduinon att spela ljud

Du kan programmera arduinon att spela melodier, som denna välkända... Ursäkta slakten.


Och här är koden (du måste också skapa en ny tab där du lägger in pitches.h som du kan hitta här: https://www.arduino.cc/en/Tutorial/ToneMelody?from=Tutorial.Tone)

/*
  Melody

 Plays a melody

 circuit:
 * 8-ohm speaker on digital pin 8

This code is based on the original work by:

 created 21 Jan 2010
 modified 30 Aug 2011
 by Tom Igoe

This example code is in the public domain.

 http://www.arduino.cc/en/Tutorial/Tone

 The melody is programmed by Kristoffer Nordekvist who do not own the rights to the melody.

 */
#include "pitches.h"

// notes in the melody:
int melody[] = {
  NOTE_A3, NOTE_C4, NOTE_E4, NOTE_A4, NOTE_B4, NOTE_E4, NOTE_C4, NOTE_B4, NOTE_C5, NOTE_E4, NOTE_C4, NOTE_C5, NOTE_FS4, NOTE_D4, NOTE_A3,
  NOTE_FS4, NOTE_E4, NOTE_C4, NOTE_A3, NOTE_C4, NOTE_E4, NOTE_C4, NOTE_A3, NOTE_G3, NOTE_A3, NOTE_A3
};

// note durations: 4 = quarter note, 8 = eighth note, etc.:
int noteDurations[] = {
  4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 2, 4, 4, 4, 4, 4, 2
};

void setup() {
  // iterate over the notes of the melody:
  for (int thisNote = 0; thisNote < 26; thisNote++) {

    // to calculate the note duration, take one second
    // divided by the note type.
    //e.g. quarter note = 1000 / 4, eighth note = 1000/8, etc.
    int noteDuration = 1000 / noteDurations[thisNote];
    tone(8, melody[thisNote], noteDuration);

    // to distinguish the notes, set a minimum time between them.
    // the note's duration + 30% seems to work well:
    int pauseBetweenNotes = noteDuration * 1.30;
    delay(pauseBetweenNotes);
    // stop the tone playing:
    noTone(8);
  }
}

void loop() {
  // no need to repeat the melody.
}

Inga kommentarer:

Skicka en kommentar