সুচিপত্র:

আরডুইনো ডোরবেল: 4 টি ধাপ
আরডুইনো ডোরবেল: 4 টি ধাপ

ভিডিও: আরডুইনো ডোরবেল: 4 টি ধাপ

ভিডিও: আরডুইনো ডোরবেল: 4 টি ধাপ
ভিডিও: LED Dream Mushroom Lamp 2024, জুলাই
Anonim
আরডুইনো ডোরবেল
আরডুইনো ডোরবেল

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

সরবরাহ:

  • Arduino Uno (অধিকাংশ অন্যান্য ধরনের করবে)
  • প্রোগ্রামিং এর জন্য Arduino IDE সহ কম্পিউটার
  • আরডুইনো প্রোগ্রামিংয়ের জন্য ইউএসবি-এ থেকে ইউএসবি-বি কেবল
  • ব্রেডবোর্ড
  • 4x জাম্পার তার
  • পুশবাটন বা অন্যান্য সুইচ
  • 10 kOhm প্রতিরোধক
  • প্যাসিভ বুজার (যেমন পাইজোইলেক্ট্রিক স্পিকার)
  • স্থায়ী ইনস্টলেশনের জন্য:

    • আরডুইনোকে পাওয়ার জন্য 9V ডিসি পাওয়ার সাপ্লাই বা 9V ব্যাটারি
    • দরজার বাইরে তারের বোতামের জন্য 2x লম্বা তার

ধাপ 1: হার্ডওয়্যার সেটআপ

হার্ডওয়্যার সেটআপ
হার্ডওয়্যার সেটআপ
হার্ডওয়্যার সেটআপ
হার্ডওয়্যার সেটআপ
হার্ডওয়্যার সেটআপ
হার্ডওয়্যার সেটআপ

প্রথমে, আমরা হার্ডওয়্যার সেট আপ করব। আমরা প্যাসিভ বুজার (অর্থাৎ স্পিকার) দিয়ে শুরু করব। আমরা প্যাসিভ বুজারের ইতিবাচক প্রান্ত ("+" চিহ্ন দ্বারা চিহ্নিত) আরডুইনোতে ডিজিটাল পিন 8 এর সাথে সংযুক্ত করতে চাই। আমরা প্যাসাইজ বাজারের অপর প্রান্তকে মাটিতে সংযুক্ত করব।

পরবর্তী, আমরা ডোরবেল জন্য pushbutton ইনস্টল করব। আমরা সুইচের জন্য একটি 10 kOhm বহিরাগত পুলডাউন প্রতিরোধক ব্যবহার করব, তাই আরডুইনোতে ইনপুটে কোন ভাসমান ভোল্টেজ বা অস্থির অবস্থা নেই। পুলডাউন প্রতিরোধক ব্যবহার করে, Arduino ভোল্টেজটি 0V হিসাবে পড়ে যখন বোতামটি চাপানো হয় না এবং 5V যখন বোতামটি চাপানো হয়। পুলআপ বা পুলডাউন প্রতিরোধক সম্পর্কে আরও তথ্যের জন্য, আপনি এই নিবন্ধটি পড়তে পারেন:

আমরা পুশবাটনের একপাশ 5V এর সাথে সংযুক্ত করব। পুশবাটনের অন্য দিকটি 10 kOhm পুলডাউন প্রতিরোধকের মাধ্যমে মাটিতে সংযুক্ত হবে। মনে রাখবেন: pushbuttons অনুভূমিকভাবে অভ্যন্তরীণভাবে সংযুক্ত করা হয়। এগুলি কেবল উল্লম্বভাবে সংযুক্ত থাকে যখন চাপা হয়। এই নিবন্ধে আরও তথ্য দেওয়া হয়েছে:

পদক্ষেপ 2: সফ্টওয়্যার সেটআপ

সমস্ত কোড সংযুক্ত করা হয়েছে। নীচে কোডের স্ন্যাপশট সহ প্রতিটি ফাংশনের বিবরণ দেওয়া হল।

সেটআপ:

সেটআপ () ফাংশনে, আমরা আমাদের বোতাম এবং আমাদের স্পিকারের জন্য ডিজিটাল পিন কনফিগার করতে চাই। আমরা আমাদের বোতামের ইনপুট হিসাবে পিন 2 কনফিগার করতে চাই, এবং আমরা পিন 8 কে আমাদের স্পিকারের আউটপুট হিসাবে কনফিগার করতে চাই।

আমরা আমাদের এলোমেলো সংখ্যা জেনারেটরকে "বীজ" করতে চাই, যখন কেউ আমাদের ডোরবেল বাজায় তখন এলোমেলোভাবে একটি সুর নির্বাচন করে। আমাদের এলোমেলো সংখ্যা জেনারেটর বীজ করার অর্থ এটি একটি এলোমেলো ইনপুট খাওয়ানো। আমরা আমাদের এলোমেলো সংখ্যার জেনারেটরকে ভোল্টেজ মান দিয়ে এনালগ ইনপুট seed -এ বীজ দেব, যেহেতু এই ইনপুটের সাথে কিছুই সংযুক্ত নয়, এই পিনটিতে একটি "এলোমেলো", ওঠানামা ভোল্টেজ থাকবে যা আমাদের র্যান্ডম সংখ্যা জেনারেটরকে বিভিন্ন মান দিয়ে দেবে। এটি নিশ্চিত করে যে আমাদের ডোরবেলের জন্য আমাদের গান নির্বাচনের একটি ভিন্ন ক্রম থাকবে। Arduino এলোমেলো () ফাংশন সম্পর্কে আরও তথ্যের জন্য, এখানে যান:

#অন্তর্ভুক্ত করুন "pitches.h"

#অন্তর্ভুক্ত করুন "songs.h" #সংজ্ঞায়িত করুন BUTTON_PIN 2 #SPEAKER_PIN 8/ * সেটআপ ফাংশন নির্ধারণ করুন পিনমোড (SPEAKER_PIN, আউটপুট); // বীজ এলোমেলো () ফাংশন যাতে আমরা একটি ভিন্ন ক্রম পেতে পারি randomSeed (analogRead (0)); }

লুপ:

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

একবার আমরা নিশ্চিত হয়েছি যে বোতামটি চাপানো হয়েছিল, আমরা আমাদের র্যান্ডম নম্বর জেনারেটর ব্যবহার করে একটি সুইচ স্টেটমেন্ট ব্যবহার করে ৫ টি গানের একটি নির্বাচন করি। এই গানগুলির জন্য ডেটা "songs.h" এবং পিচের তথ্য "pitches.h" তে সংরক্ষণ করা হয়। একবার আমরা একটি গান চয়ন করলে, আমরা এই তথ্যটি ফাংশন play_song () এ প্রবেশ করি।

/ * প্রধান যখন লুপ ফাংশন */

