#include /* Hardware-Definitionen */ #include #include /* Für uint8_t */ #include "keys.h" /* Notennummern und -dauern */ /* Anzahl der Einzelschritte in der Melodie */ #define NOTE_COUNT 71 /* Tempo in Schlägen pro Minute */ #define TEMPO 103 uint8_t note_pitches[NOTE_COUNT] = { KEY_G3, KEY_G3, KEY_G3, KEY_Eb3, KEY_Bb3, KEY_G3, KEY_Eb3, KEY_B3, KEY_G3, KEY_D4, KEY_D4, KEY_D4, KEY_Eb4, KEY_Bb3, KEY_Gb3, KEY_Eb3, KEY_Bb3, KEY_G3, KEY_G4, KEY_G3, KEY_G3, KEY_G4, KEY_Fis4, KEY_F4, KEY_E4, KEY_Dis4, KEY_E4, PAUSE, KEY_Gis3, KEY_Cis4, KEY_C4, KEY_B3, KEY_Bb3, KEY_A3, KEY_Bb3, PAUSE, KEY_Eb3, KEY_Gb3, KEY_Eb3, KEY_Gb3, KEY_G3, KEY_G3, KEY_Bb3, KEY_D4, KEY_G4, KEY_G3, KEY_G3, KEY_G4, KEY_Fis4, KEY_F4, KEY_E4, KEY_Dis4, KEY_E4, PAUSE, KEY_Gis3, KEY_Cis4, KEY_C4, KEY_B3, KEY_Bb3, KEY_A3, KEY_Bb3, PAUSE, KEY_Eb3, KEY_Gb3, KEY_Eb3, KEY_Bb3, KEY_G3, KEY_Eb3, KEY_Bb3, KEY_G3, PAUSE }; /* Tonlängen (in 1/48-Noten) */ uint8_t note_durations[NOTE_COUNT] = { DUR_4th, DUR_4th, DUR_4th, DUR_8th_dot, DUR_16th, DUR_4th, DUR_8th_dot, DUR_16th, DUR_half, DUR_4th, DUR_4th, DUR_4th, DUR_8th_dot, DUR_16th, DUR_4th, DUR_8th_dot, DUR_16th, DUR_half, DUR_4th, DUR_8th_dot, DUR_16th, DUR_4th, DUR_8th_dot, DUR_16th, DUR_16th, DUR_16th, DUR_8th, DUR_8th, DUR_8th, DUR_4th, DUR_8th_dot, DUR_16th, DUR_16th, DUR_16th, DUR_8th, DUR_8th, DUR_8th, DUR_4th, DUR_8th_dot, DUR_16th, DUR_4th, DUR_8th_dot, DUR_16th, DUR_half, DUR_4th, DUR_8th_dot, DUR_16th, DUR_4th, DUR_8th_dot, DUR_16th, DUR_16th, DUR_16th, DUR_8th, DUR_8th, DUR_8th, DUR_4th, DUR_8th_dot, DUR_16th, DUR_16th, DUR_16th, DUR_8th, DUR_8th, DUR_8th, DUR_4th, DUR_8th_dot, DUR_16th, DUR_4th, DUR_8th_dot, DUR_16th, DUR_half, DUR_whole }; int main(int argc, char** argv) { // Tasterpin als Eingang konfigurieren DDRD &= ~(1 << 6); // Pull-up Widerstand für den Taster aktivieren PORTD |= (1 << 6); int i = 2; bool pressed = false; while (1) { if (!(PIND & (1 << 6))) { pressed = true; } if(pressed) { DDRD = (1<