Visuella / fonetiska gitarr Tuner "The Tune tränare" (2 / 4 steg)

Steg 2: programmering



Programmet för arduino tar i knappen kommandon från de 6 tryckknappar på stift 2-7 och utgångar den valda frekvensen i ljus och ljud via stift 10 och 11 (två PWM stift) dessa utgångar är pulsade högt och lågt på frekvensen av den valda anteckningen att köra Peizo och LED respektive

här är grundläggande flödet av programmet (i pseudo-kod):

loop
-Kontrollera för knappar
-Om knappen
--Välj "frekvens"
--loop
---set ledde högt
---Ange piezo hög
---vänta "ledde puls längd"
---set ledde låg
---vänta "frekvens" / 2 - "ledde puls längd"
---Ange piezo låg
---vänta "frekvens" / 2
---Kontrollera för knappar
---Om knappen
----paus
---sluta om
--slutet loop
-sluta om
avsluta loop

och den fullständiga koden

TUNE tränare v1.0 / / av: GREG SCHOPPE / / http://www.gschoppe.com// *** / / STRÄNGAR === #define e 3034 / / 329.63 Hz #define b 4050 / / 246.94 Hz #define g 5102 / / 196.00 Hz #define d 6811 / / 146.83 Hz #define en 9091 / / 110,00 Hz #define E 12135 / / 82.407 Hz #define ingen 0 / / standardtillstånd / /--tid lyser i varje cykel #define FlashLength 1024 / / SETUP === / / Ställ in ingång på 6 pinsint inPin_e = 7; int inPin_b = 6; int inPin_g = 5; int inPin_d = 4; int inPin_a = 3; int inPin_E = 2; / / Ställ in utgång på en PWM stift (digital 9, 10 eller 11) int freqOut = 11; / / vill vi felsökning på serial ut? 1 för Ja, 0 för noint DEBUG = 0; void setup() {pinMode (freqOut, produktionen); / / förklara tryckknappar som ingående pinMode (inPin_e, ingång), //high-e pinMode (inPin_b, ingång); / / b pinMode (inPin_g, ingång); / / g pinMode (inPin_d, ingång); / / d pinMode (inPin_a, ingång); / / en pinMode (inPin_E, ingång); / / low-e / / slå på pull-up motstånd digitalWrite(inPin_e,HIGH); //high-e digitalWrite(inPin_b,HIGH); / / b digitalWrite (inPin_g HÖG); g digitalWrite(inPin_d,HIGH); d digitalWrite(inPin_a,HIGH); en digitalWrite(inPin_E,HIGH); Low-e om (DEBUG) {Serial.begin(9600); / / Ställ in följetong ut om vi vill felsökning} / / SIGNAL att det CHIP är redo digitalWrite(freqOut,HIGH); Delay(500); digitalWrite(freqOut,LOW); } int ingång () {if(digitalRead(inPin_e)==LOW) {return(e);} if(digitalRead(inPin_b)==LOW) {return(b);} if(digitalRead(inPin_g)==LOW) {return(g);} if(digitalRead(inPin_d)==LOW) {return(d);} if(digitalRead(inPin_a)==LOW) {return(a);} if(digitalRead(inPin_E)==LOW) {return(E);} return(NONE);} void playTone (int period) {if(period==NONE) {//if ingen knapp har tryckts tillbaka;} int ToneLength = period/2 - FlashLength; int OffLength = period/2; / / SIGNAL att indata var ACCEPTERADE digitalWrite(freqOut,LOW); delay(100); digitalWrite(freqOut,HIGH); delay(100); digitalWrite(freqOut,LOW); delay(500); / / Fortsätt till STROBE LOOP / /--strobe loopen körs 4 strobes före varje prov, / /--att försöka förlora så få mikrosekunder som möjligt. while(true) {/ / börjar uppsättning 4 STROBES / på ton & ljus PORTB = (B00001100 | PORTB); --aktiverar Pin 11 och Pin 10. Lämnar alla andra som-är; delayMicroseconds(FlashLength); AV ljus PORTB = (B11110111 & PORTB); --stänger av Pin 11. Lämnar alla andra som-är; delayMicroseconds(ToneLength); AV båda PORTB = (B11110011 & PORTB); --stänger Pin 11 och Pin 10. Lämnar alla andra som-är; delayMicroseconds(OffLength); OM tonen & ljus PORTB = (B00001100 | PORTB); --aktiverar Pin 11 och Pin 10. Lämnar alla andra som-är; delayMicroseconds(FlashLength); AV ljus PORTB = (B11110111 & PORTB); --stänger av Pin 11. Lämnar alla andra som-är; delayMicroseconds(ToneLength); AV båda PORTB = (B11110011 & PORTB); --stänger Pin 11 och Pin 10. Lämnar alla andra som-är; delayMicroseconds(OffLength); OM tonen & ljus PORTB = (B00001100 | PORTB); --aktiverar Pin 11 och Pin 10. Lämnar alla andra som-är; delayMicroseconds(FlashLength); AV ljus PORTB = (B11110111 & PORTB); --stänger av Pin 11. Lämnar alla andra som-är; delayMicroseconds(ToneLength); AV båda PORTB = (B11110011 & PORTB); --stänger Pin 11 och Pin 10. Lämnar alla andra som-är; delayMicroseconds(OffLength); OM tonen & ljus PORTB = (B00001100 | PORTB); --aktiverar Pin 11 och Pin 10. Lämnar alla andra som-är; delayMicroseconds(FlashLength); AV ljus PORTB = (B11110111 & PORTB); --stänger av Pin 11. Lämnar alla andra som-är; delayMicroseconds(ToneLength); AV båda PORTB = (B11110011 & PORTB); --stänger Pin 11 och Pin 10. Lämnar alla andra som-är; delayMicroseconds(OffLength); AVSLUTA SET av 4 UTLÖSES //Check Input stift om ((PIND & B11111100)! = B11111100) {/ /--PIND är ett register med statligt av stift 0-7 som en byte; / /--dvs B11111101 skulle innebära att stift 1 och 5 var låg och resten var hög. / /--testning mot B11111100 är att ignorera ingångar på stift 0 och stift 1 (RX och TX) / /--så ovanstående kod innebär att om någon av stift 2-7 är låga , vi avsluta loopen. hemkomst. {}}} void loop() {playTone(input());}

Jag har sparat lite tid i den inre loopen med några hackade ihop bit verksamhet, men totalt kodning är ganska grundläggande. Dess också lite av en hacka, så vänligen inte tjatar jag om oseriösa stil syntax lagar. Jag vet vad de är, men när jag är rusar jag ignorera dem...

frekvenserna för varje knapp kan du ändra genom att ändra deklarationerna på toppen.

Se Steg
Relaterade Ämnen

Arduino gitarr Tuner

Bygg din egen gitarr tuner använder Arduino! Jag beslöt att göra detta eftersom jag ville experimentera med ljudingång och frekvens identifiering. Jag använde Amanda Ghassaei metod för Arduino frekvensen upptäckt för att få frekvens avläsningar med A...

Spindel hastighetssensor från en gitarr tuner

jag fick just en Pro medlemskap ett par dagar sedan, tack till Random_Canadian's generositet. (Tack för hookup!) Jag tänkte det var dags att avsluta lurar och faktiskt bidra, så här går min första Instructable.Som CNC tekniker, har det varit några ti...

Automatisk gitarr Tuner

två saker som jag verkligen gillar att göra är: spela gitarr och mixtra med min Arduino. Jag var mycket intresserad av vid tanken på detta projekt, så jag beslöt att göra det. Jag är ny på programmering, så detta var en riktig utmaning för mig!Denna...

Gitarr Tuner

Ofta stränginstrument gå ostämd på grund av regelbunden användning. I detta Instructable ska vi bygga en gadget som du kan använda för att ställa ditt instrument.Du behöver följande för att slutföra detta bygga:Intellekten Edison med Arduino breakout...

Arduino-kontrollerade Korg PC-1 Tuner

Detta skall vara din guide för att hacka in i en Korg PC-1 gitarr tuner använder en Sparkfun SprotoSnap.De material du behöver är följande:Korg PC-1 TunerSparkfun SprotoSnapMikro-USB-kabelStrandsatta elektrisk trådLödaDe verktyg du behöver är följand...

Provisoriska ficklampa från tuner

Jag har så många outnyttjade elektroniska apparater och ändå har vi fortfarande att gå till affären för enkla saker som ficklampor. Jag hittade min trasiga gitarr tuner ligger runt och bestämde mig för att ta den i bruk. Förresten, detta är min först...

Guitar Tuner för blinda (med en Arduino)

hur du ändrar en gitarr tuner så det kan användas av en blind personDetta bygga använder en Arduino Pro mini mikrokontroller, (all kod finns).Detta projekt genomfördes för välgörenhet Mappa om, som tillhandahåller skräddarsydda produkter för personer...

Ford mini glovebox gitarr/ukulele

Fast i trafiken?Uttråkad med ingenstans att gå?Inget på radion?Passagerarna klagar du smälla dem i ansiktet med Spindelhuset när du spelar upp en full storlek gitarr i bilen?Inte tillräckligt med utrymme i bilen för en flygel?Nå över och ta din Ford...

Allt du någonsin velat veta om att upprätthålla en gitarr (men var rädda att fråga)

Gitarr underhåll kan vara en frustrerande och dyr affär. Detta instructable syftar till att hjälpa med det. Om jag missat något du tycker bör finnas med, låt mig veta; Likaså om du har en fråga, lägga den i kommentarerna och vi får se om vi inte kan...

Hur man övergången mellan ett G-ackord och ett C ackord på gitarr

Tillsyn av en vuxen föreslog för musiker yngre än 12 år. Instrument kan bli mycket dyrt och kan skada lätt. Inledning:En milstolpe på den musikaliska resan att lära sig spela gitarr spelar din första ackord, spelar en andra ackord och lära sig att öv...

Hur sträng en gitarr

jag var förvånad över att finna att det inte finns någon instructables påHur till sträng en gitarr. Jag tänkte att jag kan lika gärna göra det!Jag fick lite info om strängarna gitarrer från taylorguitars.com. Sista gången jag använde den platsen var...

Cigar Box gitarr med dolda Whiskey mini Bar

cigarrlåda gitarrer (CBG) har blivit mycket populärt de senaste åren. Min teori är att det beror på två saker: den ekonomiska nedgången och uppkomsten av hipster kulturen. CBGS är mycket billiga att bygga. Och de är roliga att spela medan du smuttar...

Ansluta en gitarr till en Ipad

Hej i detta instructable jag ska visa dig hur du ansluter din gitarr till din ipad!Om du ansluter din gitarr till din ipad kan du: Använd din ipad som en förstärkare, finjustera det enkelt, spela in din sköna gitarr låtar på din ipadSteg 1: Du behöve...

Gitarr renovering

en guide om hur man kan förbättra eller fixa någon gammal gitarr.Steg 1: I början När jag köpte den gitarr som det var i ett tillstånd av elände; kropp och hals av gitarren målade i metallic lila gnistrande billack och anpassad plocka guard slösat i...

Hur man gör människor tror att du kan spela gitarr

Denna instruktion guide visar dig hur man gör andra människor tror att du är begåvad och intressant. Spela gitarr kan ta år att bemästra och helt enkelt lära sig grunderna kan ta månader egen hand. Men vad är poängen? Du lär dig att spela gitarr för...

Hur du intonate din gitarr.

Har ditt gitarr känns ostämd när du kommer till högre banden? A re förekommande problem de flesta gitarr spelare ansikte är intonationen av deras gitarr. Fastställande intonationen innebär att se till att gitarren är i samklang med sig själv, och att...

DIY Smallpipes (membran säckpipa)

Jagf du gillar detta, glöm inte att favorit, följa oss och kolla ut oss på Facebook!Efter att ha spelat highland säckpipa för ett par år nu och har precis avslutat en kurs om underhåll, var jag mycket intresserad av att bygga min egen uppsättning rör...

Bygga en kompakt propan Tank tungan trumma

Först av allt måste jag ge kredit äras bör. Ursprungliga hank trumman är skapandet av Dennis Havlena. Dennis är en fantastisk kille, han hade en bra idé och istället för att starta ett företag, startade han en rörelse. Han delade sin design fritt och...

Att lägga till nycklar till en Arduino Synth den hårda vägen-Blacklord: Organ Donor projekt del 2

(Obs-detta är min 20 instructable! Tack till alla följande och commenting.on mina projekt och personal som gör detta möjligt. Denna webbplats har definitivt fått mig få min A spelet till arbetsbänken.)Auduino granulat synth av Peter Knight ( http://c...