Acorn Chime (6 / 10 steg)
Steg 6: Programmering klockspelstransformatorer ljud
Högtalarna får låta när det är spänningsskillnad på över deras terminaler, som driver högtalarkon antingen längre bort från eller närmare spolen i ryggen, beroende på om skillnaden i spänning är positiva eller negativa. När kotten flyttar, flyttar luft. Ljud som vi känner igen är bara luften rör sig vid mycket speciella frekvenser--högtalare trycka och dra luft, som sedan körs i våra öron.
Microcontrollers, är som ljud beslutsfattare, ganska knepigt. Detta beror på att utan en digital till analog omvandlare, de är bara kan göra två spänningar: hög (vanligtvis 3-5 volt) eller låg (0 volt). Så om du vill köra en högtalare med en mikrokontroller, dina alternativ är begränsat till två grundläggande tekniker: Pulse bredd modulering och fyrkantsvågor. Bredd för synkpuls modulering (PWM) är en fancy trick där du approximera en analog signal (en som har spänningar i intervallet mellan låg och hög) med en digital signal (en som är endast låg eller hög). Medan PWM kan göra godtyckliga, härlig, full spectrum ljud, kräver snabb klockor, försiktig kodning, och fancy filtrering och förstärkning till kör en högtalare bra.
Fyrkantsvågor, å andra sidan, är enkla, och om du är nöjd med sin raspiga tonen, kan vara ett enkelt sätt att göra enkla melodier. Leah Buechley ger ett fint exempel projektets projektsida, källkoden) för med en LilyPad för att göra fyrkantiga vågor kan köra en liten högtalare.
Men vi ville ha våra chimes att låta lite mer som klockspel--att ha en dynamisk förfalla, och verkar vara högre vid första än i slutet. Vi ville också att ljudet ska vara lite mindre hård och lite mer bell-liknande. Vad göra?
Det gör dra vi nytta av en enkel teknik för att lägga till komplexitet fyrkantsvåg och ett trick med talare. Först, vi gjorde det så fyrkantsvågor inte bo "hög" för samma längd – de förändras över tiden, även om deras debut är alltid densamma. Det vill säga en 440Hz fyrkantsvåg kommer fortfarande växla från "låga" till "hög" 440 gånger i sekunden, men vi lämnar det på "hög" för varierande mängder av tid. Eftersom en högtalare inte är en perfekt digital enhet, och det tar tid för konen att driva ut och in, vilket ger mer av en "sawtooth" form än en fyrkantsvåg. Också, eftersom vi är bara köra talaren på ena sidan (vi bara ger det en positiv spänning, aldrig en negativ spänning), det bara återvänder till neutral flexibiliteten i konen. Detta resulterar i en mjukare, och mer dynamisk, förvrängt icke-linjärt ljud.
Vi betraktade varje hängande ekollon som en "strömbrytare", så när jordat center-hängande ekollon vidrör dem, det drar dem låg. Koden helt enkelt loopar igenom ingångar för varje hängande ekollon, och om den hittar en att vara låg, spelar en ton för den.
Arbetande LilyPad Arduino källkod bifogas nedan.