Tnychron klockan (5 / 8 steg)
Steg 5: Spelar musik
Svaret var utmärkt Playtune biblioteket. (https://code.google.com/p/arduino-playtune/) På den ATMEGA328p som används i projektet, er den skicklig av tre samtidiga röster. Ljud genereras med hjälp av hårdvara timers (med lämpliga prescaler och avdelare) och är squarewaves utan något kuvert. Fina med denna metod är när du har konfigurerat timern, det bara går och din kod är fri att göra vad som krävs fram till nästa Obs event.
Att skriva noteringar manuellt skulle vara tråkiga så finns den MIDITONES verktyget för att konvertera en .mid i kod. den har bra alternativ för att begränsa samtidiga anteckningar från källfilen som gör bäst av de tillgängliga rösterna.
Så genomfört, använder jag bara två av de tre kanalerna som möjligt. Det beror på att jag ville hålla timer0 för "millis()" timing och andra funktioner. Som det visar sig, innehåller playtune.cpp faktiskt en suppleant timing funktion som skulle ha tillåtit en tredje röst. Nåja, något att tänka på.
Ljud från timer utgångarna skickas via 500 ohm motstånd och sedan direkt till en stor piezo skiva. Kombinationen av föraren, hål och fall hålighet bidra till att stärka ljudet. Det är verkligen högt nog till vakna du upp från ett nattduksbord eller ens över rummet.