I dette projekt skal vi bygge et stykke underholdning ved hjælp af Arduino. Vi har alle den vane at trykke på tabel eller pen for at skabe tilfældig musik. Selvfølgelig betragtes det måske ikke som en god manerer, men vi nyder alle at gøre det mindst en gang. Derfor tænkte jeg på at tage det til næste niveau ved at bruge Arduinos evne til at spille toner. Når du først har bygget dette projekt, vil du være i stand til at generere toner ved at banke fingrene på noget ledende og skabe dine egne rytmer, som at spille klaver på din håndflade. Det lyder køligt, så lad os bygge det.
Komponenter, der kræves:
De krævede materialer til dette projekt er anført nedenfor, det er ikke obligatorisk at holde fast ved det samme. Når du først har taget fat på konceptet, kan du bruge din egen måde at opbygge det på.
- Arduini Pro Mini
- Peizo-højttaler
- Flex-sensor
- Fingerhandsker
- 10K modstande
- BC547 Transistorer
- 9V batteri
Kredsløbsdiagram og forklaring:
Kredsløbsdiagrammet til dette Arduino Palm Klaver er vist nedenfor.
Projektet bruger i alt fire sensorer, det vil sige to flex-sensorer og to Darlington-par, der fungerer som en berøringssensor. Vi har også brugt to pull down-modstande R1 og R2 med en værdi på 10k hver, som fungerer som en pull down-modstand for Flex-sensoren. Her bruges Flex-sensor til at generere tre forskellige toner ved hjælp af en finger, baseret på hvor meget den har bøjet. Så vi kan producere 6 lyde ved hjælp af to fingre. Lær her om Flex-sensoren.
Darlington-par:
Før vi fortsætter, er det vigtigt at vide, hvad der er en Darlington, og hvordan det nøjagtigt fungerer i vores projekt. Darlington-par kan defineres som to bipolære transistorer forbundet på en sådan måde, at strømmen forstærket af den første forstærkes yderligere af den anden transistor. Et Darlington-par er vist på billedet nedenfor:
Som vist ovenfor har vi brugt to BC547-transistorer, hvis samlere er bundet til at samles, og emitteren til den første transistor er forbundet med basen til den anden transistor. Dette kredsløb fungerer som en forstærker med forstærkning, hvilket betyder, at ethvert lille signal, der gives til basen af den første transistor, er nok til at forspænde basen af den anden transistor. Vores krop fungerer som en jord her, så når vi berører bunden af transistoren, bliver den anden transistor forudindtaget. Ved at bruge dette til vores fordel har vi bygget berøringssensoren til dette projekt.
Stift nummer 2 og 3 er afbrydestifterne på Arduino, som trækkes højt ved hjælp af interne pull-up-modstande, og derefter holdes disse stifter i jorden, når Darlington-kontakten lukker. Denne måde hver gang vi rører tråden (fra bunden af 1 st transistor) en interrupt udløses fra Arduino.
Brug af to fingre kan kun producere to typer toner, derfor har jeg også tilføjet en flex-sensor, som vil ændre tonen baseret på hvor meget den er bøjet. Jeg har programmeret til at producere tre forskellige toner pr. Finger baseret på hvor meget fingeren (flex-sensor) er bøjet. Du kan øge antallet, hvis du gerne vil have flere toner ved dine fingerspidser.
Jeg lavede det komplette bræt på et perfbræt, så det passer let ind i mine håndflader, men du kan også bruge et brødbræt. Bare sørg for, at din krop berører jorden på kredsløbet på et eller andet tidspunkt. Når du har loddet alt sammen, skal det se sådan ud
Jeg har brugt to fingerhandsker til at fastgøre ledningerne fra Darlington-parret og flex-sensoren i position som vist ovenfor. Du kan komme med din egen (bedre hvis muligt) idé til at sikre dem på plads, mens du spiller dine toner.
Arduino programmering:
Programmet til denne Arduino Tap Tone Generator er ret ligetil. Vi er bare nødt til at holde øje med afbrydelser fra Darlington-ledningerne, og hvis vi finder en, skal vi afspille en tone, der afhænger af hvor meget flex-sensoren er bøjet. Den komplette kode er givet i slutningen af dette indlæg, men jeg har forklaret nogle få vigtige bidder nedenfor.
Bemærk: Dette program fungerer ved hjælp af biblioteket “pitches.h”. Så sørg for at du har tilføjet headerfilen til dit program, før du kompilerer det. Du kan downloade pitches.h headerfilen herfra.
I opsætningsfunktionen initialiserer vi pin 2 og 3 som input med pull-up-modstande. Vi erklærer også dem som interrupt stifter og udføre tone1 (), når der er en afbryder på ben 2 og funktionen tone2 (), når der er en afbryder på 3 rd pin. Disse afbrydelser udløses, når disse stifter bliver LAVE fra deres trukket tilstand.
ugyldig opsætning () {pinMode (2, INPUT_PULLUP); pinMode (3, INPUT_PULLUP); attachInterrupt (digitalPinToInterrupt (2), tone1, LOW); attachInterrupt (digitalPinToInterrupt (3), tone2, LOW); Serial.begin (9600); }
Inde i loop- funktionen kontrollerer vi konstant, hvor meget flex-sensoren er bøjet. Min FlexSensor 1 for eksempel gav værdier omkring 200, når de blev efterladt flade og gik helt ned til 130, da jeg bøjede den maksimalt, så jeg har kortlagt værdien fra 200 til 130 som 1 til 3, da jeg skal spille 3 forskellige typer af toner. Du skal tilpasse disse to linjer baseret på dine Flex-sensorværdier og antallet af toner.
ugyldig sløjfe () {flexSensor1 = map (analogRead (A0), 200,130,1,3); // Kortlæg dine egne værdier baseret på din flex-sensor flexSensor2 = map (analogRead (A1), 170,185,1,3); // Kortlæg med dine egne værdier baseret på din flex-sensor}
Som vi så tidligere, udføres funktionstone1 () , når der opdages en afbrydelse på pin 2. Hvad der sker inde i tone1 () -funktionen, vises ovenfor. Vi ser på værdierne af FlexSensor1 og spiller en tone baseret på flexSesnor-værdien. Toner vil blive spillet ved hjælp af Arduinos Tone-funktion. Vi har forklaret tone () -funktionen i vores tidligere projekt.
ugyldig tone1 () {hvis (flexSensor1 == 1) tone (8, NOTE_D4,50); ellers hvis (flexSensor1 == 2) tone (8, NOTE_A3,50); ellers hvis (flexSensor1 == 3) tone (8, NOTE_G4,50); ellers tone (8, NOTE_D4,50); }
Linjen nedenfor bruges til at afspille tonen. Du kan afspille en hvilken som helst tone, der er tilgængelig i “pitches.h” headerfilen. Ovenstående linje spiller for eksempel NOTE_A3 på pin i en varighed på 50 milli sekunder.
tone (8, NOTE_A3,50); // tone (PinNum, note navn, varighed);
Arbejder:
Når din hardware er klar, skal du uploade koden og montere dem på fingrene. Sørg for, at din krop berører jorden på kredsløbet på et eller andet tidspunkt. Berør nu blot ethvert ledende materiale eller din krop, og du skal kunne høre den respektive tone. Du kan afspille din egen melodi eller musik ved at trykke let med forskellige intervaller og forskellige positioner.
Den Videoen nedenfor viser den komplette bearbejdning af th projekt. Håber du nød at bygge projektet, eventuelle forslag eller spørgsmål kan blive sendt i kommentarfeltet nedenfor. Tjek også vores Arduino Audio Player og Arduino Tone Generator Project.