অকার্যকর লুপ () {// বোতাম টিপে আছে কিনা তা পরীক্ষা করে দেখুন (digitalRead (BUTTON_PIN) == HIGH) {// বিলম্ব 50 ms নিশ্চিত করতে যে এটি এখনও চাপা আছে // ভুল ভ্রান্তি পড়ার বিলম্ব এড়ায় (50); if (digitalRead (BUTTON_PIN) == HIGH) {// এলোমেলোভাবে একটি গান int song_choice = random (5); // কোন গানটি সুইচ (song_choice) চালাতে হবে তা নির্বাচন করুন {case 0: play_song (haircutLength, haircut, haircutDurations, haircutTempo); বিরতি; কেস 1: play_song (marioLength, mario, marioDurations, marioTempo); বিরতি; কেস 2: play_song (miiLength, mii, miiDurations, miiTempo); বিরতি; কেস 3: play_song (hpLength, hp, hpDurations, hpTempo); বিরতি; কেস 4: play_song (takeonmeLength, takeonme, takeonmeDurations, takeonmeTempo); বিরতি; ডিফল্ট: play_song (miiLength, mii, miiDurations, miiTempo); বিরতি; }}}}

গান বাজাও:

play_song () 4 টি যুক্তি নেয়: গানের নোটের একটি পূর্ণসংখ্যা সংখ্যা, মেলোডিতে পিচগুলির একটি পূর্ণসংখ্যা অ্যারে, সময়কালের একটি পূর্ণসংখ্যা অ্যারে এবং সেই বিশেষ গানের জন্য একটি পূর্ণসংখ্যা টেম্পো। আপনি যে প্রতিটি গান বাজাতে চান তার জন্য আপনাকে অবশ্যই এগুলির প্রতিটি নির্দিষ্ট করতে হবে। আরডুইনো টোন ফাংশনগুলি কীভাবে ব্যবহার করবেন সে সম্পর্কে আরও তথ্যের জন্য, আপনি এই টিউটোরিয়ালটি দেখতে পারেন: https://www.arduino.cc/en/Tutorial/ToneMelody। আমি বিন্দুযুক্ত নোটগুলির জন্য এই টিউটোরিয়ালের উপরে কিছু কার্যকারিতা যুক্ত করেছি। যদি নোটের সময়কালের অ্যারেতে একটি মান নেতিবাচক হয়, তার মানে হল যে এটি একটি বিন্দুযুক্ত নোট (দৈর্ঘ্য 1.5 গুণ বেশি)।

/ * গান বাজায় */

অকার্যকর play_song (int num_notes, int melody , int noteDurations , int tempo) {// ধাপের মাধ্যমে এবং (int i = 0; i 0) {period = tempo / noteDurations ; } // যদি এটি একটি negativeণাত্মক সংখ্যা, মানে বিন্দুযুক্ত নোট // বিন্দুযুক্ত নোটের জন্য সময়কাল অর্ধেক বাড়িয়ে দেয় অন্যথায় (NoteDurations <0) {duration = tempo / abs (noteDurations ) * 1.5; } স্বর (SPEAKER_PIN, সুর , সময়কাল); // নোটগুলি আলাদা করতে, তাদের মধ্যে সর্বনিম্ন সময় নির্ধারণ করুন। // নোটের সময়কাল + 30% ভাল কাজ করছে বলে মনে হচ্ছে: int pauseBetweenNotes = সময় * 1.30; বিলম্ব (pauseBetweenNotes); // সুর বাজানো বন্ধ করুন: noTone (SPEAKER_PIN); }}

গানের নমুনা: h:

নিচে "songs.h" এর একটি গানের নমুনা দেওয়া হল। নোটগুলি "পিচস.এইচ" তে সংজ্ঞায়িত ম্যাক্রো। সংখ্যাগুলি হার্টজ (Hz) এর নোটগুলির ফ্রিকোয়েন্সিগুলির সাথে মিলে যায়। নোটের সময়কাল এইভাবে সংজ্ঞায়িত করা হয়েছে: 1 = পুরো নোট, 2 = অর্ধেক নোট, 4 = কোয়ার্টার নোট, 8 = অষ্টম নোট, -4 = বিন্দুযুক্ত কোয়ার্টার নোট, ইত্যাদি দৈর্ঘ্য হল গানের নোটের মোট সংখ্যা। টেম্পো গানের গতির জন্য একটি বিভাজক (একটি উচ্চ সংখ্যা মানে একটি ধীর গতি)। যতক্ষণ না আপনি আপনার পছন্দ মতো একটি টেম্পো না পান ততক্ষণ আপনাকে এই নম্বরটি নিয়ে খেলতে হবে।

/* হ্যারি পটার */

int hp = {NOTE_D4, NOTE_G4, NOTE_AS4, NOTE_A4, NOTE_G4, NOTE_D5, NOTE_C5, NOTE_A4, NOTE_G4, NOTE_AS4, NOTE_A4, NOTE_F4, NOTE_GS4, NOTE_D4}; int hpDurations = {4, -4, 8, 4, 2, 4, -2, -2, -4, 8, 4, 2, 4, 1}; int hpLength = 14; int hpTempo = 1050;

ধাপ 3: Tweaks

আরো গান সংযুক্ত করুন! "Songs.h" এ দেখানো বিন্যাসটি অনুসরণ করুন এবং সাহায্যের জন্য টিউটোরিয়াল ব্যবহার করুন: https://www.arduino.cc/en/Tutorial/ToneMelody। আপনার যোগ করা প্রতিটি নতুন গানের জন্য, সুইচ স্টেটমেন্টে একটি নতুন কেস যুক্ত করতে ভুলবেন না এবং আপনার র্যান্ডম () ফাংশন দ্বারা তৈরি হওয়া সর্বাধিক সংখ্যা বৃদ্ধি করতে ভুলবেন না। শুভ কোডিং!

ধাপ 4: আরো প্রকল্প

আরও প্রকল্পের জন্য, আমার পৃষ্ঠাগুলি দেখুন:

  • https://dargen.io/
  • https://github.com/mjdargen
  • https://www.instructables.com/member/mjdargen/

প্রস্তাবিত: