সুচিপত্র:

একটি Arduino এবং একটি ডিসি মোটর দিয়ে গান তৈরি: 6 ধাপ
একটি Arduino এবং একটি ডিসি মোটর দিয়ে গান তৈরি: 6 ধাপ

ভিডিও: একটি Arduino এবং একটি ডিসি মোটর দিয়ে গান তৈরি: 6 ধাপ

ভিডিও: একটি Arduino এবং একটি ডিসি মোটর দিয়ে গান তৈরি: 6 ধাপ
ভিডিও: DC Motor Speed কিভাবে বারাবেন দিগুন DC Motor speed Hacks bangla 2024, নভেম্বর
Anonim
একটি Arduino এবং একটি ডিসি মোটর দিয়ে গান তৈরি করা
একটি Arduino এবং একটি ডিসি মোটর দিয়ে গান তৈরি করা

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

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

পুনশ্চ. আমি অনুমান করি যে আপনার ইতিমধ্যে Arduino এর সাথে কিছু অভিজ্ঞতা আছে এবং আপনি এর প্রোগ্রামিং ভাষা এবং হার্ডওয়্যারের সাথে পরিচিত। আপনার জানা উচিত অ্যারে কি, PWM কি এবং কিভাবে এটি ব্যবহার করতে হয়, এবং কিভাবে ভোল্টেজ এবং কারেন্ট কাজ করে, শুধু কিছু জিনিসের নাম। আপনি যদি এখনও সেখানে না থাকেন বা আরডুইনো শুরু করেন তবে চিন্তা করবেন না: অফিসিয়াল আরডুইনো ওয়েবসাইট থেকে এই শুরু পৃষ্ঠাটি চেষ্টা করুন এবং যখনই আপনি প্রস্তুত হন তখন ফিরে আসুন।:)

সরবরাহ

  • Arduino (আমি একটি UNO ব্যবহার করেছি কিন্তু আপনি চাইলে অন্য Arduino ব্যবহার করতে পারেন)
  • স্ট্যান্ডার্ড 5V ডিসি মোটর, বিশেষত একটি ফ্যান সংযুক্ত করতে সক্ষম ("সার্কিট অ্যাসেম্বলিং" এ ছবি দেখুন
  • L293D আইসি
  • আপনি যে গানটি চালাতে চান তাতে নোট হিসাবে অনেক পুশ বোতাম
  • ব্রেডবোর্ড
  • জাম্পার তার

ধাপ 1: ওভারভিউ

প্রকল্পটি কীভাবে কাজ করে তা এখানে: Arduino একটি নির্দিষ্ট ফ্রিকোয়েন্সি তে একটি বর্গাকার তরঙ্গ তৈরি করবে, যা এটি L293D তে আউটপুট করে। L293D একটি বাহ্যিক বিদ্যুৎ সরবরাহের সাথে যুক্ত থাকে যা এটি Arduino দ্বারা প্রদত্ত ফ্রিকোয়েন্সি তে মোটরকে শক্তি দিতে ব্যবহার করে। ডিসি মোটরের শ্যাফট ঘুরতে বাধা দিয়ে, মোটরটি ফ্রিকোয়েন্সি বন্ধ এবং চালু হতে শোনা যায়, যা একটি টোন বা নোট তৈরি করে। বোতাম টিপলে, অথবা স্বয়ংক্রিয়ভাবে সেগুলি চালানোর জন্য আমরা Arduino প্রোগ্রাম করতে পারি।

ধাপ 2: সার্কিট একত্রিত করা

সার্কিট একত্রিত করা
সার্কিট একত্রিত করা
সার্কিট একত্রিত করা
সার্কিট একত্রিত করা

সার্কিট একত্রিত করতে, কেবল উপরের ফ্রিজিং ডায়াগ্রামটি অনুসরণ করুন।

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

ধাপ 3: সার্কিট কিভাবে কাজ করে

সার্কিট কিভাবে কাজ করে
সার্কিট কিভাবে কাজ করে

L293D হল একটি আইসি যা তুলনামূলকভাবে উচ্চ ভোল্টেজ, উচ্চ কারেন্ট ডিভাইস যেমন রিলে এবং মোটর চালানোর জন্য ব্যবহৃত হয়। Arduino তার মোটর থেকে সরাসরি মোটর চালাতে অক্ষম L293D- এ একটি সিগন্যাল ইনপুট করলে Arduino- এর ক্ষতির ঝুঁকি ছাড়াই ডিসি মোটরের একই সিগন্যাল আউটপুট হবে।

উপরে তার ডেটশীট থেকে L293D এর একটি পিনআউট/কার্যকরী পরিকল্পিত। যেহেতু আমরা শুধুমাত্র 1 টি মোটর চালাচ্ছি (L293D 2 ড্রাইভ করতে পারে), আমাদের শুধুমাত্র IC এর এক পাশ দরকার। পিন 8 হল পাওয়ার, পিন 4 এবং 5 হল GND, পিন 1 হল Arduino থেকে PWM আউটপুট, এবং 2 এবং 7 পিন মোটরের দিক নিয়ন্ত্রণ করে। যখন পিন 2 উচ্চ এবং পিন 7 নিম্ন হয়, মোটর একভাবে ঘুরছে, এবং যখন পিন 2 নিম্ন এবং পিন 7 উচ্চ, তখন মোটর অন্যভাবে ঘুরছে। যেহেতু মোটরটি কোন দিকে ঘুরছে তা আমরা গুরুত্ব দিই না, যতক্ষণ পর্যন্ত তারা একে অপরের থেকে আলাদা থাকে ততক্ষণ পিন 2 এবং 7 কম বা উচ্চ হয় কিনা তা বিবেচ্য নয়। পিন 3 এবং 6 মোটরের সাথে সংযুক্ত। আপনি যদি চান তবে অন্যদিকে (পিন 9-16) সবকিছু সংযুক্ত করতে পারেন, তবে সচেতন থাকুন যে শক্তি এবং PWM পিনগুলি স্থান পরিবর্তন করে।

দ্রষ্টব্য: যদি আপনি একটি Arduino ব্যবহার করেন যা প্রতিটি বোতামের জন্য পর্যাপ্ত পিন না থাকে, তাহলে আপনি সমস্ত সুইচগুলিকে একটি এনালগ পিনের সাথে সংযুক্ত করতে প্রতিরোধকারীদের একটি নেটওয়ার্ক ব্যবহার করতে পারেন, যেমন এই নির্দেশাবলীতে। এটি কীভাবে কাজ করে তা এই প্রকল্পের আওতার বাইরে, তবে আপনি যদি কখনও R-2R DAC ব্যবহার করেন তবে আপনার এটি পরিচিত হওয়া উচিত। মনে রাখবেন যে একটি এনালগ পিন ব্যবহার করার জন্য কোডের বড় অংশ পুনরায় লিখতে হবে, কারণ বাটন লাইব্রেরি এনালগ পিনের সাথে ব্যবহার করা যাবে না।

ধাপ 4: কোড কিভাবে কাজ করে

সমস্ত বোতাম পরিচালনা করা সহজ করার জন্য, আমি ম্যাডলিচ দ্বারা "বোতাম" নামে একটি লাইব্রেরি ব্যবহার করেছি। আমি লাইব্রেরি প্রথম জিনিস অন্তর্ভুক্ত। পরবর্তী, 8-22 লাইনে, আমি টুইঙ্কল, টুইঙ্কল, লিটল স্টার (উদাহরণ গান) চালানোর জন্য প্রয়োজনীয় নোটগুলির ফ্রিকোয়েন্সি সংজ্ঞায়িত করেছি, L293D চালানোর জন্য আমি যে পিনটি ব্যবহার করব এবং বোতামগুলি।

সেটআপ ফাংশনে, আমি সিরিয়াল, বোতামগুলি শুরু করেছি এবং L293D এর জন্য আউটপুট মোডে ড্রাইভার পিন সেট করেছি।

অবশেষে, প্রধান লুপে আমি একটি বোতাম চাপানো হয়েছে কিনা তা পরীক্ষা করে দেখেছি। যদি এটি থাকে তবে Arduino সংশ্লিষ্ট নোটটি খেলে এবং নোটের নামটি সিরিয়াল মনিটরে প্রিন্ট করে (আপনার নোটগুলি কোনটি আপনার রুটিবোর্ডে আছে তা জানার জন্য দরকারী)। যদি একটি নোট প্রকাশ করা হয়, arduino noTone () দিয়ে কোন শব্দ বন্ধ করে দেয়।

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

ধাপ 5: একটি গানের প্রোগ্রামিং

নোট বাজানোর জন্য বোতাম ব্যবহার করার পরিবর্তে, আপনি স্বয়ংক্রিয়ভাবে আপনার জন্য একটি সুর বাজানোর জন্য Arduino প্রোগ্রাম করতে পারেন। এখানে প্রথম স্কেচের একটি পরিবর্তিত সংস্করণ রয়েছে যা মোটরে টুইঙ্কল, টুইঙ্কল, লিটল স্টার বাজায়। স্কেচের প্রথম অংশ একই - সংজ্ঞায়িত নোট ফ্রিকোয়েন্সি এবং টোনপিন। আমরা bpm = "100" এ নতুন অংশে যাই। আমি প্রতি মিনিটে বিট সেট করি (বিপিএম), এবং তারপর কিছু গণিত ব্যবহার করে প্রতি বিট মিলিসেকেন্ডের সংখ্যা বের করে যেটি বিপিএম সমান। এটি করার জন্য, আমি মাত্রিক বিশ্লেষণ নামে একটি কৌশল ব্যবহার করেছি (চিন্তা করবেন না - এটি যতটা শোনাচ্ছে তত কঠিন নয়)। আপনি যদি কখনও হাই স্কুল কেমিস্ট্রি কোর্স করে থাকেন তবে আপনি অবশ্যই ইউনিটগুলির মধ্যে রূপান্তর করতে মাত্রিক বিশ্লেষণ ব্যবহার করেছেন। ভাসমান () আছে নিশ্চিত করার জন্য যে সমীকরণের কোন কিছুই গোল না হওয়া পর্যন্ত নির্ভুলতার জন্য।

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

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

ধাপ 6: প্রতিক্রিয়া

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

প্রস্তাবিত: