সুচিপত্র:

Arduino ধাঁধা বাক্স: 7 ধাপ
Arduino ধাঁধা বাক্স: 7 ধাপ

ভিডিও: Arduino ধাঁধা বাক্স: 7 ধাপ

ভিডিও: Arduino ধাঁধা বাক্স: 7 ধাপ
ভিডিও: Копирование в силикон сложной детали / как изготовить силиконовую форму 2024, নভেম্বর
Anonim
Arduino ধাঁধা বাক্স
Arduino ধাঁধা বাক্স

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

সরবরাহ

1 x Arduino uno

1 x 1k ওহম প্রতিরোধক

5 x 220 ওহম প্রতিরোধক

1 xPiezo Buzzer

5 x পুশবাটন 6x6 মিমি

1 x জাম্পার তারগুলি সেট করুন

1 এক্স পারফ/স্ট্রিপ বোর্ড

1 x সোল্ডারসেট

1 x কবজা

1 এক্স বাতা

ড্রয়ার/কাঠের 1 x ছোট বুক

1x গরম আঠালো বন্দুক + আঠালো লাঠি

1 x 9v ব্যাটারি + ধারক

বিট অব ওয়ারবলা

পেইন্ট

ধাপ 1:

ছবি
ছবি

শুরু করার জন্য আপনাকে আপনার ব্রেডবোর্ডে আপনার পিন টিপতে হবে। এখন বোর্ডের কোণে একটি তারের সাথে এনালগ 2 সংযুক্ত করুন। আমরা একটি লাইনে দুটি প্রতিরোধককে সংযুক্ত করতে যাচ্ছি। প্রথমটি একটি 10k ওহম প্রতিরোধক। এই প্রতিরোধকের অন্য প্রান্তে আমরা এনালগ গ্রাউন্ডের সাথে তারের সংযোগ স্থাপন করি। দ্বিতীয় প্রতিরোধক একটি 220 ওহম প্রতিরোধক যা আমরা প্রথম বোতামে সংযুক্ত করি। বোতামের দ্বিতীয় খোলা দিকটি দ্বিতীয় বোতামের সাথে সংযুক্ত করতে একই মানের আরেকটি প্রতিরোধক ব্যবহার করুন। এই মত বোতামগুলিকে শেষ পর্যন্ত সংযুক্ত করতে থাকুন। শেষের দিকে আপনি একটি তার ধরেন এবং এটিকে বোতামের একটি বন্ধ বরাবর সংযুক্ত করুন এবং এটিকে পরবর্তী লাইনের সাথে সংযুক্ত করুন। আপনি এখন সেই প্রক্রিয়াটি পুনরাবৃত্তি করুন যা আপনি প্রতিরোধকগুলির সাথে করেছিলেন কেবলমাত্র সরল তারের সাথে। আপনার Arduino এ এনালগ 3, 3V পোর্টে প্রথম বোতামটি সংযুক্ত করুন। সর্বোপরি আপনি নীচে চিত্রিত হিসাবে এক ধরণের ক্রস প্যাটার্ন পাবেন।

ধাপ ২:

পরবর্তীতে আপনি রুটিবোর্ডে বুজার লাগান এবং একপাশে ডিজিটাল গ্রাউন্ডে এবং অন্যটি 12 পোর্টে সুরক্ষিত করুন। আপনার Arduino এ ইতিমধ্যেই নিম্নলিখিত কোড আপলোড করা স্মার্ট যাতে আপনি পরীক্ষা করতে পারেন যে সবকিছু সঠিকভাবে কাজ করছে কিনা। যদি এটি হয় তবে আপনি উপাদানগুলি একসঙ্গে সোল্ডারিং শুরু করতে পারেন। এইগুলিকে রুটিবোর্ড থেকে বের করে এবং সরাসরি তার এবং সংযোগগুলি একসাথে সোল্ডার করে এটি করুন। যদি আপনি মনে করেন যে বোতামগুলির মধ্যে আপনার আরও দৈর্ঘ্য প্রয়োজন তবে আপনি প্রতিরোধকদের মধ্যে কিছু অতিরিক্ত তার যুক্ত করতে পারেন। এই সময়ে রুটিবোর্ডের আর প্রয়োজন নেই।

ধাপ 3:

ছবি
ছবি

সবকিছু বিক্রির পরে, বাক্সটি নিজেই তৈরি করার সময় এসেছে। আমি আমার জন্য একটি বেস হিসাবে ড্রয়ারের একটি সস্তা সেট ব্যবহার করেছি। আমি কেবল দৈর্ঘ্যের অর্ধেক কেটে ফেলেছিলাম এবং পিছন এবং পাশটি কেটে দিয়েছি। আপনার এখন দুটি সি আকৃতির টুকরা থাকা উচিত। Oneাকনা হিসাবে ব্যবহার করার জন্য তাদের একটির এক পাশ কেটে নিন। এখন অবশিষ্ট টুকরাগুলির মধ্যে একটিকে ঘোরান যাতে তারা togetherাকনাহীন বাক্সের মতো একসঙ্গে ফিট করে এবং তাদের একসঙ্গে আঠালো করে। একবার আঠা সঠিকভাবে সেট হয়ে গেলে, বোতামগুলির জন্য বাক্সের প্রতিটি পাশে একটি ছোট গর্ত এবং idাকনাতে বাজারের জন্য একটি বড় ছিদ্র করুন।

ধাপ 4:

ছবি
ছবি
ছবি
ছবি

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

ধাপ 5:

সবশেষে আপনি আঠালো বা স্ক্রু, বক্স এবং connectingাকনা উপর ক্লিপ এবং কব্জা দুটি সংযুক্ত।

ধাপ 6:

এখন আপনার বাক্সটি সম্পূর্ণ হয়ে গেলে আপনাকে আরডুইনো এবং ব্যাটারি এর ভিতরে andাকনা বন্ধ করতে হবে।

ধাপ 7: কোড

// এটি একটি জেলদা থিমযুক্ত ধাঁধা/সঙ্গীত বাক্সের কোড।

// এটি আপনার কোডটি অন্য ট্যাবে নোটের তালিকার সাথে সংযুক্ত করে

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

// এই ভেরিয়েবলটি নিশ্চিত করবে যে আরডুইনো বোতামটির একটি দীর্ঘ প্রেসকে কেবল একটি প্রেস হিসাবে দেখবে

int একই = 0;

// এখান থেকে এটি আপনার ইনপুট পড়বে

int k = 2;

// এটি আপনার আউটপুট পিন

int স্পিকার = 12;

// নীচের শেষ সুরগুলি

int Zelda = {NOTE_B4, NOTE_D5, NOTE_A4, NOTE_G4, NOTE_A4, NOTE_B4, NOTE_D5, NOTE_A4, NOTE_G4, NOTE_A4, NOTE_B4, NOTE_D5, NOTE_A5, NOTE_G5, NOTE_D5, NOTE_D, NOTE_D

int ZeldaTime = {2, 4, 2, 4, 4, 2, 2, 2, 4, 4, 2, 4, 2, 2, 2, 4, 4, 2};

int Epona = {NOTE_D5, NOTE_B4, NOTE_A4, NOTE_D5, NOTE_B4, NOTE_A4, NOTE_D5, NOTE_B4, NOTE_A4, NOTE_B4, NOTE_A4};

int EponaTime = {4, 4, 1.5, 4, 4, 1.5, 4, 4, 2, 2, 1};

int সারিয়া = {NOTE_F4, NOTE_A4, NOTE_B4, NOTE_F4, NOTE_A4, NOTE_B4, NOTE_F4, NOTE_A4, NOTE_B4, NOTE_E5, NOTE_D5, NOTE_B4, NOTE_C5, NOTE_B4, NOT4, NOT4, NOT4, NOT4, NOT4, NOT4, NOT4, NOT4, NOTE_GE

int সারিয়াটাইম = {8, 8, 4, 8, 8, 4, 8, 8, 8, 8, 4, 8, 8, 8, 8, 8, 3, 8, 8, 8, 2, 1};

// একটি নোটের স্বাভাবিক সময়কাল

int BEATTIME = 300;

// কাউন্টার যেগুলি ট্র্যাক রাখতে যাচ্ছে আমরা সমাধানের মধ্যে আছি

int teller = 0;

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

Serial.begin (9600);

পিনমোড (2, ইনপুট);

পিনমোড (1, ইনপুট);

}

অকার্যকর লুপ () {

// পিন থেকে ইনপুট পড়ে

k = analogRead (2);

int p = analogRead (1);

// যদি কোন বোতাম না চাপা থাকে তবে কোন স্বর থাকা উচিত নয়

যদি (টেলর == 0) {

noTone (12);

}

// যদি পঠিত ডেটা পরামিতিগুলির সাথে মিলে যায় তবে কোডের বর্ণিত বিটটি চালান

যদি (k> 320 && k <350) {

rechts ();

}

//""

অন্যথায় যদি (কে 290) {

লিঙ্ক ();

}

//""

অন্যথায় যদি (k> 260 && k <280) {

বোনা ();

}

//""

অন্যথায় যদি (k> 240 && k <260) {

onder ();

}

//""

অন্যথায় যদি (k> 220 && k <240) {

একটি ();

}

// যদি এটি না হয় (যখন কোন বোতাম চাপানো হয় না), এই কোডটি চালান

অন্য {

// একইভাবে পুনরায় সেট করুন যাতে পরের বার একটি বোতাম চাপলে এটি ব্যবহার করা যায়

একই = 0;

// যদি কাউন্টার একটি নির্দিষ্ট সংখ্যা পর্যন্ত হয় কোডের বর্ণিত বিট চালান

যদি (টেলর == 166) {

zelda ();

}

//""

অন্যথায় যদি (টেলর == 386) {

সারিয়া ();

}

//""

অন্যথায় যদি (টেলর == 266) {

এপোনা ();

}

//""

অন্যথায় যদি (টেলর == 999) {

// ত্রুটি চিহ্নিত করতে এই সুরটি বাজান

স্বর (স্পিকার, NOTE_C3, BEATTIME);

// কাউন্টারে 0 রিসেট করুন

টেলার = 0;

}

}

// ইনপুট এবং আউটপুটের মধ্যে বিলম্ব

বিলম্ব (100);

// সিরিয়াল মনিটরে আপনার ইনপুটের মান প্রিন্ট করে

Serial.println (k);

}

// এটিই প্রথম সুর

অকার্যকর zelda () {

// এটি একটি পাল্টা সেট করে যা সুর বাজানোর সময় নিজেকে আপডেট করে যাতে এটি এটি পড়তে পারে এবং যখন এটি করা উচিত

জন্য (int i = 0; i <sizeof (Zelda); i ++) {

// বলে একটি নোট কতক্ষণ স্থায়ী হওয়া উচিত

int ZTime = 1000 / ZeldaTime ;

// টোন তৈরি করে

স্বর (স্পিকার, জেলদা , জেডটাইম);

// সঠিক বিলম্ব তৈরি করে

int বিরতি = ZTime * 1.30;

বিলম্ব (বিরতি);

// কাউন্টার রিসেট করে

টেলার = 0;

// সিরিয়াল মনিটরে আপনার ইনপুটের মান প্রিন্ট করে

Serial.println (টেলর);

}

}

//""

অকার্যকর এপোনা () {

জন্য (int i = 0; i <sizeof (Epona); i ++) {

int ETime = 1000 / EponaTime ;

স্বর (স্পিকার, এপোনা , ইটাইম);

int pause = ETime * 1.30;

বিলম্ব (বিরতি);

টেলার = 0;

Serial.println (টেলর);

}

}

//""

শূন্য সারিয়া () {

জন্য (int i = 0; i <sizeof (Saria); i ++) {

int STime = 1000 / SariaTime ;

স্বর (স্পিকার, সারিয়া , STime);

int pause = STime * 1.30;

বিলম্ব (বিরতি);

টেলার = 0;

Serial.println (টেলর);

}

}

অকার্যকর rec

hts () {

// যদি এটি ইতিমধ্যে চাপা না থাকে

যদি (একই == 0) {

// যদি কাউন্টারে বর্তমানে এই মানগুলির মধ্যে একটি থাকে তবে এটিতে এটি যোগ করুন

যদি (teller == 0 || teller == 132 || teller == 165 || teller == 232 || teller == 265 || teller == 331 || teller == 374) {

teller = teller + 1;

}

// অন্যথায় এটি 999 এ সেট করুন যাতে আপনি ত্রুটির শব্দ শুনতে পান

অন্য {

টেলার = 999;

}

// একইভাবে সেট করুন যাতে আরডুইনো একাধিক প্রেসের মতো দীর্ঘায়িত প্রেস না পড়ে

একই = 1;

}

// সুর বাজান

অন্য {

স্বর (স্পিকার, NOTE_A4, BEATTIME);

}

// সিরিয়াল মনিটরে আপনার ইনপুটের মান প্রিন্ট করে

Serial.println (টেলর); }

//""

অকার্যকর লিঙ্ক () {

যদি (একই == 0) {

যদি (teller == 133 || teller == 254 || teller == 244 || teller == 332 || teller == 375 || teller == 221) {

teller = teller + 11;

}

অন্যথায় যদি (টেলর == 0) {

টেলার = 111;

}

অন্য {

টেলার = 999;

}

একই = 1;

} অন্য {

স্বর (স্পিকার, NOTE_B4, BEATTIME);

} Serial.println (টেলর);

}

//""

অকার্যকর বোভেন () {

if (same == 0) {if (teller == 111 || teller == 144 || teller == 233) {

teller = teller + 21;

}

অন্যথায় যদি (টেলর == 0) {

টেলার = 221;

}

অন্য {

টেলার = 999;

}

একই = 1;

}

অন্য {

স্বর (স্পিকার, NOTE_D5, BEATTIME);

Serial.println (টেলর);

}

}

//""

অকার্যকর onder () {

যদি (একই == 0) {

যদি (টেলর == 343) {

teller = teller + 31;

}

অন্যথায় যদি (টেলর == 0) {

টেলার = 331;

} অন্য {

টেলার = 999;

} একই = 1;

} অন্য {

স্বর (স্পিকার, NOTE_F4, BEATTIME);

Serial.println (টেলর);

}

}

//""

অকার্যকর a () {

যদি (একই == 0) {

যদি (টেলর == 0) {

টেলার = 461;

}

অন্য {

টেলার = 999;

}

একই = 1;

}

স্বর (স্পিকার, NOTE_D4, BEATTIME);

Serial.println (টেলর);

}

প্রস্তাবিত: