హాయ్ అబ్బాయిలు, గత కొన్ని వారాలలో, నేను గిటార్ పట్ల నాకున్న ప్రేమతో తిరిగి కనెక్ట్ అయ్యే పనిలో ఉన్నాను. బాక్స్ గిటార్ ప్లే చేయడం సాక్సోఫోన్ బాధ్యతలు చేపట్టడానికి కొన్ని సంవత్సరాల క్రితం నేను ఎలా విశ్రాంతి తీసుకుంటాను. గిటార్కి తిరిగి వెళుతున్నప్పుడు, 3 సంవత్సరాల అరుదుగా తీగ తీసిన తరువాత, ప్రతి స్ట్రింగ్ ఎలా ధ్వనించాలో నాకు తెలియని ఇతర విషయాలలో నేను కనుగొన్నాను, నా స్నేహితుడి మాటలలో చెప్పాలంటే, “నా వినికిడి ఇకపై ట్యూన్ చేయబడలేదు” మరియు దీని ఫలితంగా, నేను తరువాత డౌన్లోడ్ చేసిన కీబోర్డ్ లేదా మొబైల్ అనువర్తనం సహాయం లేకుండా గిటార్ను ట్యూన్ చేయలేకపోయాను. కొన్ని రోజుల క్రితం నాలో తయారీదారు ప్రేరణ పొందినప్పుడు వారాలు గడిచాయి మరియు నేను ఆర్డునో ఆధారిత గిటార్ ట్యూనర్ను నిర్మించాలని నిర్ణయించుకున్నాను. నేటి ట్యుటోరియల్లో, మీ స్వంత DIY Arduino గిటార్ ట్యూనర్ను ఎలా నిర్మించాలో నేను పంచుకుంటాను.
గిటార్ ట్యూనర్ ఎలా పనిచేస్తుంది
మేము ఎలక్ట్రానిక్స్కు వెళ్ళే ముందు, బిల్డ్ వెనుక ఉన్న సూత్రాన్ని అర్థం చేసుకోవడం ముఖ్యం. వర్ణమాలలచే సూచించబడిన 7 ప్రధాన సంగీత గమనికలు ఉన్నాయి; A, B, C, D, E, F, G మరియు సాధారణంగా మరొక A తో ముగుస్తుంది, ఇది ఎల్లప్పుడూ మొదటి A కన్నా ఎక్కువ అష్టపది వద్ద ఉంటుంది. సంగీతంలో ఈ గమనికల యొక్క అనేక సంస్కరణలు మొదటి A మరియు చివరి A. లాగా ఉన్నాయి. ఈ గమనికలు పిచ్ అని పిలువబడే ధ్వని యొక్క లక్షణాలలో ఒకదానికొకటి వాటి వైవిధ్యం నుండి మరియు ఒకదానికొకటి వేరు చేయబడతాయి. పిచ్ ధ్వని యొక్క శబ్దం లేదా తక్కువతనం అని నిర్వచించబడింది మరియు అది ఆ శబ్దం యొక్క ఫ్రీక్వెన్సీ ద్వారా సూచించబడుతుంది. ఈ నోట్ల యొక్క ఫ్రీక్వెన్సీ తెలిసినందున, గిటార్ ట్యూన్ చేయబడిందో లేదో తెలుసుకోవడానికి, ప్రత్యేకమైన స్ట్రింగ్ యొక్క నోట్ యొక్క ఫ్రీక్వెన్సీని స్ట్రింగ్ సూచించే నోట్ యొక్క వాస్తవ ఫ్రీక్వెన్సీతో మాత్రమే పోల్చాలి.
7 సంగీత గమనికల యొక్క పౌన encies పున్యాలు:
A = 27.50Hz
B = 30.87Hz
సి = 16.35 హెర్ట్జ్
D = 18.35Hz
E = 20.60Hz
F = 21.83Hz
G = 24.50 Hz
ఈ గమనికల యొక్క ప్రతి వైవిధ్యం ఎల్లప్పుడూ FxM కు సమానమైన పిచ్ వద్ద ఉంటుంది, ఇక్కడ F పౌన frequency పున్యం మరియు M సున్నా కాని పూర్ణాంకం. ఇంతకుముందు వివరించినట్లుగా, చివరి A కి, మొదటి A కన్నా ఎక్కువ అష్టపది వద్ద ఉంటుంది, ఫ్రీక్వెన్సీ;
27.50 x 2 = 55Hz.
గిటార్ (లీడ్ / బాక్స్ గిటార్) సాధారణంగా ఓపెన్ స్ట్రింగ్లో E, A, D, G, B, E నోట్స్ ద్వారా సూచించబడే 6 తీగలను కలిగి ఉంటుంది. ఎప్పటిలాగే, చివరి E మొదటి E కన్నా ఎక్కువ అష్టపది వద్ద ఉంటుంది. ఈ నోట్ల యొక్క పౌన encies పున్యాలను ఉపయోగించి గిటార్ను ట్యూన్ చేయడంలో సహాయపడటానికి మేము మా గిటార్ ట్యూనర్ను రూపొందిస్తాము.
ప్రామాణిక గిటార్ ట్యూనింగ్ ప్రకారం, ప్రతి స్ట్రింగ్ యొక్క గమనిక మరియు సంబంధిత పౌన frequency పున్యం క్రింది పట్టికలో చూపబడతాయి.
తీగలను |
తరచుదనం |
సంజ్ఞామానం |
1 (ఇ) |
329.63 హెర్ట్జ్ |
ఇ 4 |
2 (బి) |
246.94 హెర్ట్జ్ |
బి 3 |
3 (జి) |
196.00 హెర్ట్జ్ |
జి 3 |
4 (డి) |
146.83 హెర్ట్జ్ |
డి 3 |
5 (ఎ) |
110.00 హెర్ట్జ్ |
ఎ 2 |
6 (ఇ) |
82.41 హెర్ట్జ్ |
ఇ 2 |
ప్రాజెక్ట్ ప్రవాహం చాలా సులభం; మేము గిటార్ ద్వారా ఉత్పత్తి చేయబడిన సౌండ్ సిగ్నల్ను ఫ్రీక్వెన్సీగా మారుస్తాము, ఆపై ట్యూన్ చేయబడిన స్ట్రింగ్ యొక్క ఖచ్చితమైన ఫ్రీక్వెన్సీ విలువతో పోల్చండి. విలువ పరస్పర సంబంధం ఉన్నప్పుడు LED ఉపయోగించి గిటారిస్ట్కు తెలియజేయబడుతుంది.
ఫ్రీక్వెన్సీ డిటెక్షన్ / మార్పిడి 3 ప్రధాన దశలను కలిగి ఉంటుంది;
- విస్తరించడం
- ఆఫ్సెట్టింగ్
- అనలాగ్ టు డిజిటల్ మార్పిడి (నమూనా)
ఉత్పత్తి చేయబడుతున్న సౌండ్ సిగ్నల్ Arduino యొక్క ADC గుర్తించడానికి చాలా బలహీనంగా ఉంటుంది కాబట్టి మేము సిగ్నల్ను విస్తరించాలి. విస్తరణ తరువాత, సిగ్నల్ యొక్క క్లిప్పింగ్ను నివారించడానికి ఆర్డునో యొక్క ADC గుర్తించదగిన పరిధిలో సిగ్నల్ ఉంచడానికి, మేము సిగ్నల్ యొక్క వోల్టేజ్ను ఆఫ్సెట్ చేస్తాము. ఆఫ్సెట్ చేసిన తరువాత, సిగ్నల్ ఆర్డునో ఎడిసికి పంపబడుతుంది, అక్కడ అది నమూనా చేయబడుతుంది మరియు ఆ ధ్వని యొక్క పౌన frequency పున్యం పొందబడుతుంది.
అవసరమైన భాగాలు
ఈ ప్రాజెక్ట్ను నిర్మించడానికి క్రింది భాగాలు అవసరం;
- ఆర్డునో యునో x1
- LM386 x1
- కండెన్సర్ మైక్ x1
- మైక్రోఫోన్ / ఆడియో జాక్ x1
- 10 కె పొటెన్షియోమీటర్ x1
- O.1uf కెపాసిటర్ x2
- 100ohms రెసిస్టర్ x4
- 10ohms రెసిస్టర్ x1
- 10uf కెపాసిటర్ x3
- 5 మి.మీ పసుపు LED x2
- 5 మి.మీ గ్రీన్ ఎల్ఈడి ఎక్స్ 1
- సాధారణంగా ఓపెన్ పుష్ బటన్లు x6
- జంపర్ వైర్లు
- బ్రెడ్బోర్డ్
స్కీమాటిక్స్
దిగువ గిటార్ ట్యూనర్ సర్క్యూట్ రేఖాచిత్రంలో చూపిన విధంగా భాగాలను కనెక్ట్ చేయండి.
పుల్ బటన్లు పుల్ అప్ / డౌన్ రెసిస్టర్లు లేకుండా అనుసంధానించబడి ఉంటాయి ఎందుకంటే ఆర్డునో యొక్క అంతర్నిర్మిత పుల్అప్ రెసిస్టర్లు ఉపయోగించబడతాయి. సర్క్యూట్ సాధ్యమైనంత సులభం అని నిర్ధారించడం ఇది.
గిటార్ ట్యూనర్ కోసం ఆర్డునో కోడ్
ఈ గిటార్ ట్యూనర్ ప్రాజెక్ట్ కోసం కోడ్ వెనుక ఉన్న అల్గోరిథం చాలా సులభం. ఒక నిర్దిష్ట స్ట్రింగ్ను ట్యూన్ చేయడానికి, గిటారిస్ట్ సంబంధిత పుష్బటన్ను నొక్కడం ద్వారా స్ట్రింగ్ను ఎంచుకుంటాడు మరియు ఓపెన్ స్ట్రింగ్ను ప్లే చేస్తుంది. ధ్వని విస్తరణ దశ ద్వారా సేకరించి ఆర్డునో ADC కి పంపబడుతుంది. ఫ్రీక్వెన్సీ డీకోడ్ చేయబడింది మరియు పోల్చబడింది. స్ట్రింగ్ నుండి ఇన్పుట్ ఫ్రీక్వెన్సీ పేర్కొన్న ఫ్రీక్వెన్సీ కంటే తక్కువగా ఉన్నప్పుడు, ఆ స్ట్రింగ్ కోసం పసుపు LED లలో ఒకటి స్ట్రింగ్ బిగించాలని సూచిస్తుంది. కొలిచిన పౌన frequency పున్యం ఆ స్ట్రింగ్ కోసం నిర్దేశించిన ఫ్రీక్వెన్సీ కంటే ఎక్కువగా ఉన్నప్పుడు, మరొక LED వస్తుంది. ఫ్రీక్వెన్సీ ఆ స్ట్రింగ్ కోసం నిర్ణీత పరిధిలో ఉన్నప్పుడు, గిటారిస్ట్కు మార్గనిర్దేశం చేయడానికి ఆకుపచ్చ LED వస్తుంది.
పూర్తి ఆర్డునో కోడ్ చివరిలో ఇవ్వబడింది, ఇక్కడ మేము కోడ్ యొక్క ముఖ్యమైన భాగాలను క్లుప్తంగా వివరించాము.
స్విచ్లను పట్టుకోవడానికి శ్రేణిని సృష్టించడం ద్వారా మేము ప్రారంభిస్తాము.
int buttonarray = {13, 12, 11, 10, 9, 8}; //
తరువాత, ప్రతి తీగలకు సంబంధిత పౌన frequency పున్యాన్ని ఉంచడానికి మేము శ్రేణిని సృష్టిస్తాము.
float freqarray = {82.41, 110.00, 146.83, 196.00, 246.94, 329.63}; // అన్నీ Hz లో
ఇది పూర్తయిన తరువాత, LED లు అనుసంధానించబడిన పిన్లను మరియు ADC నుండి ఫ్రీక్వెన్సీని పొందటానికి ఉపయోగించబడే ఇతర వేరియబుల్లను మేము ప్రకటిస్తాము.
int lowerLed = 7; int highLed = 6; int justRight = 5; # పొడవు 512 బైట్ ముడిడేటాను నిర్వచించండి ; పూర్ణ సంఖ్య;
తదుపరిది శూన్య సెటప్ () ఫంక్షన్.
స్విచ్లు అనుసంధానించబడిన ప్రతి పిన్ల కోసం ఆర్డునోలో అంతర్గత పుల్ అప్ను ప్రారంభించడం ద్వారా ఇక్కడ మేము ప్రారంభిస్తాము. ఆ తరువాత మేము LED లను అవుట్పుట్లుగా అనుసంధానించబడిన పిన్లను సెట్ చేసి, డేటాను ప్రదర్శించడానికి సీరియల్ మానిటర్ను ప్రారంభిస్తాము.
గర్జన సెటప్ () { (Int i = 0; i <= 5; i ++) కోసం { pinMode (buttonarray, INPUT_PULLUP); } పిన్మోడ్ (లోయర్లెడ్, అవుట్పుట్); పిన్మోడ్ (హైలెడ్, అవుట్పుట్); పిన్మోడ్ (జస్ట్రైట్, అవుట్పుట్); సీరియల్.బెగిన్ (115200); }
తరువాత, శూన్య లూప్ ఫంక్షన్, మేము ఫ్రీక్వెన్సీ డిటెక్షన్ మరియు పోలికను అమలు చేస్తాము.
void loop () { if (count <LENGTH) { count ++; rawData = అనలాగ్ రీడ్ (A0) >> 2; } else { sum = 0; pd_state = 0; పూర్ణాంక కాలం = 0; (i = 0; i <len; i ++) { // Autocorrelation sum_old = sum; మొత్తం = 0; (k = 0; k <len-i; k ++) sum + = (rawData-128) * (rawData-128) / 256; // సీరియల్.ప్రింట్ల్న్ (మొత్తం); // పీక్ డిటెక్ట్ స్టేట్ మెషీన్ ఉంటే (pd_state == 2 && (sum-sum_old) <= 0) { period = i; pd_state = 3; } if (pd_state == 1 && (sum> thresh) && (sum-sum_old)> 0) pd_state = 2; if (! i) { thresh = sum * 0.5; pd_state = 1; } } // ఫ్రీక్వెన్సీ Hz గుర్తించిన ఉంటే (వేయు> 100) { freq_per = sample_freq / కాలం; సీరియల్.ప్రింట్ల్న్ (ఫ్రీక్_పెర్); (int s = 0; s <= 5; s ++) { if (DigitalRead (buttonarray) == HIGH) { if (freq_per - freqarray <0) { DigitalWrite (lowerLed, HIGH); } else if (freq_per - freqarray> 10) { DigitalWrite (highLed, HIGH); } else { డిజిటల్ రైట్ (జస్ట్రైట్, హై); } } } } లెక్కింపు = 0; } }
ప్రదర్శన వీడియో తో పూర్తి కోడ్ క్రింద ఇవ్వబడింది. మీ Arduino బోర్డ్కు కోడ్ను అప్లోడ్ చేయండి మరియు దూరంగా ఉండండి.