4.2.4 Muziekspeler

4.2.4.1 Overzicht

Img

Hier bouwen we een muziekspeler die geluid genereert via de ingebouwde buzzer op het micro:bit-bord (speelt geen vocale muziek). Het beschikt over een bibliotheek van 20 korte nummers en ondersteunt zowel sequentiële als willekeurige weergave.

In de sequentiële modus schakelt het indrukken van knop C (Vorig nummer) of E (Volgend nummer) nummers volgens een vooraf ingestelde volgorde totdat het einde van de lijst is bereikt; terwijl in de willekeurige modus elke druk een nummer willekeurig selecteert uit de 20 geluiden met knipperende kleurenlichten, en wanneer een nummer is afgelopen, stopt het onmiddellijk.

Ondertussen toont de micro:bit LED-matrix de huidige afspeelmodus in realtime.

Img

4.2.4.2 Benodigde onderdelen

Img

Img

Img

micro:bit V2-bord (zelf meegebracht) ×1

micro:bit Smart Gamepad (gemonteerd) ×1

AAA-batterij (zelf meegebracht) ×4

4.2.4.3 Codestroom

Img

4.2.4.4 Testcode

Volledige code:

Img

Img

Korte uitleg:

① Initialiseer de LED-matrix en het geluidsvolume, verbind de RGB-pin met P8 en stel het aantal RGB in op 4.

Img

② Initialiseer de array van melodieën op 20 en voeg hun gedetailleerde nummers toe, en stel het initiële volume in.

Img

③ Bepaal of knop D of F is ingedrukt. Druk op D voor ‘0-sequentiële weergave’, F voor ‘1-willekeurige weergave’.

Img

④ In de sequentiële modus, druk op C om het vorige nummer af te spelen, E om naar het volgende nummer te gaan.

Img

Aangezien er slechts 20 nummers in de array zijn, kan alleen muziek van N.O. 0-19 worden afgespeeld. Daarom voegen we een if-conditie toe om overschrijdingen en onderschrijdingen van de array te voorkomen.

Img

Echter, in de willekeurige modus, druk op C/E om al deze 20 nummers te schudden.

Img

⑤ Bepaal of het vorige nummer inconsistent is met het huidige. Zo ja, stop dan eerst het huidige en speel dan dat nummer af.

Img

⑥ Controleer of de modus ‘0-sequentiële weergave’ is, met ‘Img’, of ‘1-willekeurige weergave’, met ‘Img’, met een vertraging van 100ms.

Img

⑦ Laat de RGB-lampjes op de achtergrond ademen.

Img

⑧ Druk op A om het volume te verhogen (+10); druk op B om het te verlagen (-10). Het volume van de micro:bit-buzzer wordt bepaald door de uitgangsspanning van de intern aangesloten pin. We kunnen het volume regelen door digitale waarden 0~255 om te zetten in analoge waarden via DAC.

Img

4.2.4.5 Testresultaat

Img

Na het branden van de code, plaatst u het micro:bit-bord in de sleuf van de gamepad (batterijen geïnstalleerd), en zet u de schakelaar op “ON”.

Na het inschakelen bevindt het zich standaard in de sequentiële modus en speelt het het nummer op N.O. “0” af. Wanneer het is afgelopen, kunt u op C drukken voor het vorige nummer of op E voor het volgende.

Druk op F om over te schakelen naar de willekeurige modus. En u kunt op D drukken om terug te gaan naar de sequentiële modus. In de F-modus wordt een willekeurig nummer van deze 20 afgespeeld als u op C/E drukt. Na afloop stopt het.

De RGB-lampjes ademen altijd vanaf het moment van inschakelen. Ondertussen toont de micro:bit LED-matrix “Img” in de sequentiële modus en “Img” in de willekeurige modus.

Voor het volume, druk op A om te verhogen en B om te verlagen.

Img

Tip: Als er geen reactie is op het bord, druk dan op de resetknop aan de achterkant van het micro:bit-bord.

Img