I det här projektet ska vi bygga en underhållning med Arduino. Vi har alla den vana att knacka på tabell eller penna för att skapa slumpmässig musik. Naturligtvis kan det inte betraktas som en bra mannerism, men vi tycker alla om att göra det åtminstone en gång. Därför tänkte jag ta det till nästa nivå genom att använda Arduinos förmåga att spela toner. När du väl har byggt det här projektet skulle du kunna skapa toner genom att knacka på fingrarna på något ledande och skapa dina egna rytmer, som att spela piano på din handflata. Låter coolt så, låt oss bygga det.
Komponenter som krävs:
Materialet som krävs för detta projekt listas nedan, det är inte obligatoriskt att hålla fast vid detsamma. När du väl har tagit konceptet kan du använda ditt eget sätt att bygga det.
- Arduini Pro Mini
- Peizo-högtalare
- Flex-sensor
- Fingerhandskar
- 10K motstånd
- BC547 Transistorer
- 9V batteri
Kretsschema och förklaring:
Kretsschemat för detta Arduino Palm Piano visas nedan.
Projektet använder totalt fyra sensorer, det vill säga två flex-sensorer och två Darlington-par som fungerar som en touch-sensor. Vi har också använt två neddragningsmotstånd R1 och R2 med värdet 10k vardera, vilket fungerar som ett neddragningsmotstånd för Flex-sensorn. Här används Flex-sensorn för att generera tre olika toner med ett finger, baserat på hur mycket den har böjt. Så vi kan producera 6 ljud med två fingrar. Lär dig här om Flex-sensorn.
Darlington Pair:
Innan vi fortsätter är det viktigt att veta vad som är en Darlington och hur exakt fungerar det i vårt projekt. Darlington-par kan definieras som två bipolära transistorer anslutna på ett sådant sätt att strömmen förstärkt av den första förstärks ytterligare av den andra transistorn. Ett Darlington-par visas i bilden nedan:
Som visas ovan har vi använt två BC547-transistorer vars samlare är bundna för att samlas och emitteren till den första transistorn är ansluten till basen på den andra transistorn. Denna krets fungerar som en förstärkare med en förstärkning, vilket betyder att varje liten signal som ges till basen på den första transistorn är tillräcklig för att förspänna basen på den andra transistorn. Vår kropp fungerar som en mark här, så när vi vidrör basen på transistorn blir den andra transistorn partisk. Genom att använda detta till vår fördel har vi byggt touch-sensorn för detta projekt.
Stift nummer 2 och 3 är avbrottstiften på Arduino som kommer att dras högt med hjälp av interna uppdragningsmotstånd och sedan hålls dessa stift i mark när Darlington-omkopplaren stängs. Detta sätt varje gång vi trycker tråden (från basen av en st transistor) ett avbrott utlöses från Arduinoen.
Att använda två fingrar kan bara producera två typer av toner, därför har jag också lagt till en flex-sensor som kommer att ändra tonen baserat på hur mycket den är böjd. Jag har programmerat att producera tre olika toner per finger baserat på hur mycket fingret (flex-sensorn) är böjt. Du kan öka antalet om du vill ha fler toner i fingertopparna.
Jag gjorde hela brädet på en perfekt bräda så att det lätt passar i mina handflator, men du kan också använda en brädbräda. Se bara till att din kropp vid något tillfälle rör marken på kretsen. När du väl har lödd allt bör det se ut så här
Jag har använt två fingerhandskar för att säkra ledningarna från Darlington-paret och flex-sensorn i läge som visas ovan. Du kan komma med din egen (bättre om möjligt) idé för att säkra dem på plats medan du spelar dina toner.
Arduino-programmering:
Programmet för denna Arduino Tap Tone Generator är ganska enkelt. Vi måste bara se upp för avbrott från Darlington-ledningarna och om vi hittar en så måste vi spela ton som beror på hur mycket flex-sensorn är böjd. Den fullständiga koden ges i slutet av detta inlägg men jag har förklarat några viktiga bitar nedan.
Obs: Detta program fungerar med hjälp av biblioteket “pitches.h”. Så se till att du har lagt till rubrikfilen i ditt program innan du kompilerar den. Du kan ladda ner headerfilen pitches.h härifrån.
I installationsfunktionen initialiserar vi stift 2 och 3 som ingång med uppdragsmotstånd. Vi förklarar dem också som avbrottsstift och utför ton1 () när det finns ett avbrott på stift 2 och funktionen ton2 () när det är ett avbrott på den tredje stiftet. Dessa avbrott kommer att utlösas när dessa stift blir LÅGA från sitt uppdragna tillstånd.
ogiltig installation () {pinMode (2, INPUT_PULLUP); pinMode (3, INPUT_PULLUP); attachInterrupt (digitalPinToInterrupt (2), tone1, LOW); attachInterrupt (digitalPinToInterrupt (3), tone2, LOW); Serial.begin (9600); }
Inuti loopfunktionen kontrollerar vi ständigt hur mycket flex-sensorn är böjd. Min FlexSensor 1 gav till exempel värden runt 200 när de lämnades platt och gick ner hela vägen till 130 när jag böjde den till sitt maximala, så jag har kartlagt värdet från 200 till 130 som 1 till 3 eftersom jag måste spela 3 olika typer av toner. Du måste justera dessa två rader baserat på dina Flex-sensorvärden och antalet toner.
tomrumsslinga () {flexSensor1 = karta (analogRead (A0), 200,130,1,3); // Kartlägg med dina egna värden baserat på din flex sensor flexSensor2 = karta (analogRead (A1), 170,185,1,3); // Kartlägg med dina egna värden baserat på din flex-sensor}
Som vi såg tidigare kommer funktionstonen 1 () att utföras när ett avbrott upptäcks på stift 2. Vad som händer inne i ton1 () -funktionen visas ovan. Vi tittar på värdena för FlexSensor1 och spelar en ton baserat på flexSesnor-värdet. Toner spelas med Arduinos tonfunktion. Vi har förklarat funktionen ton () i vårt tidigare projekt.
ogiltig ton1 () {if (flexSensor1 == 1) ton (8, NOT_D4,50); annars om (flexSensor1 == 2) ton (8, NOT_A3,50); annars om (flexSensor1 == 3) ton (8, NOT_G4,50); annars ton (8, NOT_D4,50); }
Raden nedan används för att spela tonen. Du kan spela vilken ton som helst som finns i rubrikfilen “pitches.h”. Ovanstående rad spelar till exempel NOTE_A3 på stift under 50 millisekunder.
ton (8, NOT_A3,50); // ton (PinNum, Notnamn, Varaktighet);
Arbetssätt:
När din hårdvara är klar laddar du upp koden och monterar dem på fingrarna. Se till att din kropp vid något tillfälle rör marken på kretsen. Rör nu helt enkelt något ledande material eller din kropp så ska du kunna höra respektive ton. Du kan spela din egen melodi eller musik genom att knacka på med olika intervall och olika positioner.
Den videon nedan visar hela bearbetning av e projekt. Hoppas att du gillade att bygga projektet, eventuella förslag eller frågor kan läggas upp i kommentarsektionen nedan. Kolla också vårt Arduino Audio Player och Arduino Tone Generator Project.