I dette prosjektet vil vi utvikle en tonegenerator ved hjelp av Arduino Uno. Vi vil ha knapper grensesnittet med UNO, og hver av dem genererer forskjellig toneintensitet. Tonefrekvensen som genereres av UNO er den samme ved alle interne. Det er lydens intensitet som endres for hvert trykk. Dette er en av de enkleste måtene å lage et piano med Arduino Uno. Sjekk også denne pianokretsen.
Tonene kan økes opp til 20. Dette gir den beste tonevariasjonen og mye jevnere endringer. Intensiteten til tonen endres av PWM (Pulse Width Modulation). Et eksempel på PWM er vist i grafen nedenfor.
I PWM er signalfrekvensen eller signalperioden (Ton + Toff) alltid konstant. Bare forholdet mellom SLÅ PÅ og SLÅ AV tid endres. For eksempel i den andre grafen i figuren ovenfor, er PÅ PÅ-tiden 80% og PÅ-tiden er 20% av full varighet.
I den tredje grafen er PÅ PÅ-tiden 50% og PÅ-tiden er 50% av full varighet. Så i det første tilfellet har vi et tollforhold på 80%, og i det andre tilfellet har vi et tollforhold på 20%.
Med denne endringen i driftsforhold har vi en endring i Vrms (Root Mean Square-verdi av spenning), når denne spenningen blir gitt til summeren, gir den en annen lyd når det er en endring i driftsforholdet.
Vi skal programmere UNO for å gi et PWM-signal med forskjellig arbeidsforhold for hver av knappene. Så vi har en tonegenerator for hånden som genererer en annen tone for hvert knappetrykk.
Komponenter kreves
Maskinvare: Arduino Uno, strømforsyning (5v), 1000 uF kondensator, 100 nF kondensator, summer, knapper (8 stykker).
Programvare: AURDINO nattlig eller Atmel studio 6.2
Kretsdiagram og arbeidsforklaring
Kretsen for tonegenerator er vist i diagrammet nedenfor.
For å filtrere ut støyen fra forsyningsspenningen plasseres kondensatorer over terminalene som vist i diagrammet.
PWM fra Arduino Uno kan oppnås ved hvilken som helst av pinnene som er symbolisert som “~” på PCB-kortet. Det er seks PWM-kanaler i UNO. Vi kan imidlertid ikke bruke PWM-pinner som er etablert over PINS 0-7, da PINS er foretrukket for knappegrensesnitt.
Det er en grunn til å velge PINS 0-7 som innganger, fordi PINS 0-7 representerer PORTD til mikrokontroller. Så i sistnevnte tilfelle kan vi ta hele BYTE av PORTD.
Nå for å få et annet pliktforhold PWM, skal vi bruke følgende kommando.
analogWrite (9, VALUE); |
Fra ovennevnte tilstand kan vi få direkte PWM-signalet ved den tilsvarende pin. Den første parameteren i parentes er å velge pin-nummeret til PWM-signalet. Den andre parameteren er for skriveforhold.
PWM-verdien til Arduino Uno kan endres fra 0 til 255. Med "0" som lavest til "255" som høyest. Med 255 som driftsforhold får vi 5V ved PIN9. Hvis pliktforholdet er gitt som 125, får vi 2,5V ved PIN9. Vi skal dele pliktforholdet på 0-250 mellom 8 knapper som er grensesnittet ved PORTD på UNO. Her velger jeg 25 trinn for hver knapp, men det er ditt valg.
Med det vil vi ha et PWM-signal hvis pliktforhold endres med hver knapp. Dette blir gitt til summer, vi har tonegenerator. Arbeid med denne Arduino-baserte tonegeneratoren forklares trinn for trinn i C-koden gitt nedenfor.