Vibration skum talare! (3 / 3 steg)

Steg 3: Ladda upp koden och spela vibrerande musik!



Sista steget är att ladda upp koden (för närvarande har Star Wars tema och Mario teman, ta bort kommentarer på temat mario och kommenterar ut Star Wars tema att spela olika melodier).

Speciellt tack till R-Team Robotics klubb för utstationering deras arduino kod med melodier programmeras i!
http://www.Phys-x.org/rbots/index.php?option=com_content&view=article&ID=66:Lesson-5-Play-Melody-with-piezo&catid=41:Kits&Itemid=70

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

/ * Spela melodin
* -----------
*
-Program att spela en enkel melodi
*
* Toner skapas av snabbt pulserande en högtalare på och av
* använda PWM, för att skapa signatur frekvenser.
*
* Varje not har en frekvens, skapad av varierande löptid
* vibrationer, mätt i mikrosekunder. Vi använder bredd för synkpuls
* modulering (PWM) att skapa den vibration.

* Vi beräkna puls-bredd för att vara halva perioden. Vi pulsen
* talaren hög för "pulse-bredd" mikrosekunder, sedan låg
* för "pulse-bredd" mikrosekunder.
* Denna pulserande skapar en vibration av önskad frekvens.
*
* (läpp) 2005 D. Cuartielles för K3
* Refactoring och kommentarer 2006 clay.shirky
* Se anteckningar i kommentarer på slutet för möjliga förbättringar
*/

// TONES ==========================================
Börja med att definiera förhållandet mellan
Obs, period, och frekvens.

i mikrosekund är så P = 1/f * (1E6)

#define c3 7634
#define d3 6803
#define e3 6061
#define f3 5714
#define g3 5102
#define a3 4545
#define b3 4049
#define c4 3816 / / 261 Hz
#define d4 3401 / / 294 Hz
#define e4 3030 / / 329 Hz
#define f4 2865 / / 349 Hz
#define g4 2551 / / 392 Hz
#define a4 2272 / / 440 Hz
#define a4s 2146
#define b4 2028 / / 493 Hz
#define c5 1912 / / 523 Hz
#define d5 1706
#define d5s 1608
#define e5 1517
#define f5 1433
#define g5 1276
#define a5 1136
#define a5s 1073
#define b5 1012
#define c6 955

Definiera en särskild anmärkning, "R", som representerar en vila
#define R 0

// SETUP ============================================
Ställ in högtalare på en PWM stift (digital 9, 10 eller 11)
int speakerOut = 9;
Vill vi felsökning på serial ut? 1 för Ja, 0 för no
int DEBUG = 1;

void setup() {
pinMode (speakerOut, produktionen);
om (DEBUG) {
Serial.BEGIN(9600); Ställa in följetong ut om vi vill felsökning
}
}

