একটি রুটিবোর্ড আপনাকে কিছুই সোল্ডার না করেই সার্কিট তৈরি করতে দেয়। ইলেক্ট্রনিক্স নিয়ে পরীক্ষা করার জন্য এটি দুর্দান্ত সরঞ্জাম, তবে এটি ভয়ঙ্কর হতে পারে। নির্মাণের জন্য একটি প্রকল্প থাকা আপনাকে শেখার সময় প্রেরণা বজায় রাখতে সহায়তা করতে পারে।
বেশ কয়েকটি সহজ গেম রয়েছে যা দুর্দান্ত রাস্পবেরি পাই সূচনা প্রকল্প করে। আপনাকে শুরু করার সহজ একটি হ'ল গেম সাইমন। সাইমন একটি মেমোরি গেম, যাতে ধারাবাহিকভাবে একাধিক আলো জ্বলতে থাকে এবং খেলোয়াড়কে অবশ্যই অনুক্রমটি মনে রাখতে হবে। খেলোয়াড়ের অগ্রগতির সাথে সাথে ক্রমটির দৈর্ঘ্য বৃদ্ধি পেতে থাকে।
প্রয়োজনীয় উপাদান
শুরু করতে, আপনার নিম্নলিখিত বিষয়গুলির প্রয়োজন হবে:
- একটি রাস্পবেরি পাই
- একটি মাইক্রোএসডি কার্ড রাস্পবিয়ান ওএসের সাথে ফ্ল্যাশ হয়েছে
- বিভিন্ন রঙের 4 এক্স এলইডি
- 4 এক্স প্রতিরোধক (220 ওহম থেকে 1 কিলো-ওহম পর্যন্ত কিছু)
- 4 এক্স বোতাম
- 1 এক্স ব্রেডবোর্ড
- সবকিছু সংযুক্ত করার জন্য জাম্পার তারগুলি
আপনি এই প্রকল্পের জন্য যে কোনও রাস্পবেরি পাই ব্যবহার করতে পারেন তবে পাই জিরো মডেলগুলি কিছু সোল্ডারিং ছাড়াই সহজেই ব্রেডবোর্ডগুলিতে সংযুক্ত হয় না। আপনি যে কোনও মডেল ব্যবহার করুন, আপনার একটি পাওয়ার উত্স, মনিটর, কীবোর্ড এবং মাউসও প্রয়োজন।
যদি আপনি এর আগে কখনও রাস্পবেরি পাই সেট আপ না করে থাকেন তবে রাস্পবেরি পাই শিক্ষানবিশ গাইডটিতে এই টিউটোরিয়ালটির জন্য কীভাবে সবকিছু প্রস্তুত করা যায় তা শিখতে পারেন।
আপনি এই টিউটোরিয়ালে পাইথন কোডটি লিখবেন, এবং আপনি এটি লেখার জন্য কোনও পাঠ্য সম্পাদক ব্যবহার করতে পারেন তবে আপনি একটি কোড সম্পাদক সহজেই খুঁজে পেতে পারেন। রাস্পবেরি পাই ওএসে ইতিমধ্যে বেশ কয়েকটি ইনস্টল রয়েছে এবং থোনির নকশা করা হয়েছে নতুনদের জন্য সহজ করার জন্য। আপনি যে কোনও একটি ব্যবহার করুন না কেন, আপনাকে এই টিউটোরিয়ালটি অনুসরণ করতে আপনার কোড সংরক্ষণ এবং চালাতে সক্ষম হতে হবে।
একটি ব্রেডবোর্ড দিয়ে শুরু করা
আপনি যদি এর আগে কখনও ব্রেডবোর্ড ব্যবহার না করে থাকেন তবে আপনি একটি ব্রেডবোর্ড টিউটোরিয়াল পড়ে শুরু করতে পারেন। একটি ব্রেডবোর্ড কীভাবে কাজ করে তা বোঝা আপনাকে কীভাবে সার্কিট তৈরি করবেন তা বুঝতে সহায়তা করবে।
রাস্পবেরি পাইতে সাধারণ-উদ্দেশ্য ইনপুট / আউটপুট (জিপিআইও) পিনের দুটি সারি রয়েছে। এই পিনগুলি আপনাকে আপনার রাস্পবেরি পাইয়ের সাথে সংযুক্ত করার অনুমতি দেয়। কিছু পিন তথ্য প্রেরণ করে, অন্যরা বিদ্যুৎ সরবরাহ করে এবং কিছু আপনার বৈদ্যুতিনগুলি গ্রাউন্ড করে।

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

