Stap 5: Muziek afspelen
Het antwoord was de uitstekende Playtune-bibliotheek. (https://code.google.com/p/arduino-playtune/) Op de ATMEGA328p gebruikt in het project, is het geschikt voor drie gelijktijdige stemmen. De geluiden worden gegenereerd met behulp van de hardware-timers (met passende prescaler en scheidingslijnen) en zijn squarewaves zonder een envelop. Het grote ding over deze methode is zodra u de timer geconfigureerd, het loopt gewoon en uw code is vrij om te doen wat nodig is tot de volgende opmerking evenement.
Typen in notities handmatig zou vervelend zijn, dus er het hulpmiddel van de MIDITONES is om een .mid naar code converteren. het heeft nuttige opties te beperken van simultane notities uit het bronbestand die er het beste van de beschikbare stemmen.
Zoals ten uitvoer gelegd, gebruik ik slechts twee van de drie mogelijke kanalen. Dat komt omdat ik wilde houden timer0 voor 'millis()' timing en andere functies. Het blijkt dat, omvat playtune.cpp eigenlijk een functie substitute timing die zou hebben toegestaan een derde stem. Nou ja, iets in gedachten te houden.
Klanken uit de timer-uitgangen worden verzonden via 500 ohm weerstanden en vervolgens direct naar een grote piëzo-schijf. De combinatie van bestuurder, gat en zaak holte helpen het geluid te versterken. Het is zeker luid genoeg om je wakker uit een nachtkastje of zelfs hele kamer.