I dette prosjektet skal vi bygge et stykke underholdning ved hjelp av Arduino. Vi har alle den vanen å trykke på tabell eller penn for å lage tilfeldig musikk. Selvfølgelig kan det ikke betraktes som en god mannerism, men vi liker alle å gjøre det minst en gang. Derfor tenkte jeg å ta det til neste nivå ved å bruke Arduinos evne til å spille toner. Når du har bygget dette prosjektet, vil du kunne generere toner ved å trykke fingrene på noe ledende og lage dine egne rytmer, som å spille piano på håndflaten. Høres kult ut, så la oss bygge det.
Komponenter som kreves:
Materialene som kreves for dette prosjektet er listet opp nedenfor, det er ikke obligatorisk å holde seg til det samme. Når du har tatt tak i konseptet, kan du bruke din egen måte å bygge det på.
- Arduini Pro Mini
- Peizo høyttaler
- Flex-sensor
- Fingerhansker
- 10K motstander
- BC547 Transistorer
- 9V batteri
Kretsdiagram og forklaring:
Kretsskjemaet for dette Arduino Palm Piano er vist nedenfor.
Prosjektet bruker totalt fire sensorer, det vil si to flex-sensorer og to Darlington-par som fungerer som en berøringssensor. Vi har også brukt to nedtrekksmotstander R1 og R2 med verdi 10k hver, som vil fungere som en nedtrekksmotstand for Flex-sensoren. Her brukes Flex-sensor til å generere tre forskjellige toner ved å bruke en finger, basert på hvor mye den har bøyd. Så vi kan produsere 6 lyder med to fingre. Lær her om Flex-sensoren.
Darlington par:
Før vi fortsetter er det viktig å vite hva som er en Darlington og hvordan fungerer den akkurat i prosjektet vårt. Darlington-par kan defineres som to bipolare transistorer koblet på en slik måte at strømmen forsterket av den første forsterkes ytterligere av den andre transistoren. Et Darlington-par er vist på bildet nedenfor:
Som vist ovenfor har vi brukt to BC547-transistorer hvis samlere er bundet til å samles, og emitteren til den første transistoren er koblet til basen til den andre transistoren. Denne kretsen fungerer som en forsterker med forsterkning, noe som betyr at ethvert lite signal gitt til basen til den første transistoren er nok til å forspenne basen til den andre transistoren. Kroppen vår fungerer som en bakke her, så når vi berører bunnen av transistoren, blir den andre transistoren partisk. Ved å bruke dette til vår fordel har vi bygget berøringssensoren for dette prosjektet.
Pin nummer 2 og 3 er avbruddspinnene på Arduino som trekkes høyt ved hjelp av interne opptrekksmotstander, og deretter blir disse pinnene holdt i bakken når Darlington-bryteren lukkes. Denne måte hver gang vi berøre ledningen (fra undersiden av en st transistor) et avbrudd vil bli utløst fra Arduino.
Ved å bruke to fingre kan det bare produseres to typer toner, og derfor har jeg også lagt til en flex-sensor som vil endre tonen basert på hvor mye den er bøyd. Jeg har programmert å produsere tre forskjellige toner per finger basert på hvor mye fingeren (flex-sensoren) er bøyd. Du kan øke antallet hvis du vil ha flere toner ved fingertuppene.
Jeg lagde hele brettet på et perfekt brett slik at det passer lett inn i håndflatene, men du kan også bruke et brødbrett. Bare sørg for at kroppen din berører bakken på kretsen på et eller annet tidspunkt. Når du har loddet alt, bør det se ut som dette
Jeg har brukt to fingerhansker for å feste ledningene fra Darlington-paret og flex-sensoren i posisjon som vist ovenfor. Du kan komme med din egen (bedre om mulig) idé om å sikre dem på plass mens du spiller tonene dine.
Arduino programmering:
Programmet for denne Arduino Tap Tone Generator er ganske rett frem. Vi må bare se etter avbrudd fra Darlington-ledningene, og hvis vi finner en, må vi spille tone som avhenger av hvor mye flex-sensoren er bøyd. Den komplette koden er gitt på slutten av dette innlegget, men jeg har forklart noen viktige biter nedenfor.
Merk: Dette programmet fungerer ved hjelp av biblioteket “pitches.h”. Så sørg for at du har lagt til toppteksten i programmet ditt før du kompilerer det. Du kan laste ned headerfilen pitches.h herfra.
I oppsettfunksjonen initialiserer vi pin 2 og 3 som Input med pull-up motstander. Vi erklærer dem også som avbruddspinner og utfører tonen1 () når det er et avbrudd på pinne 2 og tone2 () -funksjonen når det er et avbrudd på den tredje pinnen. Disse avbruddene vil utløses når disse pinnene blir LAVE fra sin opptrukne tilstand.
ugyldig oppsett () {pinMode (2, INPUT_PULLUP); pinMode (3, INPUT_PULLUP); attachInterrupt (digitalPinToInterrupt (2), tone1, LAV); attachInterrupt (digitalPinToInterrupt (3), tone2, LOW); Serial.begin (9600); }
Inne i sløyfefunksjonen sjekker vi kontinuerlig hvor mye flex-sensoren er bøyd. Min FlexSensor 1 ga for eksempel verdier rundt 200 når de ble liggende flate og gikk ned helt til 130 da jeg bøyde den maksimalt, så jeg har kartlagt verdien fra 200 til 130 som 1 til 3 siden jeg må spille 3 forskjellige typer av toner. Du må tilpasse disse to linjene basert på Flex-sensorverdiene og antall toner.
ugyldig sløyfe () {flexSensor1 = kart (analogRead (A0), 200,130,1,3); // Kartlegg med dine egne verdier basert på flex-sensoren flexSensor2 = map (analogRead (A1), 170,185,1,3); // Kartlegg med dine egne verdier basert på flex-sensoren din}
Som vi så tidligere vil funksjonstone1 () utføres når en avbrudd oppdages på pinne 2. Hva som skjer inne i tone1 () -funksjonen er vist ovenfor. Vi ser på verdiene til FlexSensor1 og spiller en tone basert på flexSesnor-verdien. Toner vil bli spilt ved hjelp av Arduinos Tone-funksjon. Vi har forklart tone () -funksjonen i vårt forrige prosjekt.
ugyldig tone1 () {hvis (flexSensor1 == 1) tone (8, NOTE_D4,50); annet hvis (flexSensor1 == 2) tone (8, NOTE_A3,50); annet hvis (flexSensor1 == 3) tone (8, NOTE_G4,50); annet tone (8, NOTE_D4,50); }
Linjen nedenfor brukes til å spille tonen. Du kan spille hvilken som helst tone som er tilgjengelig i toppfilen "pitches.h". Linjen over spiller for eksempel NOTE_A3 på pin i en varighet på 50 milli sekunder.
tone (8, NOTE_A3,50); // tone (PinNum, Merk navn, Varighet);
Jobber:
Når maskinvaren din er klar, laster du opp koden og monterer dem på fingrene. Forsikre deg om at kroppen din berører bakken på kretsen på et eller annet tidspunkt. Nå er det bare å berøre ledende materiale eller kroppen din, og du skal kunne høre den aktuelle tonen. Du kan spille din egen melodi eller musikk ved å trykke med forskjellige intervaller og forskjellige posisjoner.
Den videoen nedenfor viser den fullstendige arbeider av th prosjekt. Håper du likte å bygge prosjektet, eventuelle forslag eller spørsmål kan legges ut i kommentarfeltet nedenfor. Sjekk også Arduino Audio Player og Arduino Tone Generator Project.