সুচিপত্র:
ভিডিও: Arduino ধাঁধা বাক্স: 7 ধাপ
2024 লেখক: John Day | [email protected]. সর্বশেষ পরিবর্তিত: 2024-01-30 07:59
এই প্রকল্পের জন্য আমরা একটি ধাঁধা বাক্স তৈরি করতে যাচ্ছি যা সঙ্গীত নিয়ে কাজ করে। এর মূল কথা হল আপনি যখন একটি বোতাম টিপেন তখন এটি একটি সুর প্রকাশ করে এবং 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 (টেলর);
}
প্রস্তাবিত:
কোড গেমটি ক্র্যাক করুন, আরডুইনো ভিত্তিক ধাঁধা বাক্স: 4 টি ধাপ (ছবি সহ)
কোড গেমটি ক্র্যাক করুন, আরডুইনো ভিত্তিক ধাঁধা বাক্স: এই নির্দেশনায়, আমি আপনাকে দেখাবো কিভাবে আপনার নিজের ক্র্যাক কোড গেমটি তৈরি করবেন যেখানে আপনি একটি রোটারি এনকোডার ডায়াল ব্যবহার করে এলোমেলোভাবে জেনারেট কোড অনুমান করতে পারেন নিরাপদ। সেফের সামনে 8 টি এলইডি রয়েছে যা আপনাকে জানাতে পারে যে কতটি
ধাঁধা ধাঁধা জন্য Gyro সেন্সর নিয়ন্ত্রিত প্ল্যাটফর্ম: 3 ধাপ
ম্যাজ পাজলের জন্য গাইরো সেন্সর নিয়ন্ত্রিত প্ল্যাটফর্ম: এই নির্দেশনাটি সাউথ ফ্লোরিডা বিশ্ববিদ্যালয়ে মেক কোর্সের প্রকল্পের প্রয়োজনীয়তা পূরণের জন্য তৈরি করা হয়েছে অ্যাকসিলরোম থেকে
ধাঁধা বাক্স - কোডব্রেকার এবং গ্রাউন্ডব্রেকার [ইউসিএম]: 7 টি ধাপ (ছবি সহ)
ধাঁধা বাক্স - কোডব্রেকার এবং গ্রাউন্ডব্রেকার্স [ইউসিএম]: তাদের কোডব্রেকার এবং গ্রাউন্ডব্রেকার প্রদর্শনী সম্পর্কিত ক্যামব্রিজের ফিটজভিলিয়াম মিউজিয়ামে ডিজিটাল নির্মাতা কর্মশালার জন্য ডিজাইন করা লেজার কাট পাজল বক্স কিট। কর্মশালার জন্য, ধাঁধা বাক্সের বোতামটি একটি MakeyMakey a- এর সাথে সংযুক্ত ছিল
Arduino 'breadbot' ধাঁধা খেলা: 6 ধাপ (ছবি সহ)
Arduino 'breadbot' ধাঁধা খেলা: ওহ না! আমার বাচ্চা রোবটটি আবার জীবনে আসার জন্য কয়েকটি তারের প্রয়োজন! এজন্যই আমি এটা তৈরি করেছি! আপনি এটিকে আপনার মত জটিল করে তুলতে পারেন, কিন্তু আমি বেছে নিয়েছি
একটি কাঠের বাক্স থেকে হালকা বাক্স প্রদর্শন করুন: 9 টি ধাপ (ছবি সহ)
একটি কাঠের বাক্স থেকে হালকা বাক্স প্রদর্শন করুন: আমার স্ত্রী এবং আমি আমার মাকে বড়দিনের জন্য একটি কাচের ভাস্কর্য দিয়েছিলাম। যখন আমার মা এটা খুলেছিলেন তখন আমার ভাই " রB্যাডবিয়ার (ভাল তিনি আসলে আমার নাম বলেছিলেন) দিয়ে একটি হালকা বাক্স তৈরি করতে পারেন! &Quot; তিনি এই কথা বলেছেন কারণ কাঁচ সংগ্রহকারী কেউ হিসেবে আমি