17. বাজার দিয়ে মিউজিক বাজাই (making music with buzzer)
বাজার দিয়ে মিউজিক বাজাই
(making music with buzzer)
আরডুইনোতে tone() নামে একটা মজার জিনিস আছে। তুমি এর মধ্যে এভাবে ফ্রিকোয়েন্সি লিখে দিলে সেই ফ্রিকোয়েন্সিতে বাজবে ।
যেমনঃ
tone(12,256);
তুমি চাইলে 12 নাম্বার পিনে লাগানো বাজার 256 হার্জ ফ্রিকোয়েন্সিতে সাউন্ড দেবে। আবার ,তুমি চাইলে সময় (duration) ঠিক করে দিতে পারো,
tone(12,256,1000);
এর মানে এক সেকেন্ড বা এক হাজার মাইক্রোসেকেন্ড ধরে বাজবে।
আরেকটা করে দেখো,
tone(12,128,500);
এই টোন ফাংশানটা এরকমঃ
tone(pin number , frequency , time delay);
তাহলে কি আরডুইনো দিয়ে গান বাজাতে পারি ??
অবশ্যই! শব্দ হচ্ছে এই ফ্রিকোয়েন্সি চেঞ্জ। তাই আমরা একটার পর একটা ফ্রিকোয়েন্সি চেঞ্জ করে করে বাজার (Buzzer) দিয়েই গান বাজাতে পারি।
এবার তুমি noTone(); ফাংশানটা নিয়ে একটু চিন্তা করো, এর কাজ আসলে কী?
চলো আমরা প্রজেক্টটা করে ফেলি।
আগের টিউটোরিয়ালের মত করে সার্কিট সাজিয়ে ফেলো। তবুও আমি ডিজাইনটা দিয়ে দিচ্ছি।
এখন নিচের মত করে কোড লিখে আপলোড করে দাও আরডুইনোতে।
const int buzzer = 10; //Define pin 10, can use other PWM pins (5,6 or 9)
//Note pins 3 and 11 can't be used when using the tone function in Arduino Uno
const int songspeed = 1.5; //Change to 2 for a slower version of the song, the bigger the number the slower the song
//*****************************************
#define NOTE_C4 262 //Defining note frequency
#define NOTE_D4 294
#define NOTE_E4 330
#define NOTE_F4 349
#define NOTE_G4 392
#define NOTE_A4 440
#define NOTE_B4 494
#define NOTE_C5 523
#define NOTE_D5 587
#define NOTE_E5 659
#define NOTE_F5 698
#define NOTE_G5 784
#define NOTE_A5 880
#define NOTE_B5 988
//*****************************************
int notes[] = { //Note of the song, 0 is a rest/pulse
NOTE_E4, NOTE_G4, NOTE_A4, NOTE_A4, 0,
NOTE_A4, NOTE_B4, NOTE_C5, NOTE_C5, 0,
NOTE_C5, NOTE_D5, NOTE_B4, NOTE_B4, 0,
NOTE_A4, NOTE_G4, NOTE_A4, 0,
NOTE_E4, NOTE_G4, NOTE_A4, NOTE_A4, 0,
NOTE_A4, NOTE_B4, NOTE_C5, NOTE_C5, 0,
NOTE_C5, NOTE_D5, NOTE_B4, NOTE_B4, 0,
NOTE_A4, NOTE_G4, NOTE_A4, 0,
NOTE_E4, NOTE_G4, NOTE_A4, NOTE_A4, 0,
NOTE_A4, NOTE_C5, NOTE_D5, NOTE_D5, 0,
NOTE_D5, NOTE_E5, NOTE_F5, NOTE_F5, 0,
NOTE_E5, NOTE_D5, NOTE_E5, NOTE_A4, 0,
NOTE_A4, NOTE_B4, NOTE_C5, NOTE_C5, 0,
NOTE_D5, NOTE_E5, NOTE_A4, 0,
NOTE_A4, NOTE_C5, NOTE_B4, NOTE_B4, 0,
NOTE_C5, NOTE_A4, NOTE_B4, 0,
NOTE_A4, NOTE_A4,
//Repeat of first part
NOTE_A4, NOTE_B4, NOTE_C5, NOTE_C5, 0,
NOTE_C5, NOTE_D5, NOTE_B4, NOTE_B4, 0,
NOTE_A4, NOTE_G4, NOTE_A4, 0,
NOTE_E4, NOTE_G4, NOTE_A4, NOTE_A4, 0,
NOTE_A4, NOTE_B4, NOTE_C5, NOTE_C5, 0,
NOTE_C5, NOTE_D5, NOTE_B4, NOTE_B4, 0,
NOTE_A4, NOTE_G4, NOTE_A4, 0,
NOTE_E4, NOTE_G4, NOTE_A4, NOTE_A4, 0,
NOTE_A4, NOTE_C5, NOTE_D5, NOTE_D5, 0,
NOTE_D5, NOTE_E5, NOTE_F5, NOTE_F5, 0,
NOTE_E5, NOTE_D5, NOTE_E5, NOTE_A4, 0,
NOTE_A4, NOTE_B4, NOTE_C5, NOTE_C5, 0,
NOTE_D5, NOTE_E5, NOTE_A4, 0,
NOTE_A4, NOTE_C5, NOTE_B4, NOTE_B4, 0,
NOTE_C5, NOTE_A4, NOTE_B4, 0,
//End of Repeat
NOTE_E5, 0, 0, NOTE_F5, 0, 0,
NOTE_E5, NOTE_E5, 0, NOTE_G5, 0, NOTE_E5, NOTE_D5, 0, 0,
NOTE_D5, 0, 0, NOTE_C5, 0, 0,
NOTE_B4, NOTE_C5, 0, NOTE_B4, 0, NOTE_A4,
NOTE_E5, 0, 0, NOTE_F5, 0, 0,
NOTE_E5, NOTE_E5, 0, NOTE_G5, 0, NOTE_E5, NOTE_D5, 0, 0,
NOTE_D5, 0, 0, NOTE_C5, 0, 0,
NOTE_B4, NOTE_C5, 0, NOTE_B4, 0, NOTE_A4
};
//*****************************************
int duration[] = { //duration of each note (in ms) Quarter Note is set to 250 ms
125, 125, 250, 125, 125,
125, 125, 250, 125, 125,
125, 125, 250, 125, 125,
125, 125, 375, 125,
125, 125, 250, 125, 125,
125, 125, 250, 125, 125,
125, 125, 250, 125, 125,
125, 125, 375, 125,
125, 125, 250, 125, 125,
125, 125, 250, 125, 125,
125, 125, 250, 125, 125,
125, 125, 125, 250, 125,
125, 125, 250, 125, 125,
250, 125, 250, 125,
125, 125, 250, 125, 125,
125, 125, 375, 375,
250, 125,
//Rpeat of First Part
125, 125, 250, 125, 125,
125, 125, 250, 125, 125,
125, 125, 375, 125,
125, 125, 250, 125, 125,
125, 125, 250, 125, 125,
125, 125, 250, 125, 125,
125, 125, 375, 125,
125, 125, 250, 125, 125,
125, 125, 250, 125, 125,
125, 125, 250, 125, 125,
125, 125, 125, 250, 125,
125, 125, 250, 125, 125,
250, 125, 250, 125,
125, 125, 250, 125, 125,
125, 125, 375, 375,
//End of Repeat
250, 125, 375, 250, 125, 375,
125, 125, 125, 125, 125, 125, 125, 125, 375,
250, 125, 375, 250, 125, 375,
125, 125, 125, 125, 125, 500,
250, 125, 375, 250, 125, 375,
125, 125, 125, 125, 125, 125, 125, 125, 375,
250, 125, 375, 250, 125, 375,
125, 125, 125, 125, 125, 500
};
void setup() {
for (int i=0;i<203;i++){ //203 is the total number of music notes in the song
int wait = duration[i] * songspeed;
tone(buzzer,notes[i],wait); //tone(pin,frequency,duration)
delay(wait);} //delay is used so it doesn't go to the next loop before tone is finished playing
//You can click reset on Arduino to replay the song
}
void loop() {
}
তুমি যদি কোডটা লিখে রান করে থাকো, তুমি সেখানে একটা টিউন বাজতে শুনবে। তুমি কী ধরতে পেরেছো কিসের টিউন এইটা??
হ্যাঁ ঠিকই ধরেছ এটা আমাদের প্রিয় পাইরেটস অফ ক্যারিবিয়্যানের থিম সং।
এখন তুমি যদি একটু এইটা নিয়ে নাড়াচাড়া করতে থাকো তবে নতুন নতুন টিউন বানাতে পারবে।
<Previous Tutorial Next Tutorial>