রাস্পবেরি থেকে পাওয়ারটি এলইডি সরাসরি সংযোগ করতে খুব বেশি। একটি রেজিস্টার ব্যবহার করে পাওয়ার স্তরটি নীচে আনে এবং এলইডি জ্বলতে বাধা দেয়। প্রতিরোধকের একপাশে একই লাইনে জিপিআইও পিনটি প্লাগ ইন করা হয়েছে এবং শেষটি ব্রেডবোর্ডের অন্য দিকে সংযুক্ত করুন। তারপরে রোধকের পরে এলইডিটির ইতিবাচক দিকটি রাখুন। LED এর নেতিবাচক প্রান্তটি সরাসরি নেতিবাচক রেলের সাথে সংযুক্ত করা যেতে পারে। শেষের ফলাফলটি উপরের চিত্রের মতো হওয়া উচিত। আপনার ওয়্যারিং ভালভাবে পরীক্ষা করুন এবং আপনার পাই চালু করুন। এলইডি হালকা হওয়া উচিত।
এখন, আপনি আপনার রাস্পবেরি পাই ব্যবহার করে একটি সার্কিট তৈরি করেছেন যা আপনি কোড ব্যবহার করে নিয়ন্ত্রণ করতে পারবেন।
এলইডি নিয়ন্ত্রণে পাইথন কোড
এই টিউটোরিয়ালটি আপনাকে কোডগুলি ধাপে ধাপে ধাপে ধাপে ধাপে নিয়ে যাবে তবে আপনি যদি যে কোনও সময় সমাপ্ত কোডটি দেখতে চান তবে এটি পাস্তবিনে উপলব্ধ।
এই মুহুর্তে, শক্তিটি এলইডি-তে চলছে, তবে আমরা এটিটি চালু এবং বন্ধ হয়ে গেলে নিয়ন্ত্রণ করতে চাই। নিম্নলিখিত পাইথন কোড আমাদের বোর্ডে কথা বলার অনুমতি দেবে।
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BOARD)
GPIO.setwarnings(False)
red = 18
GPIO.setup(red, GPIO.OUT)
GPIO.output(red, GPIO.LOW)
প্রথম কয়েকটি লাইন জিনিস সেট আপ। রাস্পবেরি পাই জিপিআইও পাঠাগারটি আমদানি করা হয়। যেমন GPIO শুধু আমাদের টাইপিং একটি বিট সংরক্ষণ করতে GPIO যেমন RPi.GPIO পড়ুন দেয়। GPIO পিন মোড বোর্ড সেট করা হয়। আপনাকে এই সেটিংটি ব্যবহার করতে হবে না, তবে জিপিআইও সারিগুলিতে পিনগুলি তাদের অর্ডার দ্বারা উল্লেখ করা আরও সহজ হতে পারে।
পরিশেষে, আমরা সতর্কতাগুলি মিথ্যাতে সেট করি। এটি অপ্রয়োজনীয় সতর্কতা বন্ধ করবে।
পরবর্তী তিনটি লাইন এলইডি নিয়ন্ত্রণ করে। লাল এলইডি জিপিআইও পিনের সাথে সংযুক্ত 18। এটি মনে রাখার পরিবর্তে ভেরিয়েবল লাল অবস্থানটি সংরক্ষণ করবে। এর পরে, GPIO.setup আমাদের প্রোগ্রাম এটি লাল পিন আউট তথ্য পাঠাচ্ছে বলে। অবশেষে, আমরা জিপিআইও সেট করি । লাল পিন এ আউটপুট কম । আপনি যখন এই প্রোগ্রামটি চালাবেন, আলোটি বন্ধ হয়ে যাবে। এটিকে আবার চালু করতে GPIO.HOW এ GPIO.LOW পরিবর্তন করুন এবং আবার প্রোগ্রামটি চালান।
কোডটি সংরক্ষণ করুন, এবং এটি কার্যকর অবস্থায় দেখতে রান ক্লিক করুন। আপনার কোড সম্পাদকে যদি রান বাটন না থাকে তবে এটি সংরক্ষণ করুন এবং টার্মিনাল উইন্ডোতে পাইথন মাইফিলনাম.পি চালান। আপনাকে প্রথমে আপনার নতুন পাইথন ফাইলের মতো একই ডিরেক্টরিতে নেভিগেট করতে হবে। আপনি কীভাবে নিশ্চিত না হন তবে রাস্পবেরি পাই চিট শীটটি পরীক্ষা করে দেখুন।
একের বেশি এলইডি যুক্ত করা হচ্ছে
সাইমন গেমটি তৈরি করতে আমাদের বিভিন্ন রঙের চারটি লাইট প্রয়োজন। আপনি লাল এলইডি সেট আপ করতে একই পদক্ষেপগুলি অন্য তিনটি সেট আপ করতে ব্যবহার করতে পারেন। আপনার তারেরটি নীচের চিত্রের মতো হওয়া উচিত:

আপনার কোডটি দেখতে এমন হওয়া উচিত:
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BOARD)
GPIO.setwarnings(False)
red = 18
yellow = 22
green = 24
blue = 26
GPIO.setup(red, GPIO.OUT)
GPIO.setup(yellow, GPIO.OUT)
GPIO.setup(green, GPIO.OUT)
GPIO.setup(blue, GPIO.OUT)
GPIO.output(red, GPIO.HIGH)
GPIO.output(yellow, GPIO.HIGH)
GPIO.output(green, GPIO.HIGH)
GPIO.output(blue, GPIO.HIGH)
আপনি একবার এলইডি পরীক্ষা করে নিলে প্রত্যেকটি আবার বন্ধ করতে GPIO.output এ GPIO.LOW তে সেট করুন।
যদিও আপনি যে তারের ব্যবহার করেন তার রঙের ক্ষেত্রে কিছু যায় আসে না, বোর্ডটি আরও সহজভাবে পড়তে আপনাকে সহায়তা করার জন্য রঙগুলি র চেষ্টা করুন। উদাহরণস্বরূপ, কালো তারের প্রায়শই স্থল তারের জন্য ব্যবহৃত হয়। এই সার্কিটে, আপনি তারের রঙটি LED আলোর রঙের সাথে মেলাতে চাইতে পারেন।
বাটনগুলির সাহায্যে এলইডি নিয়ন্ত্রণ করছে
আপনার বোর্ডে একটি বোতাম যুক্ত করে শুরু করুন। বোতামটি উভয় স্থল এবং একটি জিপিআইও পিনের সাথে সংযুক্ত হওয়া দরকার। সার্কিটটির দেখতে কিছুটা দেখতে হবে:

বাটনটি একটি এলইডি নিয়ন্ত্রণ করতে, আমাদের কোডে যুক্ত করতে হবে। বোতামটি সেটআপ করা একটি এলইডি সেটআপ করার অনুরূপ, জিপিআইও পিনটি কোনও আউটপুট নয়, একটি ইনপুট হিসাবে সেট করা থাকে। এই কোডটি পাইতে অভ্যন্তরীণ পুল-আপ প্রতিরোধকও সেট আপ করে, যা বোতামটি সঠিকভাবে আচরণ করা প্রয়োজন।
GPIO.setup (32, GPIO.IN, pull_up_down = GPIO.PUD_UP)
এখন আমাদের এমন কোড দরকার যা বোতাম টিপছে কিনা তা পরীক্ষা করে দেখুন।
game = True
while game:
redButtonState = GPIO.input(32)
if redButtonState == 0:
GPIO.output(red, GPIO.HIGH)
time.sleep(1)
GPIO.output(red, GPIO.LOW)
আমরা চাই যে আমাদের প্রোগ্রামটি একটি বোতাম টিপছে কিনা তা পরীক্ষা করে রাখা উচিত, তাই আমরা কিছুক্ষণ লুপ ব্যবহার করি। লুপটি কখনই মিথ্যা হবে না, স্টপ বোতাম টিপুন বা কীবোর্ড শর্টকাট Ctrl + c ব্যবহার করে ম্যানুয়ালি প্রোগ্রামটি শেষ না করা পর্যন্ত এটি চালনা এবং বোতামটি চেক করে রাখে।
এরপরে, ইনপুটটিকে আমাদের বাটন জিপিআইও পিনটি প্রেরণ করার বিষয়টি আরও সহজ করার জন্য আমরা সেই তথ্যটি পরিবর্তনশীল রেডবটনস্টেটে সংরক্ষণ করি। যদি আমাদের বোতামের ইনপুট 0 এ পরিবর্তিত হয়, আমরা জানি যে বোতামটি টিপছিল।
বোতাম টিপলে, লাল এলইডি চালু হবে। তারপরে, এক সেকেন্ডের পরে, এলইডি বন্ধ হয়ে যাবে। এই সময়ে, আমরা সময়.স্লিপ (1) ফাংশনটি ব্যবহার করি । এই কাজটি করতে, আপনাকে আপনার স্ক্রিপ্টের শীর্ষে সময় পাঠাগারটি আমদানি করতে হবে।
একবার একটি বোতাম কাজ করার পরে, আপনি প্রতিটি এলইডি জন্য আরও তিনটি যুক্ত করতে পারেন। আপনার কোডটি দেখতে এমন হওয়া উচিত:
import random
import time
import RPi.GPIO as GPIO
GPIO.setmode (GPIO.BOARD)
GPIO.setwarnings(False)
red = 18
yellow = 22
green = 24
blue = 26
GPIO.setup(red, GPIO.OUT)
GPIO.setup(yellow, GPIO.OUT)
GPIO.setup(green, GPIO.OUT)
GPIO.setup(blue, GPIO.OUT)
GPIO.setup(32, GPIO.IN, pull_up_down=GPIO.PUD_UP)
GPIO.setup(36, GPIO.IN, pull_up_down=GPIO.PUD_UP)
GPIO.setup(38, GPIO.IN, pull_up_down=GPIO.PUD_UP)
GPIO.setup(40, GPIO.IN, pull_up_down=GPIO.PUD_UP)
game = True
while game:
redButtonState = GPIO.input(32)
if redButtonState == 0:
GPIO.output(red, GPIO.HIGH)
time.sleep(1)
GPIO.output(red, GPIO.LOW)
yellowButtonState = GPIO.input(36)
if yellowButtonState == 0:
GPIO.output(yellow, GPIO.HIGH)
time.sleep(1)
GPIO.output(yellow, GPIO.LOW)
greenButtonState = GPIO.input(38)
if greenButtonState == 0:
GPIO.output(green, GPIO.HIGH)
time.sleep(1)
GPIO.output(green, GPIO.LOW)
blueButtonState = GPIO.input(40)
if blueButtonState == 0:
GPIO.output(blue, GPIO.HIGH)
time.sleep(1)
GPIO.output(blue, GPIO.LOW)
আপনার বোর্ডের দেখতে এমন কিছু হওয়া উচিত:

সমস্ত ইলেকট্রনিক্স এখন জায়গায় আছে। আপনার যদি কোনও সমস্যা হয় তবে কোনও ভুলের জন্য আপনার কোডটি দিয়ে দেখুন। মনে রাখবেন, আটকে গেলে আপনি পাস্তবিন থেকে পুরো কোডটি ডাউনলোড করতে পারেন!
গেমটি তৈরি করা হচ্ছে
এই প্রকল্পটি একটি ব্রেডবোর্ড ব্যবহার শুরু করার জন্য আপনার প্রয়োজনীয় সমস্ত বুনিয়াদি ইতিমধ্যে কভার করেছে। কিন্তু এই দক্ষতাগুলিকে একটি গেমে রূপান্তর করা সত্যই আপনি কী করতে পারেন তা প্রদর্শন করবে!
সাইমন, একজন খেলোয়াড় একাধিক লাইট ফ্ল্যাশ দেখতে পান এবং প্যাটার্নটি মনে রাখতে হয়। এটি কেবলমাত্র একটি আলো দিয়ে শুরু হয়। প্রতিটি স্তর খেলাকে আরও শক্ত করতে প্যাটার্নে এলোমেলো আলো যুক্ত করে।
প্যাটার্ন তৈরি করা হচ্ছে
এই পদক্ষেপটি মোটামুটি সহজ। একটি অ্যারে আমাদের হালকা প্যাটার্ন ধরে রাখবে। একটি দ্বিতীয় অ্যারে আমাদের লাইটের জন্য জিপিআইও পিনগুলি সঞ্চয় করবে। প্রতিটি গেম লুপ, একটি নতুন এলোমেলো আলো প্যাটার্ন অ্যারের শেষে যুক্ত হবে। আমরা এলোমেলো ব্যবহার করি । 4 এলইডি প্রতিনিধিত্ব করে 0 এবং 3 এর মধ্যে একটি নম্বর চয়ন করতে র্যান্ডিন্ট () ফাংশন।
pattern = []
lights = [red, yellow, green, blue]
while game:
pattern.append(random.randint(0,3))
এরপরে, প্যাটার্নটি দেখানোর জন্য আমাদের লাইট জ্বালাতে হবে।
while game:
pattern.append(random.randint(0,3))
for x in pattern:
GPIO.output(lights[x], GPIO.HIGH)
time.sleep(1)
GPIO.output(lights[x], GPIO.LOW)
time.sleep(0.5)
দুটি লাইটের মাঝে বিরতি দেওয়া গুরুত্বপূর্ণ। একই আলোটি প্যাটার্নে পিছনে থেকে পিছনে ব্যবহৃত হয়েছে কিনা তা সহজেই দেখায়।
প্লেয়ার ইনপুট পাচ্ছেন
এরপরে, গেমটি খেলোয়াড়ের জন্য লাইটের ক্রমটি অনুমান করার জন্য অপেক্ষা করতে হবে। প্রোগ্রামটি উভয়ই প্যাটার্নে প্রতিটি আলোক পরীক্ষা করতে হবে এবং প্লেয়ারটির জন্য একটি বোতাম টিপতে অপেক্ষা করতে হবে। এর জন্য নেস্টেড লুপগুলি দরকার:
for x in pattern:
waitingForInput = True
while waitingForInput:
redButtonState = GPIO.input(32)
yellowButtonState = GPIO.input(36)
greenButtonState = GPIO.input(38)
blueButtonState = GPIO.input(40)
if redButtonState == 0:
GPIO.output(red, GPIO.HIGH)
waitingForInput = False
time.sleep(1)
GPIO.output(red, GPIO.LOW)
if yellowButtonState == 0:
GPIO.output(yellow, GPIO.HIGH)
waitingForInput = False
time.sleep(1)
GPIO.output(yellow, GPIO.LOW)
if greenButtonState == 0:
GPIO.output(green, GPIO.HIGH)
waitingForInput = False
time.sleep(1)
GPIO.output(green, GPIO.LOW)
if blueButtonState == 0:
GPIO.output(blue, GPIO.HIGH)
waitingForInput = False
time.sleep(1)
GPIO.output(blue, GPIO.LOW)
উপরের কোডগুলির বেশিরভাগটি বোতামগুলি পরীক্ষার জন্য আমরা যে কোডটি লিখেছিলাম তা পুনরায় ব্যবহার করছে।
প্লেয়ারের ইনপুট পরীক্ষা করুন
এখান থেকে, প্লেয়ারটি সঠিক প্যাটার্নে প্রবেশ করেছে কিনা তা পরীক্ষা করা খুব সহজ। প্রতিবার যখন তারা একটি বোতাম টিপছে, গেমটি এটি সঠিক বোতাম কিনা তা পরীক্ষা করতে পারে। এটি করার জন্য, প্রতিটি বোতাম ইনপুটটিতে অন্য বিবৃতি যুক্ত করুন:
if redButtonState == 0:
GPIO.output(red, GPIO.HIGH)
waitingForInput = False
if x != 0:
game = False
time.sleep(1)
GPIO.output(red, GPIO.LOW)
আমাদের জন্য লুপ থেকে পরিবর্তনশীল এক্স এর পরের আলোর সংখ্যা রয়েছে। লাল এলইডি আলো প্রথম অবস্থানে বা ০ নম্বরে রয়েছে the প্লেয়ারটি যদি আমাদের প্যাটার্নে 0 থাকে তবে লাল এলইডি বোতামটি চাপলে তারা ঠিক আছে! তা না হলে তারা খেলাটি হেরে যায়। ভেরিয়েবল গেমটিকে মিথ্যা হিসাবে সেট করা আমাদের গেম লুপটি থামিয়ে প্রোগ্রামটি শেষ করবে।
অভিনন্দন! আপনি স্ক্র্যাচ থেকে একটি গেম নির্মিত!
একটি গেম তৈরি করা এই প্রকল্পে কেবলমাত্র এলইডি এবং বোতাম যুক্ত করার চেয়ে আরও অনেক কোড যুক্ত করেছে। একটি চূড়ান্ত প্রকল্পের দিকে কাজ করা যা আপনি আপনার বন্ধু এবং পরিবারকে প্রদর্শন করতে পারেন আপনাকে অনুপ্রাণিত রাখতে সহায়তা করতে পারে।
এই গেমটি মোটামুটি সহজ। বেসিক নকশাটি উন্নত করার জন্য নিজেকে চ্যালেঞ্জ করুন। প্লেয়ার হারলে সম্ভবত লাইটগুলি ফ্ল্যাশ করতে পারে। সম্ভবত আপনি গেমটিতে শব্দ যুক্ত করতে নিজেকে চ্যালেঞ্জ করতে চান। আপনার কল্পনা মাত্র সীমা!
ঠিক আছে, এটি এবং আপনাকে যে হার্ডওয়্যারটি হস্তান্তর করতে হবে।