I detta projekt kommer vi att utveckla en tongenerator med Arduino Uno. Vi kommer att ha knappar gränssnitt med UNO och var och en av dem genererar olika tonintensitet. Tonfrekvensen som genereras av UNO är densamma vid varje intern. Det är ljudets intensitet som ändras för varje tryckning. Det här är det enklaste sättet att skapa ett piano med Arduino Uno. Kontrollera även denna pianokrets.
Tonerna kan ökas upp till 20. Detta ger den bästa tonvariationen och mycket mjukare förändringar. Tonens intensitet ändras av PWM (Pulse Width Modulation). Ett exempel på PWM visas i diagrammet nedan.
I PWM är signalfrekvensen eller signalperioden (Ton + Toff) alltid konstant. Endast förhållandet mellan PÅ och AV PÅ-tiden ändras. Till exempel i den andra grafen i ovanstående figur är TURN ON-tiden 80% och TURN OFF-tiden är 20% av hela varaktigheten.
I det tredje diagrammet är PÅ-tiden 50% och PÅ-tiden 50% av hela varaktigheten. Så i det första fallet har vi en tullkvot på 80% och i andra fall har vi en tullkvot på 20%.
Med denna förändring i arbetsförhållandet har vi en förändring i Vrms (Rotationsvärde kvadratvärde för spänning), när denna spänning ges till summern gör det ett annat ljud när det finns en förändring i arbetsförhållandet.
Vi ska programmera UNO för att ge en PWM-signal med olika arbetsförhållande för var och en av knapparna. Så vi har en tongenerator till hands som genererar en annan ton med varje knapptryckning.
Komponenter krävs
Hårdvara: Arduino Uno, Strömförsörjning (5v), 1000 uF kondensator, 100 nF kondensator, Summer, knappar (8 st).
Programvara: AURDINO nightly eller Atmel studio 6.2
Kretsschema och arbetsförklaring
Kretsen för tongenerator visas i nedanstående diagram.
För att filtrera bort bruset från matningsspänningen placeras kondensatorer över terminalerna som visas i diagrammet.
PWM från Arduino Uno kan uppnås vid någon av stiften symboliserade som “~” på kretskortet. Det finns sex PWM-kanaler i UNO. Vi kan emellertid inte använda PWM-stift som är upprättade över PINS 0-7, eftersom PINS föredras för knapparna.
Det finns en anledning att välja PINS 0-7 som ingångar, eftersom PINS 0-7 representerar PORTD för mikrokontroller. Så i det senare fallet kan vi ta hela BYTE av PORTD.
Nu för att få ett annat arbetsförhållande PWM, kommer vi att använda följande kommando.
analogWrite (9, VALUE); |
Från ovanstående tillstånd kan vi direkt få PWM-signalen vid motsvarande stift. Den första parametern inom parentes är att välja PIN-nummer för PWM-signalen. Den andra parametern är för skrivförmåga.
PWM-värdet på Arduino Uno kan ändras från 0 till 255. Med "0" som lägst till "255" som högst. Med 255 som arbetsförhållande får vi 5V vid PIN9. Om tullförhållandet anges som 125 får vi 2,5V vid PIN9. Vi kommer att dela arbetsförhållandet 0-250 mellan 8 knappar som är gränssnitt vid PORTD i UNO. Här väljer jag 25 steg för varje knapp, men det är ditt val.
Med det kommer vi att ha en PWM-signal vars arbetsförhållande ändras för varje knapp. Detta ges till summern, vi har tongenerator. Arbetet med denna Arduino-baserade tongenerator förklaras steg för steg i C-koden nedan.