विषयसूची:

Arduino के साथ एक गाने को डिजिटाइज़ करें: 6 कदम
Arduino के साथ एक गाने को डिजिटाइज़ करें: 6 कदम

वीडियो: Arduino के साथ एक गाने को डिजिटाइज़ करें: 6 कदम

वीडियो: Arduino के साथ एक गाने को डिजिटाइज़ करें: 6 कदम
वीडियो: How to use Visual Studio Code for Arduino? | in Hindi 2024, नवंबर
Anonim
Arduino के साथ एक गाने को डिजिटाइज़ करें
Arduino के साथ एक गाने को डिजिटाइज़ करें

मैं एक ऐसा प्रोजेक्ट बनाना चाहता था जो मेरे दो पसंदीदा विषयों को मिलाए: विज्ञान और संगीत। मैंने उन सभी तरीकों के बारे में सोचा जिनसे मैं इन दो डोमेन को जोड़ सकता था, और, मैंने सोचा कि हर्ट्ज़ में नोट की पिच को प्रदर्शित करते हुए एक Arduino play Fur Elise बनाना दिलचस्प होगा। अब, चलो निर्माण शुरू करते हैं!

आपको एक Arduino Uno या Mega, ढेर सारे जम्पर केबल, एक Piezo बजर, एक ब्रेडबोर्ड, सभी वाइपर पिन के साथ एक 16*2 LCD स्क्रीन और एक 10k पोटेंशियोमीटर की आवश्यकता होगी (आप उन्हें पॉटमीटर के रूप में संदर्भित करते हुए भी सुन सकते हैं)) निर्माण शुरू करने से पहले इन सभी आपूर्तियों को एक साथ प्राप्त करना सबसे अच्छा है।

चरण 1: संगीत स्कोर को डिजिटल नोट्स में बदलें: विलंब मान

संगीत स्कोर को डिजिटल नोट्स में बदलें: विलंब मान
संगीत स्कोर को डिजिटल नोट्स में बदलें: विलंब मान

किसी नोट को स्कोर से उसके डिजिटल समकक्ष में डिजिटल रूप से ट्रांसक्रिप्ट करने के दो चरण हैं। सबसे पहले, हमें उस समय को लिखना होगा जब नोट मिलीसेकंड में रहता है। मैंने इस कार्य के लिए ऑनलाइन पाया गया एक चार्ट नियोजित किया। इस आधार पर कि क्या कोई नोट आधा नोट, चौथाई नोट, आठवां नोट, आदि था, मैंने नोट की लंबाई को मिलीसेकंड में बदल दिया। आप इन नंबरों को मेरे कोड में देरी के रूप में देख सकते हैं (); फ़ंक्शन और कोष्ठक के भीतर की संख्या इस चरण में निर्धारित मिलीसेकंड में विलंब मान होगी।

चरण 2: संगीत स्कोर को डिजिटल नोट्स में बदलें: हर्ट्ज़ मान

संगीत स्कोर को डिजिटल नोट्स में बदलें: हर्ट्ज़ मान
संगीत स्कोर को डिजिटल नोट्स में बदलें: हर्ट्ज़ मान

इस चरण को शुरू करने से पहले, मैं कुछ तकनीकी शब्दों को परिभाषित करता हूं। एक नोट के "मूल्य" को "पिच", "वैल्यू" और "नोट" शब्दों के साथ परस्पर उपयोग किया जा सकता है। अब, आपको गाने के प्रत्येक नोट को स्कोर से पढ़ना होगा। फिर आपको प्रत्येक नोट को हर्ट्ज़ तालिका में संगीत का उपयोग करके हर्ट्ज़ में अनुवाद करना होगा, जिसे आप आसानी से ऑनलाइन पा सकते हैं। याद रखने वाली एक बात यह है कि मध्य C को टेबल पर C4 के रूप में सूचीबद्ध किया गया है, और एक सप्तक उच्चतर C5 है, और इसी तरह। एक बार जब ये सभी नोट हर्ट्ज़ में ट्रांसक्राइब हो जाएंगे, तो आप मानों को फंक्शन टोन (x, y, z) में रखेंगे; जहां एक्स पिन नंबर या कॉन्स्ट इंट है, वेरिएबल्स को परिभाषित करने का एक तरीका है जिसे मैं बाद में समझाऊंगा। Y वह हर्ट्ज़ मान होगा जिसे आपने अभी-अभी लिखा है, और Z नोट की अवधि मिलीसेकंड में निकटतम सौवें स्थान पर होगी। विलंब(); मान नोट की अवधि होगी। अब, उस सर्किट को डिज़ाइन करते हैं जो संगीत चला सकता है।

चरण 3: सर्किट डिजाइन

सर्किट डिज़ाइन
सर्किट डिज़ाइन

अब जब हमने सभी नोटों का डिजिटल मूल्यों में अनुवाद कर दिया है जिसे कंप्यूटर समझ सकता है, तो यह सर्किट बनाने का समय है। ब्रेडबोर्ड लेकर और पहली पिन (जीएनडी) के साथ एलसीडी स्क्रीन को 14 पंक्ति में रखकर शुरू करें। बजर को अपनी पसंद के किसी भी स्थान पर रखें, और उसके बगल में एक पोटेंशियोमीटर रखें। तारों की अव्यवस्था को कम करने के लिए लक्ष्य सब कुछ पंक्तिबद्ध करना है। ब्रेडबोर्ड के बगल में Arduino रखें, और 5v पिन को ब्रेडबोर्ड के पॉजिटिव रेल से और ग्राउंड पिन को नेगेटिव रेल से कनेक्ट करें। अब, हम Arduino और घटकों के बीच कूदने वालों को जोड़ने के लिए तैयार हैं।

अब, एलसीडी पर पिन के बारे में बात करते हैं, और उन्हें कैसे तारित किया जाता है।

GND का मतलब ग्राउंड है, यह डायरेक्ट करंट में नेगेटिव वायर है। ब्रेडबोर्ड की नेगेटिव रेल पर GND को वायर करें।

VCC का मतलब कॉमन कलेक्टर में वोल्टेज है, और यह वह जगह है जहाँ आप अपने 5-वोल्ट पावर स्रोत (पॉजिटिव पावर रेल) को कनेक्ट करते हैं।

VO का मतलब कंट्रास्ट है, इसे पोटेंशियोमीटर के मध्य पिन से तार दें। पोटेंशियोमीटर के बाएं पिन को पॉजिटिव पावर रेल से और राइट पिन को ग्राउंड पावर रेल से कनेक्ट करें।

RS का मतलब रजिस्टर सेलेक्ट है, और इसका उपयोग Arduino द्वारा डेटा को स्टोर करने के लिए डिस्प्ले को बताने के लिए किया जाता है। इस पिन को Arduino पर 12 पिन करने के लिए कनेक्ट करें।

RW का मतलब रीड/राइट पिन है, जिसका उपयोग Arduino यह जांचने के लिए करता है कि स्क्रीन वह दिखा रही है जो आपने उसे दिखाने के लिए प्रोग्राम किया है। इस पिन को ब्रेडबोर्ड पर नेगेटिव रेल से कनेक्ट करें।

ई सक्षम के लिए खड़ा है, जो एलसीडी को बताता है कि कौन से पिक्सेल सक्षम (चालू) या अक्षम (बंद) हैं। इस पिन को Arduino pin 11 से कनेक्ट करें।

D4, D5, D6, और D7 डिस्प्ले पिन हैं जो प्रदर्शित होने वाले अक्षरों और अक्षरों को नियंत्रित करते हैं। उन्हें क्रमशः Arduino पिन 5, 4, 3 और 2 से कनेक्ट करें।

पिन ए, जिसे कभी-कभी एलईडी लेबल किया जाता है, बैकलाइट के लिए एलईडी एनोड है। इसे सकारात्मक पावर रेल से तार के साथ या 220-ओम प्रतिरोधी के साथ कनेक्ट करें। रोकनेवाला लंबे समय तक उपयोग के लिए बेहतर है क्योंकि यह एलसीडी को बख्शता है, लेकिन अगर डिवाइस दिन-रात उपयोग नहीं किया जा रहा है, तो आपको रोकनेवाला की आवश्यकता नहीं है।

पिन के, कभी-कभी भी (भ्रमित रूप से) एलईडी लेबल, एलईडी ग्राउंड पिन है। इसे ग्राउंड पावर रेल से कनेक्ट करें।

चरण 4: कोड अपलोड करना: कैसे-करें

अपने Arduino को अपने कंप्यूटर के USB में प्लग करें। Arduino IDE प्रोग्रामर का उपयोग करके निम्न कोड अपलोड करें।

#शामिल

const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2; लिक्विड क्रिस्टल एलसीडी (आरएस, एन, डी 4, डी 5, डी 6, डी 7);

व्यर्थ व्यवस्था() {

// LCD के कॉलम और पंक्तियों की संख्या सेट करें: LCD.begin(16, 2); // एलसीडी पर एक संदेश प्रिंट करें। LCD.print ("हर्ट्ज पिच:!"); देरी (1000); शून्य लूप () {// ई ४ विलंब (६००) चलाएं; // ०.६ सेकंड के लिए रोकें (१०, ३२९.६३, ३००); // बजर को पिन १० पर चलाएं, ३ सेकंड के लिए अंतिम। LCD.print(" 329.63");//एलसीडी पर एक संदेश प्रदर्शित करें "329.63"

देरी (350); //.35 सेकंड के लिए देरी

LCD.clear (); // LCD साफ़ करें और अगले संदेश के लिए रीसेट करें // d4# टोन खेलें (10, 311.13, 300); एलसीडी.प्रिंट ("311.13"); देरी (350); एलसीडी.क्लियर (); // ई 4 टोन खेलें (10, 329.63, 300); एलसीडी.प्रिंट ("329.63"); देरी (350); एलसीडी.क्लियर (); // डी ४ # टोन खेलें (१०, ३११.१३, ३००); एलसीडी.प्रिंट ("311.13"); देरी (350); एलसीडी.क्लियर (); // ई 4 टोन खेलें (10, 329.63, 300); एलसीडी.प्रिंट ("329.63"); देरी (350); एलसीडी.क्लियर (); // b3 टोन खेलें (10, 246.94, 300); एलसीडी.प्रिंट ("246.94"); देरी (400); एलसीडी.क्लियर (); // डी ४ टोन खेलें (१०, २९३.६६, ३००); एलसीडी.प्रिंट ("293.66"); देरी (400); एलसीडी.क्लियर (); // c4 टोन खेलें (10, 261.63, 300); एलसीडी.प्रिंट ("261.63"); देरी (400); एलसीडी.क्लियर (); // a3 टोन खेलें (10, 220, 900); एलसीडी.प्रिंट ("220.0"); देरी (1000); LCD.clear();//line60//helpsave//avrdude.failure.eeprom // प्ले d3 टोन (10, 146.83, 300); एलसीडी.प्रिंट ("146.63"); देरी (350); एलसीडी.क्लियर (); // f3 टोन खेलें (10, 174.61, 300); एलसीडी.प्रिंट ("174.61"); देरी (400); एलसीडी.क्लियर (); // ए 3 टोन खेलें (10, 220, 300); एलसीडी.प्रिंट ("220"); देरी (400); एलसीडी.क्लियर (); // b3 टोन खेलें (10, 246.94, 900); एलसीडी.प्रिंट ("246.94"); देरी (1000); एलसीडी.क्लियर ();

// e3 खेलें

स्वर(१०, १६४.८१, ३००); एलसीडी.प्रिंट ("164.81"); देरी (400); एलसीडी.क्लियर (); // जी ३ # टोन खेलें (१०, २०७.६५, ३००); एलसीडी.प्रिंट ("207.65"); देरी (400); एलसीडी.क्लियर (); // b3 टोन खेलें (10, 246.94, 300); एलसीडी.प्रिंट ("246.94"); देरी (400); एलसीडी.क्लियर (); // c4 टोन खेलें (10, 261.63, 900); एलसीडी.प्रिंट ("261.63"); देरी (1000); एलसीडी.क्लियर (); // प्ले ई टोन (10, 164.81, 300); एलसीडी.प्रिंट ("164.81"); देरी (400); एलसीडी.क्लियर (); // ई 4 टोन खेलें (10, 329.63, 300); एलसीडी.प्रिंट ("329.63"); देरी (400); एलसीडी.क्लियर (); // डी ४ # टोन खेलें (१०, ३११.१३, ३००); एलसीडी.प्रिंट ("311.13"); देरी (400); एलसीडी.क्लियर (); // ई 4 टोन खेलें (10, 329.63, 300); एलसीडी.प्रिंट ("329.63"); देरी (400); एलसीडी.क्लियर (); // डी ४ # टोन खेलें (१०, ३११.१३, ३००); एलसीडी.प्रिंट ("311.13"); देरी (400); एलसीडी.क्लियर (); // ई 4 टोन खेलें (10, 329.63, 300); एलसीडी.प्रिंट ("329.63"); देरी (400); एलसीडी.क्लियर (); // b3 टोन खेलें (10, 246.94, 300); एलसीडी.प्रिंट ("246.94"); देरी (400); एलसीडी.क्लियर (); // डी ४ टोन खेलें (१०, २९३.६६, ३००); एलसीडी.प्रिंट ("293.66"); देरी (400); एलसीडी.क्लियर (); // c4 टोन खेलें (10, 261.63, 300); एलसीडी.प्रिंट ("261.63"); देरी (400); एलसीडी.क्लियर (); // a3 टोन खेलें (10, 220, 900); एलसीडी.प्रिंट ("220.0"); देरी (1000); एलसीडी.क्लियर (); // डी 3 टोन खेलें (10, 146.83, 300); एलसीडी.प्रिंट ("146.83"); देरी (400); एलसीडी.क्लियर (); // f3 टोन खेलें (10, 174.61, 300); //eeprom 20--6 Yesno, Flash 65--0 noyes LCD.print("174.61"); देरी (400); एलसीडी.क्लियर (); // a3 टोन खेलें (10, 220, 300); एलसीडी.प्रिंट ("220.0"); देरी (400); एलसीडी.क्लियर (); // b3 टोन खेलें (10, 246.94, 900); एलसीडी.प्रिंट ("246.94"); देरी (1000); एलसीडी.क्लियर (); // f3 टोन खेलें (10, 174.61, 300); एलसीडी.प्रिंट ("174.61"); देरी (400); एलसीडी.क्लियर (); // c4 टोन खेलें (10, 261.63, 300); एलसीडी.प्रिंट ("261.63"); देरी (400); एलसीडी.क्लियर (); // b3 टोन खेलें (10, 246.94, 300); एलसीडी.प्रिंट ("246.94"); देरी (400); एलसीडी.क्लियर (); // a3 टोन खेलें (10, 220, 900); एलसीडी.प्रिंट ("220.0"); देरी (1000); एलसीडी.क्लियर (); // b3 टोन खेलें (10, 246.94, 300); एलसीडी.प्रिंट ("246.94"); देरी (400); एलसीडी.क्लियर (); // c4 टोन खेलें (10, 261.63, 300); एलसीडी.प्रिंट ("261.63"); देरी (400); एलसीडी.क्लियर (); // डी ४ टोन खेलें (१०, २९३.६६, ३००); एलसीडी.प्रिंट ("293.66"); देरी (400); एलसीडी.क्लियर (); // ई 4 टोन खेलें (10, 329.63, 900); एलसीडी.प्रिंट ("329.63"); देरी (1000); एलसीडी.क्लियर (); // g3 टोन खेलें (10, 196, 300); एलसीडी.प्रिंट ("196.0"); देरी (400); एलसीडी.क्लियर (); // f4 टोन खेलें (10, 349.23, 300); एलसीडी.प्रिंट ("349.23"); देरी (400); एलसीडी.क्लियर (); // ई 4 टोन खेलें (10, 329.23, 300); एलसीडी.प्रिंट ("329.23"); देरी (400); एलसीडी.क्लियर (); // डी ४ टोन खेलें (१०, २९३.६३, ९००); एलसीडी.प्रिंट ("293.63"); देरी (1000); एलसीडी.क्लियर (); // ई ३ टोन खेलें (१०, १६४.८१, ३००); एलसीडी.प्रिंट ("164.81"); देरी (400); एलसीडी.क्लियर (); // ई 4 टोन खेलें (10, 329.63, 300); एलसीडी.प्रिंट ("329.63"); देरी (400); एलसीडी.क्लियर (); // डी ४ टोन खेलें (१०, २९३.६३, ३००); एलसीडी.प्रिंट ("293.63"); देरी (400); एलसीडी.क्लियर (); // c4 टोन खेलें (10, 261.63, 900); एलसीडी.प्रिंट ("261.63"); देरी (1000); एलसीडी.क्लियर (); // डी 3 टोन खेलें (10, 146.83, 300); एलसीडी.प्रिंट ("146.83"); देरी (400); एलसीडी.क्लियर (); // डी ४ टोन खेलें (१०, २९३.६३, ३००); एलसीडी.प्रिंट ("293.63"); देरी (400); एलसीडी.क्लियर (); // c4 टोन खेलें (10, 261.63, 300); एलसीडी.प्रिंट ("261.63"); देरी (400); एलसीडी.क्लियर (); // b3 टोन खेलें (10, 246.94, 900); एलसीडी.प्रिंट ("246.94"); देरी (1000); एलसीडी.क्लियर (); // ई 4 टोन खेलें (10, 329.63, 300); एलसीडी.प्रिंट ("329.63"); देरी (400); एलसीडी.क्लियर (); // डी ४ # टोन खेलें (१०, ३११.१३, ३००); एलसीडी.प्रिंट ("311.13"); देरी (350); एलसीडी.क्लियर (); // ई 4 टोन खेलें (10, 329.63, 300); एलसीडी.प्रिंट ("329.63"); देरी (350); एलसीडी.क्लियर (); // डी ४ # टोन खेलें (१०, ३११.१३, ३००); एलसीडी.प्रिंट ("311.13"); देरी (350); एलसीडी.क्लियर (); // ई 4 टोन खेलें (10, 329.63, 300); एलसीडी.प्रिंट ("329.63"); देरी (350); एलसीडी.क्लियर (); // b3 टोन खेलें (10, 246.94, 300); एलसीडी.प्रिंट ("246.94"); देरी (400); एलसीडी.क्लियर (); // डी ४ टोन खेलें (१०, २९३.६६, ३००); एलसीडी.प्रिंट ("293.66"); देरी (400); एलसीडी.क्लियर (); // c4 टोन खेलें (10, 261.63, 300); एलसीडी.प्रिंट ("261.63"); देरी (400); एलसीडी.क्लियर (); // a3 टोन खेलें (10, 220, 900); एलसीडी.प्रिंट ("220.0"); देरी (1000); एलसीडी.क्लियर (); // डी 3 टोन खेलें (10, 146.83, 300); एलसीडी.प्रिंट ("146.83"); देरी (350); एलसीडी.क्लियर (); // f3 टोन खेलें (10, 174.61, 300); एलसीडी.प्रिंट ("174.61"); देरी (400); एलसीडी.क्लियर (); // ए 3 टोन खेलें (10, 220, 300); एलसीडी.प्रिंट ("220.0"); देरी (400); // प्ले b3 LCD.clear (); टोन(१०, २४६.९४, ९००); एलसीडी.प्रिंट ("246.94"); देरी (1000); एलसीडी.क्लियर (); // ई ३ टोन खेलें (१०, १६४.८१, ३००); एलसीडी.प्रिंट ("164.81"); देरी (400); एलसीडी.क्लियर (); // जी # 3 टोन खेलें (10, 207.65, 300); एलसीडी.प्रिंट ("207.65"); देरी (400); एलसीडी.क्लियर (); // b3 टोन खेलें (10, 246.94, 300); एलसीडी.प्रिंट ("246.94"); देरी (400); एलसीडी.क्लियर (); // c4 टोन खेलें (10, 261.63, 900); एलसीडी.प्रिंट ("261.63"); देरी (1000); देरी (300); एलसीडी.क्लियर (); // ई ३ टोन खेलें (१०, १६४.८१, ३००); एलसीडी.प्रिंट ("164.81"); देरी (400); एलसीडी.क्लियर (); // ई 4 टोन खेलें (10, 329.63, 300); एलसीडी.प्रिंट ("329.63"); देरी (400); एलसीडी.क्लियर (); // डी ४ # टोन खेलें (१०, ३११.१३, ३००); एलसीडी.प्रिंट ("311.13"); देरी (400); एलसीडी.क्लियर (); // ई 4 टोन खेलें (10, 329.63, 300); एलसीडी.प्रिंट ("329.63"); देरी (400); एलसीडी.क्लियर (); // डी ४ # टोन खेलें (१०, ३११.१३, ३००); एलसीडी.प्रिंट ("311.13"); देरी (400); एलसीडी.क्लियर (); // ई 4 टोन खेलें (10, 329.63, 300); एलसीडी.प्रिंट ("329.63"); देरी (400); एलसीडी.क्लियर (); // b3 टोन खेलें (10, 246.94, 300); एलसीडी.प्रिंट ("246.94"); देरी (400); एलसीडी.क्लियर (); // डी ४ टोन खेलें (१०, २९३.६६, ३००); एलसीडी.प्रिंट ("293.66"); देरी (400); एलसीडी.क्लियर (); // c4 टोन खेलें (10, 261.63, 300); एलसीडी.प्रिंट ("261.63"); देरी (400); एलसीडी.क्लियर (); // a3 टोन खेलें (10, 220, 900); एलसीडी.प्रिंट ("220.0"); देरी (1000); एलसीडी.क्लियर (); // डी 3 टोन खेलें (10, 146.83, 300); एलसीडी.प्रिंट ("146.83"); देरी (400); एलसीडी.क्लियर (); // f3 टोन खेलें (10, 174.61, 300); एलसीडी.प्रिंट ("174.61"); देरी (400); एलसीडी.क्लियर (); // a3 टोन खेलें (10, 220, 300); एलसीडी.प्रिंट ("220.0"); देरी (400); एलसीडी.क्लियर (); // b3 टोन खेलें (10, 246.94, 900); एलसीडी.प्रिंट ("246.94"); देरी (1000); एलसीडी.क्लियर (); // f3 टोन खेलें (10, 174.61, 300); एलसीडी.प्रिंट ("174.61"); देरी (400); एलसीडी.क्लियर (); // c4 टोन खेलें (10, 261.63, 300); एलसीडी.प्रिंट ("261.63"); देरी (400); एलसीडी.क्लियर (); // b3 टोन खेलें (10, 246.94, 300); एलसीडी.प्रिंट ("246.94"); देरी (400); एलसीडी.क्लियर (); // a3 टोन खेलें (10, 220, 900); एलसीडी.प्रिंट ("220.0"); देरी (1000); एलसीडी.क्लियर (); }

चरण 5: कोड अपलोड करना: इसका क्या मतलब है?

आइए कुछ फंक्शन्स को अंग्रेजी में परिभाषित करें, ताकि आप कोड को समझ सकें।

टोन (एक्स, वाई, जेड); = z मिलीसेकंड के लिए पिन x पर बजर पर y हर्ट्ज़ की पिच के साथ एक टोन बजाएं।

एलसीडी.प्रिंट ("एक्सवाईजेड"); = XYZ से LCD स्क्रीन पर एक संदेश प्रिंट करें। (उदाहरण के लिए हर्ट्ज पिच प्रदर्शित करें)

देरी (एक्स); = x मिलीसेकंड के लिए रुकें।

कॉन्स इंट एक्स = वाई = वाई को पिन करने के लिए एक स्थिर चर एक्स सेट करें, और डिवाइस को कार्य सौंपने के लिए एक्स या वाई का उपयोग करें।

एलसीडी.क्लियर (); = एलसीडी स्क्रीन को साफ करें और नए डिस्प्ले के लिए रीसेट करें

पिनमोड (एक्स, आउटपुट); = आउटपुट मोड के लिए पिन X सेट करें

एक बार जब आप इन सभी कार्यों को समझ लेते हैं, तो आप आसानी से वेरिएबल्स को उस डेटा से बदल सकते हैं जिसे आप किसी गीत का अनुवाद करते समय एकत्र करते हैं, और फिर आप अपने स्वयं के गीत को कोड कर सकते हैं!

चरण 6: समाप्त !

ख़त्म होना!!!
ख़त्म होना!!!
ख़त्म होना!!!
ख़त्म होना!!!

आपके पास या तो एक Arduino है जो Fur Elise बजाता है और हर्ट्ज में नोट मान प्रदर्शित करता है, या आपने एक Arduino बनाया है जो आपके द्वारा चुने गए गीत की धुन बजाता है, और वह टेक्स्ट प्रदर्शित करता है जिसे आप दिखाना चाहते हैं। इस ट्यूटोरियल में आने के लिए धन्यवाद, और मैं आपको Arduino पर इस प्रोजेक्ट की आशा करता हूं।

सिफारिश की: