সুচিপত্র:

Arduino: পিনবল মেশিন: 8 টি ধাপ (ছবি সহ)
Arduino: পিনবল মেশিন: 8 টি ধাপ (ছবি সহ)

ভিডিও: Arduino: পিনবল মেশিন: 8 টি ধাপ (ছবি সহ)

ভিডিও: Arduino: পিনবল মেশিন: 8 টি ধাপ (ছবি সহ)
ভিডিও: Pinball Diy with Arduino 2024, জুন
Anonim
Image
Image

যেহেতু আমি সবসময় পিনবল মেশিন এবং ইলেকট্রনিক্স উভয়ই পছন্দ করেছি, তাই আমি আমার নিজের পিনবল মেশিন তৈরির সিদ্ধান্ত নিয়েছি। আমি প্রোগ্রামিং এবং ইলেকট্রনিক্সের জন্য Arduino বেছে নিয়েছি, কারণ এটি একটি অত্যন্ত অ্যাক্সেসযোগ্য প্ল্যাটফর্ম যা কম্প্যাক্ট এবং ব্যবহার করা সহজ।

এই গাইডে আমি আমার উন্নয়ন প্রক্রিয়া ব্যাখ্যা করবো, তাই সম্ভবত আপনার মধ্যে কেউ একজন উৎসাহী হতে পারে।

ধাপ 1: কেস নির্মাণ

মামলা নির্মাণ
মামলা নির্মাণ

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

ধাপ 2: ফ্লিপার মেকানিক নির্মাণ

ফ্লিপার মেকানিক নির্মাণ
ফ্লিপার মেকানিক নির্মাণ

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

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

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

আমি ফ্লিপারগুলিকে আসল অবস্থানে ফিরিয়ে আনতে স্প্রিংস ব্যবহার করেছি এবং বোতামগুলি চাপানো অবস্থায় ফ্লিপার এবং বোতামগুলির মধ্যে একটি ঘূর্ণায়মান নির্মাণ করেছি। ফ্লিপারগুলিকে খুব বেশি দূরে টানতে স্প্রিংসগুলি বন্ধ করতে, আমি ফ্লিপারগুলিকে তাদের আসল অবস্থানে ধরে রাখার জন্য দুটি স্ক্রু রেখেছি।

ধাপ 3: দেয়াল স্থাপন

দেয়াল স্থাপন
দেয়াল স্থাপন

পিনবলকে ফ্লিপারের দিকে পুন redনির্দেশ করার জন্য আমি কয়েকটি দেয়াল স্থাপন করেছি। এগুলো তৈরি করা খুবই সহজ। কেবল কেসের নীচে 3 টি গর্ত ড্রিল করুন এবং তিনটি কাঠের পিনে চাপ দিন। পিনের চারপাশে একটি রাবার ব্যান্ড মোড়ানো এবং আপনার কাজ শেষ।

ধাপ 4: স্কোর ব্লক যোগ করা

স্কোর ব্লক যোগ করা
স্কোর ব্লক যোগ করা
স্কোর ব্লক যোগ করা
স্কোর ব্লক যোগ করা

স্কোর ব্লকগুলি পিনবল মেশিনের অন্যতম গুরুত্বপূর্ণ অংশ, তাই নিশ্চিত করুন যে আপনি এই অংশটি সঠিকভাবে করছেন। আমি আমার পিনবল মেশিনের জন্য তিনটি স্কোর ব্লক তৈরি করেছি, কিন্তু আবার এই সব আপনার উপর নির্ভর করে।

আমি একটি ঝাড়বাতির ছোট টুকরো কেটে ফেললাম এবং তার চারপাশে তামার তার মোড়ানো। Arduino এই তামার তারকে 5V দিয়ে ক্রমাগত শক্তি দেবে। আমি বলের সাথে আরও ভাল যোগাযোগের জন্য চারটি কলম স্প্রিং সোল্ডার করেছি।

যেভাবে স্কোর ব্লক কাজ করে, তা হল বলটি একটি সার্কিট সম্পন্ন করে যা আরডুইনোতে একটি ইনপুট পিনের দিকে নিয়ে যায়। তাই আমি যা করেছি তা হল কেসের নীচে অ্যালুমিনিয়াম ফয়েল টেপ করা (কপার টাচ করা নয়) এবং ফয়েলটি আরডুইনোতে একটি পিন পর্যন্ত সংযুক্ত করুন। যখনই বলটি তামা এবং অ্যালুমিনিয়াম উভয়কে আঘাত করে, সার্কিট সম্পূর্ণ হয় এবং Arduino একটি সংকেত পাবে।

আমি অ্যালুমিনিয়াম ফয়েল ব্যবহার করে সমস্ত স্কোর ব্লক একসাথে সংযুক্ত করেছি, কিন্তু মনে রাখবেন যে স্টিকি সাইড বিদ্যুৎ পরিচালনা করে না।

ধাপ 5: যোগাযোগের উপর গেম যোগ করা

গেম ওভার কন্টাক্ট যোগ করা
গেম ওভার কন্টাক্ট যোগ করা

পিনবল মেশিনের নীচে, ফ্লিপারের মাঝখানে, আমি যোগাযোগের উপর একটি গেম যোগ করেছি। যখনই বল এই যোগাযোগে আঘাত করবে, খেলোয়াড় একটি বল হারাবে। আমি যে নির্মাণ করেছি তা অনেকটা স্কোর ব্লকের সমান। শুধুমাত্র এখানে আমি দুটি স্ক্রু ব্যবহার করেছি, এবং আবার নীচে অ্যালুমিনিয়াম ফয়েলের একটি টুকরা।

ধাপ 6: কেবল গর্ত ড্রিলিং

ক্যাবল হোল ড্রিলিং
ক্যাবল হোল ড্রিলিং
ক্যাবল হোল ড্রিলিং
ক্যাবল হোল ড্রিলিং
ক্যাবল হোল ড্রিলিং
ক্যাবল হোল ড্রিলিং

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

এই ছাড়াও, আমি নীচের বাম দিকে, দেয়ালের মাঝখানে, অতিরিক্ত বল গেট সার্ভোর দিকে যাওয়ার তারের জন্য একটি গর্ত ড্রিল করেছি।

নীচে এলসিডি -র সাথে সংযুক্ত তারের জন্য একটি গর্তও থাকা উচিত।

ধাপ 7: সবকিছু আপ তারের

তারের সবকিছু আপ
তারের সবকিছু আপ
তারের সবকিছু আপ
তারের সবকিছু আপ

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

ধাপ 8: কোড আপলোড করা হচ্ছে

আপনার পিনবল মেশিনকে লাইভে আনতে আপনার আরডুইনোতে নিম্নলিখিত কোডটি আপলোড করুন!

// এলসিডির জন্য লাইব্রেরি অন্তর্ভুক্ত করুন

#অন্তর্ভুক্ত #অন্তর্ভুক্ত

// এলসিডি ডেটা পিনগুলি শুরু করুন

লিকুইডক্রিস্টাল এলসিডি (7, 8, 9, 10, 11, 12);

// একটি servo তৈরি করুন

Servo ballGateServo;

// আমরা যে পিনগুলি ব্যবহার করছি তার জন্য ভেরিয়েবল তৈরি করুন

int gameoverPin = 6; int স্কোরপিন = 5; int স্পিকারপিন = 4; int ballGateServoPin = 3;

// পিনবল মেশিনের জন্য গেমপ্লে ভেরিয়েবল শুরু করুন

int স্কোর = 0; int highscore = 500; bool highscoreReached = মিথ্যা; int বল = 3; int gameoverTimer = 0; int gameoverTimerDuration = 100; bool gameoverTriggered = মিথ্যা;

// প্রথম ফ্রেমে একবার এই কোডটি চালান

অকার্যকর সেটআপ () {// আমরা পিনমোড (গেমওভারপিন, ইনপুট) ব্যবহার করছি এমন পিনের জন্য পিনমোড সেট করুন; পিনমোড (স্কোরপিন, ইনপুট);

// প্রস্থ এবং উচ্চতা দিয়ে এলসিডি শুরু করুন

lcd.begin (16, 2);

// যথাযথ পিনে বল গেট সার্ভো সংযুক্ত করুন

ballGateServo.attach (ballGateServoPin);

// শুরু অবস্থানে গেট servo রিসেট করুন

ballGateServo.write (0); }

// এই কোডটি প্রতিটি একক ফ্রেমে চালান

অকার্যকর লুপ () {// পিন ইনপুটগুলি ক্যাপচার করুন int gameoverState = digitalRead (gameoverPin); int scoreState = digitalRead (scorePin);

// ইনপুট পেলে স্কোর যোগ করুন

যদি (স্কোর স্টেট) {টোন (স্পিকারপিন, 1000); স্কোর += 10; } অন্য {noTone (4); }

// গেমওভার পিট ট্রিগার হলে বল থেকে বিয়োগ করুন

যদি (gameoverState এবং! gameoverTriggered) {বল -= 1; gameoverTriggered = সত্য; gameoverTimer = gameoverTimerDuration; }

// গেমওভার যোগাযোগ স্পর্শ না করার সাথে সাথে গেমওভার টাইমার শুরু করুন

if (! gameoverState) {if (gameoverTimer> = 1) {gameoverTimer -= 1; } অন্য {gameoverTriggered = মিথ্যা; }}

// এলসিডিতে গেমওভার টেক্সট ব্লিংক করুন এবং স্কোর এবং বল রিসেট করুন

যদি (বল <= 0) {lcd.setCursor (0, 0); জন্য (int i = 5; i> = 1; i--) {lcd.clear (); বিলম্ব (250); lcd.print ("গেম ওভার"); lcd.setCursor (0, 1); lcd.print ("আবার চেষ্টা করবেন?"); বিলম্ব (250); } lcd.clear (); স্কোর = 0; ballGateServo.write (0); highscoreReached = মিথ্যা; বল = 3; }

if (score> highscore and! highscoreReached) {

lcd.setCursor (0, 0); জন্য (int i = 5; i> = 1; i--) {lcd.clear (); বিলম্ব (250); lcd.print ("নতুন হাইস্কোর"); lcd.setCursor (0, 1); lcd.print ("হঠাৎ মৃত্যু!"); বিলম্ব (250); } lcd.clear (); বল = 1; ballGateServo.write (120); হাইস্কোর = স্কোর; highscoreReached = সত্য; }

// বর্তমান স্কোর বেশি হলে হাইস্কোর আপডেট করুন

যদি (স্কোর> হাইস্কোর) {হাইস্কোর = স্কোর; }

// কার্সারটি লাইন 0 এ সেট করুন

lcd.setCursor (0, 0); // বর্তমান (উচ্চ) স্কোরটি এলসিডিতে প্রিন্ট করুন যদি (স্কোর <= 0) {lcd.print ("হাইস্কোর:" + স্ট্রিং (হাইস্কোর) + ""); } অন্যথায় {lcd.print ("স্কোর:" + স্ট্রিং (স্কোর) + ""); }

// কার্সার লাইন 1 এ সেট করুন

lcd.setCursor (0, 1);

// এলসিডিতে বলের বর্তমান পরিমাণ মুদ্রণ করুন

lcd.print ("বল:" + স্ট্রিং (বল)); }

প্রস্তাবিত: