সুচিপত্র:

Arduino দিয়ে একটি গান ডিজিটাইজ করুন: 6 টি ধাপ
Arduino দিয়ে একটি গান ডিজিটাইজ করুন: 6 টি ধাপ

ভিডিও: Arduino দিয়ে একটি গান ডিজিটাইজ করুন: 6 টি ধাপ

ভিডিও: Arduino দিয়ে একটি গান ডিজিটাইজ করুন: 6 টি ধাপ
ভিডিও: আপনার নাম LED ডিসপ্লেতে! সহজেই পারবেন // Scrolling Text using Arduino & MAX7219 | JLCPCB 2024, নভেম্বর
Anonim
Arduino এর সাথে একটি গান ডিজিটাইজ করুন
Arduino এর সাথে একটি গান ডিজিটাইজ করুন

আমি এমন একটি প্রকল্প তৈরি করতে চেয়েছিলাম যা আমার প্রিয় দুটি বিষয়কে একত্রিত করে: বিজ্ঞান এবং সঙ্গীত। আমি এই দুটি ডোমেইনকে একত্রিত করার সমস্ত উপায় সম্পর্কে চিন্তা করেছি, এবং, আমি ভেবেছিলাম যে হার্টজে নোটের পিচ প্রদর্শন করার সময় একটি আরডুইনো নাটক ফার এলিস তৈরি করা আকর্ষণীয় হবে। এখন, আসুন নির্মাণ শুরু করি!

আপনার প্রয়োজন হবে একটি Arduino Uno বা Mega, প্রচুর জাম্পার কেবল, একটি Piezo buzzer, একটি breadboard, একটি 16*2 LCD স্ক্রিন যেখানে সব wiper পিন আছে এবং একটি 10k Potentiometer (আপনি এগুলোকে পটমিটার বলে উল্লেখ করতেও শুনতে পারেন))। আমরা নির্মাণ শুরু করার আগে এই সমস্ত সরবরাহ একসাথে করা ভাল।

ধাপ 1: মিউজিকাল স্কোরকে ডিজিটাল নোটগুলিতে রূপান্তর করুন: বিলম্বিত মান

মিউজিকাল স্কোরকে ডিজিটাল নোটগুলিতে রূপান্তর করুন: বিলম্বিত মান
মিউজিকাল স্কোরকে ডিজিটাল নোটগুলিতে রূপান্তর করুন: বিলম্বিত মান

স্কোর থেকে একটি নোটকে ডিজিটালভাবে তার ডিজিটাল সমতুল্য করার জন্য দুটি ধাপ রয়েছে। প্রথমে, আমাদের নোটটি মিলিসেকেন্ডে স্থায়ী হওয়ার সময় লিখতে হবে। আমি এই কাজের জন্য অনলাইনে পাওয়া একটি চার্ট নিযুক্ত করেছি। একটি নোট অর্ধেক নোট, চতুর্থাংশ নোট, অষ্টম নোট ইত্যাদি কিনা তার উপর ভিত্তি করে, আমি নোটের দৈর্ঘ্য মিলিসেকেন্ডে প্রতিলিপি করেছি। আপনি বিলম্ব () হিসাবে আমার কোডে এই সংখ্যাগুলি দেখতে পারেন; ফাংশন এবং বন্ধনীর মধ্যে সংখ্যা মিলিসেকেন্ডে বিলম্বের মান হবে যা আমরা এই ধাপে নির্ধারণ করেছি।

ধাপ 2: মিউজিকাল স্কোরকে ডিজিটাল নোটগুলিতে রূপান্তর করুন: হার্টজ মান

মিউজিকাল স্কোরকে ডিজিটাল নোটগুলিতে রূপান্তর করুন: হার্টজ ভ্যালু
মিউজিকাল স্কোরকে ডিজিটাল নোটগুলিতে রূপান্তর করুন: হার্টজ ভ্যালু

এই ধাপটি শুরু করার আগে, আমাকে কিছু প্রযুক্তিগত পদ সংজ্ঞায়িত করা যাক। একটি নোটের "মান" "পিচ", "মান" এবং "নোট" শব্দের সাথে বিনিময়যোগ্যভাবে ব্যবহার করা যেতে পারে। এখন, আপনাকে স্কোর থেকে গানের প্রতিটি নোট পড়তে হবে। আপনাকে হার্টজ টেবিলে একটি সঙ্গীত ব্যবহার করে হার্টজে প্রতিটি নোট অনুবাদ করতে হবে, যা আপনি সহজেই অনলাইনে খুঁজে পেতে পারেন। একটা কথা মনে রাখতে হবে যে, মধ্য C কে টেবিলে C4 হিসেবে তালিকাভুক্ত করা হয়েছে এবং উচ্চতর একটি অষ্টভ C5, ইত্যাদি। একবার এই নোটগুলি হার্টজে প্রতিলিপি হয়ে গেলে, আপনি মানগুলি ফাংশন টোনে (x, y, z) স্থাপন করবেন; যেখানে X হল পিন নম্বর বা const int, ভেরিয়েবল সংজ্ঞায়িত করার একটি উপায় যা আমি পরে ব্যাখ্যা করব। Y হল হার্টজ ভ্যালু যা আপনি সবেমাত্র ট্রান্সক্রিপ্ট করেছেন, এবং Z হবে নোটের সময়কাল মিলিসেকেন্ডের কাছাকাছি শততম পর্যন্ত। বিলম্ব (); মানগুলি নোটের সময়কাল হবে। এখন, আসুন সার্কিট ডিজাইন করি যা সঙ্গীত চালাতে পারে।

ধাপ 3: সার্কিট ডিজাইন

সার্কিট ডিজাইন
সার্কিট ডিজাইন

এখন যেহেতু আমরা সমস্ত নোটগুলিকে ডিজিটাল মানগুলিতে অনুবাদ করেছি যা একটি কম্পিউটার বুঝতে পারে, এখন সার্কিট তৈরির সময়। একটি ব্রেডবোর্ড নিয়ে শুরু করুন এবং ১ ম সারিতে প্রথম পিন (GND) দিয়ে এলসিডি স্ক্রিন লাগিয়ে শুরু করুন। আপনার পছন্দের যেকোন জায়গায় বুজার রাখুন এবং তার পাশে একটি পোটেন্টিওমিটার রাখুন। লক্ষ্য হল সবকিছুকে সারিবদ্ধ করা, তারের বিশৃঙ্খলা কমানো। আরডুইনোকে রুটিবোর্ডের পাশে রাখুন, এবং 5v পিনকে রুটিবোর্ডের ইতিবাচক রেল এবং গ্রাউন্ড পিনকে নেগেটিভ রেলের সাথে সংযুক্ত করুন। এখন, আমরা Arduino এবং উপাদানগুলির মধ্যে জাম্পারগুলিকে সংযুক্ত করতে প্রস্তুত।

এখন, এলসিডি -র পিনগুলি এবং সেগুলি কীভাবে তারের সম্পর্কে বলা যাক।

GND মানে স্থল, এটি সরাসরি কারেন্টে নেগেটিভ তার। ব্রেডবোর্ডের নেতিবাচক রেল থেকে জিএনডি ওয়্যার।

ভিসিসি হল সাধারণ কালেক্টরে ভোল্টেজ, এবং এখানেই আপনি আপনার 5-ভোল্টের পাওয়ার সোর্স (পজিটিভ পাওয়ার রেল) সংযোগ করেন।

VO মানে কনট্রাস্ট, এটিকে পটেন্টিওমিটারের মাঝের পিনে যুক্ত করুন। পজেন্টিওমিটারের বাম পিনকে পজিটিভ পাওয়ার রেলের সাথে এবং ডান পিনকে গ্রাউন্ড পাওয়ার রেলের সাথে সংযুক্ত করুন।

আরএস মানে রেজিস্টার সিলেক্ট, এবং এটি আরডুইনো ব্যবহার করে ডিসপ্লেটি কোথায় ডেটা সংরক্ষণ করতে হবে তা বলতে। Arduino এ 12 পিন করতে এই পিনটি সংযুক্ত করুন।

আরডব্লিউ মানে রিড/রাইট পিন, যা আরডুইনো ব্যবহার করে যা যা দেখানোর জন্য স্ক্রিনটি দেখানো হয়েছে তা দেখায়। এই পিনটিকে ব্রেডবোর্ডে নেগেটিভ রেলের সাথে সংযুক্ত করুন।

E মানে Enable, যা LCD কে বলে যে কোন পিক্সেলগুলোকে সক্রিয় (চালু) বা নিষ্ক্রিয় (বন্ধ) করতে হবে। এই পিনটিকে Arduino পিন 11 এর সাথে সংযুক্ত করুন।

D4, D5, D6, এবং D7 হল ডিসপ্লে পিন যা প্রদর্শিত অক্ষর এবং অক্ষর নিয়ন্ত্রণ করে। তাদের যথাক্রমে 5, 4, 3, এবং 2, Arduino পিনের সাথে সংযুক্ত করুন।

পিন এ, কখনও কখনও LED লেবেলযুক্ত, ব্যাকলাইটের জন্য LED অ্যানোড। এটিকে তারের সাহায্যে বা 220-ওহম প্রতিরোধক দিয়ে ইতিবাচক পাওয়ার রেলের সাথে সংযুক্ত করুন। রোধটি দীর্ঘ ব্যবহারের জন্য ভাল কারণ এটি এলসিডি ছাড়িয়ে যায়, কিন্তু যদি ডিভাইসটি দিনরাত ব্যবহার করা না হয়, তাহলে আপনাকে প্রতিরোধকের প্রয়োজন হবে না।

পিন কে, কখনও কখনও (বিভ্রান্তিকরভাবে) LED লেবেলযুক্ত, এলইডি গ্রাউন্ড পিন। এটিকে গ্রাউন্ড পাওয়ার রেলের সাথে সংযুক্ত করুন।

ধাপ 4: কোড আপলোড: কিভাবে

আপনার Arduino আপনার কম্পিউটারের USB- এ প্লাগ করুন। Arduino IDE প্রোগ্রামার ব্যবহার করে নিচের কোডটি আপলোড করুন।

#অন্তর্ভুক্ত

const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2; LiquidCrystal lcd (rs, en, d4, d5, d6, d7);

অকার্যকর সেটআপ() {

// LCD এর কলাম এবং সারির সংখ্যা সেট আপ করুন: lcd.begin (16, 2); // এলসিডিতে একটি বার্তা প্রিন্ট করুন। lcd.print ("হার্টজ পিচ:!"); বিলম্ব (1000); void loop () {// play e4 delay (600); // 0.6 সেকেন্ড টোন (10, 329.63, 300) জন্য বিরতি দিন 329.63 "); // LCD" 329.63 "এ একটি বার্তা প্রদর্শন করুন

বিলম্ব (350); //.35 সেকেন্ডের জন্য বিলম্ব

lcd.clear (); // LCD ক্লিয়ার করুন এবং পরবর্তী মেসেজের জন্য রিসেট করুন // d4# টোন বাজান lcd.print ("311.13"); বিলম্ব (350); lcd.clear (); // ই 4 টোন বাজান (10, 329.63, 300); lcd.print ("329.63"); বিলম্ব (350); lcd.clear (); // প্লে d4# টোন (10, 311.13, 300); lcd.print ("311.13"); বিলম্ব (350); lcd.clear (); // ই 4 টোন বাজান (10, 329.63, 300); lcd.print ("329.63"); বিলম্ব (350); lcd.clear (); // বি 3 টোন বাজান (10, 246.94, 300); lcd.print ("246.94"); বিলম্ব (400); lcd.clear (); // প্লে d4 টোন (10, 293.66, 300); lcd.print ("293.66"); বিলম্ব (400); lcd.clear (); // সি 4 টোন বাজান (10, 261.63, 300); lcd.print ("261.63"); বিলম্ব (400); lcd.clear (); // এ 3 টোন বাজান (10, 220, 900); lcd.print ("220.0"); বিলম্ব (1000); lcd.clear (); // line60 // helpave // avrdude.failure.eeprom // play d3 স্বন (10, 146.83, 300); lcd.print ("146.63"); বিলম্ব (350); lcd.clear (); // এফ 3 টোন বাজান (10, 174.61, 300); lcd.print ("174.61"); বিলম্ব (400); lcd.clear (); // এ 3 টোন বাজান (10, 220, 300); lcd.print ("220"); বিলম্ব (400); lcd.clear (); // প্লে b3 টোন (10, 246.94, 900); lcd.print ("246.94"); বিলম্ব (1000); lcd.clear ();

// প্লে ই 3

স্বর (10, 164.81, 300); lcd.print ("164.81"); বিলম্ব (400); lcd.clear (); // প্লে g3# টোন (10, 207.65, 300); lcd.print ("207.65"); বিলম্ব (400); lcd.clear (); // বি 3 টোন বাজান (10, 246.94, 300); lcd.print ("246.94"); বিলম্ব (400); lcd.clear (); // সি 4 টোন বাজান (10, 261.63, 900); lcd.print ("261.63"); বিলম্ব (1000); lcd.clear (); // প্লে ই টোন (10, 164.81, 300); lcd.print ("164.81"); বিলম্ব (400); lcd.clear (); // ই 4 টোন বাজান (10, 329.63, 300); lcd.print ("329.63"); বিলম্ব (400); lcd.clear (); // প্লে d4# টোন (10, 311.13, 300); lcd.print ("311.13"); বিলম্ব (400); lcd.clear (); // ই 4 টোন বাজান (10, 329.63, 300); lcd.print ("329.63"); বিলম্ব (400); lcd.clear (); // প্লে d4# টোন (10, 311.13, 300); lcd.print ("311.13"); বিলম্ব (400); lcd.clear (); // ই 4 টোন বাজান (10, 329.63, 300); lcd.print ("329.63"); বিলম্ব (400); lcd.clear (); // বি 3 টোন বাজান (10, 246.94, 300); lcd.print ("246.94"); বিলম্ব (400); lcd.clear (); // প্লে d4 টোন (10, 293.66, 300); lcd.print ("293.66"); বিলম্ব (400); lcd.clear (); // সি 4 টোন বাজান (10, 261.63, 300); lcd.print ("261.63"); বিলম্ব (400); lcd.clear (); // এ 3 টোন বাজান (10, 220, 900); lcd.print ("220.0"); বিলম্ব (1000); lcd.clear (); // প্লে d3 টোন (10, 146.83, 300); lcd.print ("146.83"); বিলম্ব (400); lcd.clear (); // এফ 3 টোন বাজান (10, 174.61, 300); // eeprom 20-6 yesno, flash 65-0 noyes lcd.print ("174.61"); বিলম্ব (400); lcd.clear (); // এ 3 টোন বাজান (10, 220, 300); lcd.print ("220.0"); বিলম্ব (400); lcd.clear (); // প্লে b3 টোন (10, 246.94, 900); lcd.print ("246.94"); বিলম্ব (1000); lcd.clear (); // এফ 3 টোন বাজান (10, 174.61, 300); lcd.print ("174.61"); বিলম্ব (400); lcd.clear (); // সি 4 টোন বাজান (10, 261.63, 300); lcd.print ("261.63"); বিলম্ব (400); lcd.clear (); // বি 3 টোন বাজান (10, 246.94, 300); lcd.print ("246.94"); বিলম্ব (400); lcd.clear (); // এ 3 টোন বাজান (10, 220, 900); lcd.print ("220.0"); বিলম্ব (1000); lcd.clear (); // বি 3 টোন বাজান (10, 246.94, 300); lcd.print ("246.94"); বিলম্ব (400); lcd.clear (); // সি 4 টোন বাজান (10, 261.63, 300); lcd.print ("261.63"); বিলম্ব (400); lcd.clear (); // প্লে d4 টোন (10, 293.66, 300); lcd.print ("293.66"); বিলম্ব (400); lcd.clear (); // ই 4 টোন বাজান (10, 329.63, 900); lcd.print ("329.63"); বিলম্ব (1000); lcd.clear (); // জি 3 টোন বাজান (10, 196, 300); lcd.print ("196.0"); বিলম্ব (400); lcd.clear (); // এফ 4 টোন বাজান (10, 349.23, 300); lcd.print ("349.23"); বিলম্ব (400); lcd.clear (); // ই 4 টোন বাজান (10, 329.23, 300); lcd.print ("329.23"); বিলম্ব (400); lcd.clear (); // প্লে d4 টোন (10, 293.63, 900); lcd.print ("293.63"); বিলম্ব (1000); lcd.clear (); // ই 3 টোন বাজান (10, 164.81, 300); lcd.print ("164.81"); বিলম্ব (400); lcd.clear (); // ই 4 টোন বাজান (10, 329.63, 300); lcd.print ("329.63"); বিলম্ব (400); lcd.clear (); // প্লে d4 টোন (10, 293.63, 300); lcd.print ("293.63"); বিলম্ব (400); lcd.clear (); // সি 4 টোন বাজান (10, 261.63, 900); lcd.print ("261.63"); বিলম্ব (1000); lcd.clear (); // প্লে d3 টোন (10, 146.83, 300); lcd.print ("146.83"); বিলম্ব (400); lcd.clear (); // প্লে d4 টোন (10, 293.63, 300); lcd.print ("293.63"); বিলম্ব (400); lcd.clear (); // প্লে করুন সি 4 টোন (10, 261.63, 300); lcd.print ("261.63"); বিলম্ব (400); lcd.clear (); // প্লে b3 টোন (10, 246.94, 900); lcd.print ("246.94"); বিলম্ব (1000); lcd.clear (); // ই 4 টোন বাজান (10, 329.63, 300); lcd.print ("329.63"); বিলম্ব (400); lcd.clear (); // প্লে d4# টোন (10, 311.13, 300); lcd.print ("311.13"); বিলম্ব (350); lcd.clear (); // ই 4 টোন বাজান (10, 329.63, 300); lcd.print ("329.63"); বিলম্ব (350); lcd.clear (); // প্লে d4# টোন (10, 311.13, 300); lcd.print ("311.13"); বিলম্ব (350); lcd.clear (); // ই 4 টোন বাজান (10, 329.63, 300); lcd.print ("329.63"); বিলম্ব (350); lcd.clear (); // বি 3 টোন বাজান (10, 246.94, 300); lcd.print ("246.94"); বিলম্ব (400); lcd.clear (); // প্লে d4 টোন (10, 293.66, 300); lcd.print ("293.66"); বিলম্ব (400); lcd.clear (); // সি 4 টোন বাজান (10, 261.63, 300); lcd.print ("261.63"); বিলম্ব (400); lcd.clear (); // এ 3 টোন বাজান (10, 220, 900); lcd.print ("220.0"); বিলম্ব (1000); lcd.clear (); // প্লে d3 টোন (10, 146.83, 300); lcd.print ("146.83"); বিলম্ব (350); lcd.clear (); // এফ 3 টোন বাজান (10, 174.61, 300); lcd.print ("174.61"); বিলম্ব (400); lcd.clear (); // এ 3 টোন বাজান (10, 220, 300); lcd.print ("220.0"); বিলম্ব (400); // প্লে b3 lcd.clear (); স্বর (10, 246.94, 900); lcd.print ("246.94"); বিলম্ব (1000); lcd.clear (); // ই 3 টোন বাজান (10, 164.81, 300); lcd.print ("164.81"); বিলম্ব (400); lcd.clear (); // জি#3 টোন বাজান (10, 207.65, 300); lcd.print ("207.65"); বিলম্ব (400); lcd.clear (); // বি 3 টোন বাজান (10, 246.94, 300); lcd.print ("246.94"); বিলম্ব (400); lcd.clear (); // সি 4 টোন বাজান (10, 261.63, 900); lcd.print ("261.63"); বিলম্ব (1000); বিলম্ব (300); lcd.clear (); // ই 3 টোন বাজান (10, 164.81, 300); lcd.print ("164.81"); বিলম্ব (400); lcd.clear (); // ই 4 টোন বাজান (10, 329.63, 300); lcd.print ("329.63"); বিলম্ব (400); lcd.clear (); // প্লে d4# টোন (10, 311.13, 300); lcd.print ("311.13"); বিলম্ব (400); lcd.clear (); // ই 4 টোন বাজান (10, 329.63, 300); lcd.print ("329.63"); বিলম্ব (400); lcd.clear (); // প্লে d4# টোন (10, 311.13, 300); lcd.print ("311.13"); বিলম্ব (400); lcd.clear (); // ই 4 টোন বাজান (10, 329.63, 300); lcd.print ("329.63"); বিলম্ব (400); lcd.clear (); // বি 3 টোন বাজান (10, 246.94, 300); lcd.print ("246.94"); বিলম্ব (400); lcd.clear (); // প্লে d4 টোন (10, 293.66, 300); lcd.print ("293.66"); বিলম্ব (400); lcd.clear (); // প্লে করুন সি 4 টোন (10, 261.63, 300); lcd.print ("261.63"); বিলম্ব (400); lcd.clear (); // এ 3 টোন বাজান (10, 220, 900); lcd.print ("220.0"); বিলম্ব (1000); lcd.clear (); // প্লে d3 টোন (10, 146.83, 300); lcd.print ("146.83"); বিলম্ব (400); lcd.clear (); // এফ 3 টোন বাজান (10, 174.61, 300); lcd.print ("174.61"); বিলম্ব (400); lcd.clear (); // এ 3 টোন বাজান (10, 220, 300); lcd.print ("220.0"); বিলম্ব (400); lcd.clear (); // বি 3 টোন বাজান (10, 246.94, 900); lcd.print ("246.94"); বিলম্ব (1000); lcd.clear (); // এফ 3 টোন বাজান (10, 174.61, 300); lcd.print ("174.61"); বিলম্ব (400); lcd.clear (); // প্লে করুন সি 4 টোন (10, 261.63, 300); lcd.print ("261.63"); বিলম্ব (400); lcd.clear (); // বি 3 টোন বাজান (10, 246.94, 300); lcd.print ("246.94"); বিলম্ব (400); lcd.clear (); // এ 3 টোন বাজান (10, 220, 900); lcd.print ("220.0"); বিলম্ব (1000); lcd.clear (); }

ধাপ 5: কোড আপলোড: এর সব কি মানে?

আসুন কিছু ফাংশন ইংরেজিতে সংজ্ঞায়িত করি, যাতে আপনি কোডটি বুঝতে পারেন।

স্বর (x, y, z); = y হার্টজ এর একটি পিচ দিয়ে একটি সুর বাজান, z x মিলিসেকেন্ডের জন্য পিন x এ একটি বজার।

lcd.print ("XYZ"); = XYZ অক্ষরের সাথে একটি বার্তা LCD স্ক্রিনে প্রিন্ট করুন। (যেমন হার্টজ পিচ প্রদর্শন করুন)

বিলম্ব (x); = x মিলিসেকেন্ডের জন্য বিরতি দিন।

const int X = Y = Y কে ধ্রুবক পরিবর্তনশীল X সেট করুন, এবং ডিভাইসে কাজ বরাদ্দ করতে X বা Y ব্যবহার করুন।

lcd.clear (); = এলসিডি স্ক্রিনটি পরিষ্কার করুন এবং একটি নতুন ডিসপ্লের জন্য পুনরায় সেট করুন

পিনমোড (এক্স, আউটপুট); = আউটপুট মোডের জন্য পিন এক্স সেট করুন

একবার আপনি এই সমস্ত ফাংশন বুঝতে পারলে, আপনি সহজেই ভেরিয়েবলগুলিকে একটি ডেটা অনুবাদ করার সময় সংগ্রহ করা ডেটা দিয়ে প্রতিস্থাপন করতে পারেন, এবং তারপর আপনি আপনার নিজের গান কোড করতে পারেন!

ধাপ 6: সমাপ্ত !

সমাপ্ত !!!
সমাপ্ত !!!
সমাপ্ত !!!
সমাপ্ত !!!

আপনার হয় একটি Arduino আছে যা ফার এলিস বাজায় এবং হার্টজে নোট মান প্রদর্শন করে, অথবা আপনি একটি Arduino তৈরি করেছেন যা আপনার নির্বাচিত গানের সুর বাজায় এবং আপনি যে পাঠ্যটি দেখাতে চেয়েছিলেন তা প্রদর্শন করে। এই টিউটোরিয়ালটি দেখার জন্য আপনাকে ধন্যবাদ, এবং আমি Arduino এ এই প্রকল্পটি আশা করি।

প্রস্তাবিত: