Stap 6: Programmeren van de geluiden van de Gong
Luidsprekers maken geluid wanneer er een spanningsverschil tussen de terminals, die drijft de conus van de luidspreker verder van of dichter bij de spoel in de rug, afhankelijk van of het verschil in spanning positief of negatief is. Wanneer de conus beweegt, lucht beweegt. Geluid dat we herkennen is alleen maar lucht verplaatsen op zeer bepaalde frequenties--sprekers duwen en trekken van lucht, die wordt uitgevoerd in onze oren.
Microcontrollers, zijn als de makers van het geluid, vrij lastig. Dit is omdat zonder een digitaal naar analoog converter, ze alleen geschikt zijn voor het maken van twee spanningen: hoge (meestal 3-5 volt) of lage (0 volt). Dus als je rijden een luidspreker met een microcontroller wilt, uw opties beperkt tot twee basistechnieken zijn: Pulsbreedtemodulatie en vierkante golven. Pulsbreedtemodulatie (PWM) is een mooie truc waar u bij benadering een analoog signaal (een die heeft van de spanningen in het bereik tussen laag en hoog) met een digitaal signaal (degene die is alleen laag of hoog). Terwijl PWM willekeurige, mooi maken kan, geluid met volledig spectrum, vereist snel klokken, zorgvuldige codering, en fancy filteren en versterking te rijden een speaker goed.
Vierkante golven, aan de andere kant, zijn eenvoudig, en als je tevreden zijn met hun raspende Toon, kan een gemakkelijke manier te doen eenvoudige melodieën. Leah Buechley biedt een mooi voorbeeld project projectpagina broncode) voor geschikt voor het rijden van een kleine luidspreker met behulp van een LilyPad te maken vierkante golven.
Maar we wilden onze klokkenspel te klinken een beetje meer als klokkenspel--een dynamische verval, en lijken te worden luider op eerst dan aan het eind. Wij willen ook het geluid een beetje minder hard en een beetje meer bell-achtige. Wat te doen?
Om dit te doen we gebruik maken van een eenvoudige techniek toe te voegen complexiteit aan de blokgolf, en een truc met de spreker. Eerst, we gemaakt zodat de vierkante golven blijf niet "hoog" voor dezelfde duur--ze in de tijd veranderen, hoewel hun begin altijd hetzelfde is. Dat wil zeggen een blokgolf 440Hz zullen nog overschakelen van "laag" naar "high" 440 keer per seconde, maar we laten het op "hoog" voor wisselende hoeveelheden tijd. Aangezien een spreker is niet een ideaal digitaal apparaat, en het kost tijd voor de cone te duwen uit en in, meer van een "zaagtand" vorm te geven dan een blokgolf. Ook, aangezien de spreker bent slechts aan één zijde (we alleen geven het een positieve spanning, nooit een negatieve spanning) rijdt, het retourneert alleen tot neutraal dankzij de flexibiliteit van de kegel. Dit resulteert in een soepeler, en dynamischer te maken, vervormd niet-lineair geluid.
We beschouwd elke opknoping acorn als een "switch", dus bij de geaarde center-opknoping eikel hen raakt, het trekt hen laag. De code gewoon doorlopen van de ingangen voor elke opknoping acorn, en indien hij vaststelt dat één laag, speelt een Toon daarvoor.
Werkende LilyPad Arduino broncode die hieronder zijn toegevoegd.