ఈ ప్రాజెక్ట్లో మేము ఆర్డునో యునో ఉపయోగించి టోన్ జనరేటర్ను అభివృద్ధి చేస్తాము. మేము UNO తో అనుసంధానించబడిన బటన్లను కలిగి ఉంటాము మరియు వాటిలో ప్రతి ఒక్కటి స్వరం యొక్క విభిన్న తీవ్రతను సృష్టిస్తాయి. UNO చేత ఉత్పత్తి చేయబడిన స్వరం యొక్క ఫ్రీక్వెన్సీ ప్రతి అంతర్గత వద్ద సమానంగా ఉంటుంది. ఇది ప్రతి ప్రెస్తో మారుతున్న ధ్వని యొక్క తీవ్రత. ఆర్డునో యునోతో పియానో తయారు చేయడానికి ఇది సులభమైన మార్గం. ఈ పియానో సర్క్యూట్ను కూడా తనిఖీ చేయండి.
టోన్లను 20 వరకు పెంచవచ్చు. ఇది ఉత్తమ టోన్ వైవిధ్యాన్ని మరియు చాలా సున్నితమైన మార్పులను ఇస్తుంది. టోన్ యొక్క తీవ్రత PWM (పల్స్ వెడల్పు మాడ్యులేషన్) ద్వారా మార్చబడుతుంది. PWM యొక్క ఉదాహరణ క్రింద గ్రాఫ్లో చూపబడింది.
PWM లో, సిగ్నల్ యొక్క ఫ్రీక్వెన్సీ లేదా సిగ్నల్ యొక్క కాల వ్యవధి (టన్ను + టోఫ్) ఎల్లప్పుడూ స్థిరంగా ఉంటుంది. టర్న్ ఆన్ మరియు టర్న్ ఆఫ్ సమయం మార్పుల నిష్పత్తి మాత్రమే. ఉదాహరణకు పై చిత్రంలో రెండవ గ్రాఫ్లో, టర్న్ ఆన్ సమయం 80% మరియు టర్న్ ఆఫ్ సమయం పూర్తి వ్యవధిలో 20%.
మూడవ గ్రాఫ్లో, టర్న్ ఆన్ సమయం 50% మరియు టర్న్ ఆఫ్ సమయం పూర్తి వ్యవధిలో 50%. కాబట్టి మొదటి సందర్భంలో మనకు 80% విధి నిష్పత్తి మరియు రెండవ సందర్భంలో మనకు 20% విధి నిష్పత్తి ఉంది.
విధి నిష్పత్తిలో ఈ మార్పుతో మనకు Vrms (వోల్టేజ్ యొక్క రూట్ మీన్ స్క్వేర్ విలువ) లో మార్పు ఉంది, ఈ వోల్టేజ్ బజర్కు ఇచ్చినప్పుడు విధి నిష్పత్తిలో మార్పు వచ్చినప్పుడల్లా అది వేరే శబ్దం చేస్తుంది.
ప్రతి బటన్లకు వేర్వేరు విధి నిష్పత్తి యొక్క PWM సిగ్నల్ అందించడానికి మేము UNO ని ప్రోగ్రామ్ చేయబోతున్నాము. కాబట్టి మన దగ్గర టోన్ జెనరేటర్ ఉంది, ఇది ప్రతి బటన్ ప్రెస్తో వేరే టోన్ను ఉత్పత్తి చేస్తుంది.
భాగాలు అవసరం
హార్డ్వేర్: ఆర్డునో యునో, విద్యుత్ సరఫరా (5 వి), 1000 యుఎఫ్ కెపాసిటర్, 100 ఎన్ఎఫ్ కెపాసిటర్, బజర్, బటన్లు (8 ముక్కలు).
సాఫ్ట్వేర్: AURDINO రాత్రిపూట లేదా Atmel స్టూడియో 6.2
సర్క్యూట్ రేఖాచిత్రం మరియు వర్కింగ్ వివరణ
టోన్ జనరేటర్ కోసం సర్క్యూట్ క్రింద ఉన్న రేఖాచిత్రంలో చూపబడింది.
రేఖాచిత్రంలో చూపిన విధంగా సరఫరా వోల్టేజ్ కెపాసిటర్ల నుండి శబ్దాన్ని ఫిల్టర్ చేయడానికి టెర్మినల్స్ అంతటా ఉంచారు.
ఆర్డునో యునో యొక్క పిడబ్ల్యుఎం పిసిబి బోర్డులో “~” గా సూచించబడిన పిన్స్లో ఏదైనా సాధించవచ్చు. UNO లో ఆరు PWM ఛానెల్స్ ఉన్నాయి. అయితే పిన్స్ 0-7 పై స్థాపించబడిన పిడబ్ల్యుఎం పిన్లను మేము ఉపయోగించలేము, ఎందుకంటే పిన్లు బటన్ల ఇంటర్ఫేస్కు ప్రాధాన్యత ఇవ్వబడతాయి.
పిన్లను 0-7 ఇన్పుట్లుగా ఎంచుకోవడానికి ఒక కారణం ఉంది, ఎందుకంటే పిన్లు 0-7 మైక్రోకంట్రోలర్ యొక్క PORTD ని సూచిస్తాయి. కాబట్టి తరువాతి సందర్భంలో మనం PORTD యొక్క పూర్తి BYTE తీసుకోవచ్చు.
ఇప్పుడు వేరే డ్యూటీ రేషియో పిడబ్ల్యుఎం పొందడానికి, మేము ఈ క్రింది ఆదేశాన్ని ఉపయోగించబోతున్నాము.
అనలాగ్రైట్ (9, VALUE); |
పై పరిస్థితి నుండి మనం నేరుగా పిన్ వద్ద పిడబ్ల్యుఎం సిగ్నల్ పొందవచ్చు. బ్రాకెట్లలోని మొదటి పరామితి PWM సిగ్నల్ యొక్క పిన్ సంఖ్యను ఎంచుకోవడం. రెండవ పరామితి విధి నిష్పత్తి రాయడం.
Arduino Uno యొక్క PWM విలువను 0 నుండి 255 కు మార్చవచ్చు. “0” తో అత్యల్పంగా “255” కి అత్యధికంగా ఉంటుంది. డ్యూటీ రేషియోగా 255 తో పిన్ 9 వద్ద 5 వి వస్తుంది. విధి నిష్పత్తి 125 గా ఇస్తే మనకు పిన్ 9 వద్ద 2.5 వి లభిస్తుంది. మేము UNO యొక్క PORTD వద్ద ఇంటర్ఫేస్ చేసిన 8 బటన్లలో 0-250 యొక్క విధి నిష్పత్తిని విభజించబోతున్నాము. ఇక్కడ నేను ప్రతి బటన్ కోసం 25 ఇంక్రిమెంట్లను ఎంచుకుంటాను, కానీ అది మీకు నచ్చినది.
దానితో మనకు ప్రతి బటన్తో విధి నిష్పత్తి మారుతున్న పిడబ్ల్యుఎం సిగ్నల్ ఉంటుంది. ఇది బజర్కు ఇవ్వబడుతోంది, మాకు టోన్ జనరేటర్ ఉంది. ఈ ఆర్డునో బేస్డ్ టోన్ జెనరేటర్ యొక్క పని క్రింద ఇవ్వబడిన సి కోడ్లో దశల వారీగా వివరించబడింది.