MELODI och TIMING ===
Melody [] är en matris av anteckningar, tillsammans med beats [],
som sätter varje ton relativa längd (högre #, längre anteckning)
Star wars tema
int melodi [] = {f4, f4, f4, a4s, f5, d5s, d5, c5, a5s, f5, d5s, d5, c5, a5s, f5, d5s, d5, d5s, c5} ;//
int slår [] = {21, 21, 21, 128, 128, 21, 21, 21, 128, 64, 21, 21, 21, 128, 64, 21, 21, 21, 128};

Obs debug
int melodi [] = {c4, d4, e4, f4, g4, a4, b4, c5};
int slår [] = {63, 64, 64, 64, 64, 64, 64, 64};

super mario tema
int melodi [] = {e5, e5, R, e5, R, c5, e5, R, g5, R, R, R, g4, R, R, R, c5, R, R, g4, R, R, e4};
int slår [] = {16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 8, 16, 8, 16, 16};

int MAX_COUNT = sizeof(melody) / 2; Melody längd, för looping.

Ange övergripande tempo
långa tempo = 10000;
Ange längden på paus mellan anteckningar
int paus = 1000;
Loop variabel att öka resten längd
int rest_count = 50; <-BLETCHEROUS hacka; Se anteckningar

Initiera core variabler
int toneM = 0;
int slå = 0;
lång varaktighet = 0;

// PLAY TONE ==============================================
Puls talaren att spela en ton för en viss varaktighet
void playTone() {
lång elapsed_time = 0;
om (toneM > 0) {/ / om detta inte är en resten beat, medan tonen har
spelat mindre långt än "varaktighet", puls högtalare hög och låg
medan (elapsed_time < varaktighet) {

digitalWrite(speakerOut,HIGH);
delayMicroseconds(toneM / 2);

NED
digitalWrite (speakerOut, låg);
delayMicroseconds(toneM / 2);

Hålla reda på hur länge vi pulsade
elapsed_time += (toneM);
}
}
annat {/ / resten slå, loop gånger försenar
för (int j = 0; j < rest_count; j ++) {/ / se anmärkning på rest_count
delayMicroseconds(duration);
}
}
}

LÅT VILDA BRÅK BÖRJA ===
void loop() {
Ställ in en räknare för att dra från melody [] och [slag]
för (int jag = 0; jag < MAX_COUNT; i ++) {
toneM = melodi [i];
slå = beats [i];

längd = beat * tempo; Ställ in timing

playTone();
En paus mellan anteckningar...
delayMicroseconds(pause);

om (DEBUG) {/ / om felsökning, rapport loop, tonar, beat, och varaktighet
Serial.Print(i);
Serial.Print(":");
Serial.Print(Beat);
Serial.Print("");
Serial.Print(toneM);
Serial.Print("");
Serial.println(duration);
}
}
}

/*
* ANTECKNINGAR
* Programmet utger sig för att hålla en ton för 'varaktighet' mikrosekunder.
* Ligger ligger lögner! Det håller för minst 'varaktighet' mikrosekunder, _plus_
* någon overhead skapad av incremeting elapsed_time (kan vara överstiger
* 3 K mikrosekunder) _plus_ overhead av looping och två digitalWrites()
*
* Som ett resultat, spelar en ton av "varaktighet" mycket långsammare än en vila
* av "varaktighet." skapar rest_count en loop variabel för att få "vila" beats
* i "ton" beats av samma längd.
*
* rest_count kommer att påverkas av chip arkitektur och hastighet, som
* overhead från programmet mods. Tidigare beteende är ingen garanti för framtiden
* prestanda. Användbarheten kan variera. Lätta fuse och få bort.
*
* Detta kan använda ett antal förbättringar:
* Lägga till kod för att låta programmeraren anger hur många gånger melodin bör
* loop innan du slutar
* Lägg till en annan octave
* FLYTTA tempo, paus och rest_count till #define uttalanden
* SKRIVA att inkludera volym med analogWrite, som med det andra programmet på
* http://www.arduino.cc/en/Tutorial/PlayMelody
* Lägga till koden för att göra tempot inställbar av potten eller annan inmatningsenhet
* Lägga till koden för att ta tempo eller volym inställbar av seriell kommunikation
* (Kräver 0005 eller högre.)
* Lägga till kod för att skapa en tone offset (högre eller lägre) genom potten etc
* ERSÄTTA slumpmässiga melodi med öppna barer att "Röka på bevattna"
*/

Se Steg
Relaterade Ämnen

Batman EVA skum returer/Dark Knight Hybrid Suit Full bygga - (Pic Heavy)

Hej där!Detta är en första gången Instructables bygga för mig så björnen som i åtanke :-) Jag aldrig gjort en av dessa men kan jag säga jag har hittat det så givande och im så glad att ge dig all kunskapen jag har byggt under månaderna till nu.Jag sk...

Skum Skyrim Daedric svärd

Detta är en dag att göra en badass ser svärdet från:skumfärgVarmlimma fastoch en kniv.Steg 1: Starta. så jag började genom att hämta en mall från stormthecastle.com och spåra mallen på ark skum.vad jag gjorde var spår 2 enda hanterar sedan svärdet i...

Skum svärd rekvisita

Jag älskar svärd. De har bara så mycket stil och karaktär. För att fall ett citat från Jedi Master Obi-Wan Kenobi, är de en "eleganta vapen för den mer civiliserade tidsåldern". Eller åtminstone det är hur jag gillar att tänka på dem ändå.Proble...

Skum Kupong Binder

jag har beslutat, igen, att ändra min Kupong bindemedel. Jag gör detta varje så ofta på grund av att förlora Binder-dokumentet eller det längre passande min aktuella behov. Dagens Kupong bindemedel är gjord av skum. Den har Brads att hålla kupongen s...

Nytt skum högtalarna gamla

senaste åren hände det mig köra över förstörda högtalare oftare än vi tror. Jag älskar de gamla tunga och stora svarta högtalarna typiska ' 90 år. Jag fick detta par gratis, jag bestämde mig att reparera den och denna gång jag stödde processen med en...

Talar Joystick mus

jag arbetar i hjälpmedel, som är avsedda att hjälpa människor med funktionshinder bo oberoende-teknik.Möter vi en man som hade tetraplegi på grund av en trafikolycka. Han hade en liten rörelse i ena handen och ville använda en dator, men han kunde in...

Talar Bubo Ugglan från Clash Of The Titans

Detta är hur jag gjorde en talande Bubo The Owl.Steg 1: Prata Bubo Ugglan Jag gjorde detta talar Bubo Ugglan med metallfolie posterboard skumgummiplattan och posterboard för yttre kroppen. För att göra det "Talk" ändrade jag en mp3-spelare, med...

Talar Animatronic Robot huvud

(Robot tävlingen post kategori = 18 +)Detta instructable handlar om talande animatronic robot huvud jag byggde, som jag kallar Robot huvudet 2. För att få en uppfattning om Robot huvud 2 funktioner, klicka på korta videon nedan eller du kan kopiera o...

Lätta upp och talar potatis från Portal 2

detta Instructable är för ett ljus upp och talar potatis från Portal 2. Hon gjordes som ett college projektet som hade en storlek begränsning av 1ft kubik. Hon användes också som ett sätt för mig för att ta itu med elektronik som jag aldrig hade infö...

Kartong radiostyrda K-9, som talar

Läkare som har haft många följeslagare genom åren, och när fans får frågan "Vem är din favorit Dr Who kamrat?", kommer du oftast höra svar som Rose Tyler, Sarah-Jane Smith, kapten jack Harkness, Leela och Jamie McCrimmon bland några andra. Men n...

Hur man bygger en skum teardrop trailer. ruttna bevis, välisolerad och superlätta

På ett sätt är teardrop campare en bra påminnelse om den gamla amerikanska västern, det att pionjärer, Nybyggare, upptäcktsresande och cowboys upptäckt, och att infödingarna hade vetat hela tiden. Nybyggarna med sina Conestoga vagnar och chuck vagnen...

Explosiv Cocktail skum

Ha en viskning på din nästa cocktailparty genom att servera drinkar toppad med explosiv vätgas skum!Varning: spela med explosiva gaser är mycket farligt. Du inte ska förmodligen göra det. Särskilt om alkohol deltar också. Följ instruktionerna beskriv...

Easy cappuccino-skum

Är det en caffe latte? Är det en cappuccino? Nej, det är en fakeaccino – lätt, Billigt och gott!Har du älskar cappuccino eller skummande caffe latte, men har ingen fancy, dyra, skrymmande espressomaskin?Nu kan du njuta en mugg av denna stil kaffe hem...

Batman kåpa från Craft skum

Vem vill inte vara Dark Knight för Halloween?! Detta hantverk skum projekt är ett enkelt sätt att skapa en flexibel och användbar kåpa för nästan ingenting.Du kan antingen hämta filer, skriva ut, spår och klippa din egen kartong eller besöka min Esty...

Böjning, forma och stärka skum pansar (billigt och lätt metod)

*** om du gillade detta instructable, Överväg att rösta på mig i tävlingar det in i! Tack för läsning! ***Att sätta komplexa krökar och kurvor i EVA Foam rustning kan vara knepigt, eftersom skummet är mycket elastiskt och flexibelt. Delar inte alltid...

Lätt Dilbert kostym - bara lim, skum & filt

långt tillbaka i 2008 jag letar inspiration för ett kontor Halloween kostym och för första gången kom på Instructables. Jag såg en enkel Dilbert mask och jag trodde att jag skulle kunna förbättra på det konceptet. Det var bara en vecka tills den stor...

Hur man gör en Ironman dräkt med vinyl och skum metod!

Det finns en hel del Ironman dräkt tutorials ute, men de flesta av dem kräver skulptera, gjutning eller Paperaku. Alla dessa kräver slipning ner din kostym och måla den. Vi vet alla Ironman har en awesome metallic röd finish men det är ganska omöjlig...

Skum Rc plan

Steg 1: material -få skum plåtar-gummiband-hjul-tandpetareSteg 2: verktyg -limpistol-kniven-penna...

Lätt "Nr sy" mjuka skum Minecraft rustning

detta är ett snabbt projekt som kommer att ta cirka 3 timmar eller mindre för att slutföra beroende på hur detaljerad du vill göra det.Vi köpte ½" tjock grön klädsel skummet från Jo-Anns tyg & hantverk för $11 en gård. Använd en Jo-Ann utskrivbar...