Raspberry Pi Pico দিয়ে গেম তৈরি

রাসবেরি পাই পিকো সিরিজ টিউটোরিয়ালের এই পর্বে Raspberry Pi Pico দিয়ে গেম তৈরি করার পদ্ধতি আলোচনা করব। হালের ক্রেজ ChatGpt’র সাথে আলাপ হয়েছে? ChatGpt কিন্তু আমাদের সাথে কয়েকটি গেমও খেলতে পারে। এর মধ্যে একটি হল, Number game । এক্ষেত্রে চ্যাটজিপিটি একটি সংখ্যা চিন্তা করে এবং আপনাকে সংখ্যাটি ধরতে বলে। ধরে ফেলতে পারলে আপনি জিতবেন। ছোটবেলায় বন্ধুবান্ধবের সাথেও আমরা এরকম কিছু গেম খেলতাম। আজকে এরকম একটা নাম্বার গেম আমরা তৈরী করব, Raspberry Pi Pico দিয়ে। গেমটিতে Raspberry Pi Pico একটি সংখ্যা ভাববে এবং আপনাকে সংখ্যাটি জিজ্ঞেস করবে। আপনার উত্তর তার চিন্তা করা সংখ্যার সাথে মিলেছে নাকি মেলেনি, না মিললে তার চিন্তা করা সংখ্যাটি আসলে কত ছিল, তা-ও জানিয়ে দেবে প্রতিবার খেলা শেষে।

Raspberry Pi Pico দিয়ে গেম তৈরির এক্সপেরিমেন্টে আমরা যা যা শিখতে পারব:

  • কিভাবে micropython programming language ব্যবহার করে 4×4 Keypad Matrix এর মাধ্যমে Raspberry Pi Pico তে সংখ্যা ইনপুট দিতে হয়। এটি জানা জরুরি। কারণ, রাসবেরি পাই পিকো দিয়ে ক্যালকুলেটর, পাসওয়ার্ডভিত্তিক যেকোনো ডিভাইস তৈরী করতে হলে করতে হলে কিপ্যাড ব্যবহার করতেই হবে।
  • একটি 16×2 LCD কে কিভাবে Raspberry Pi Pico এর সাথে সংযুক্ত করতে হয়।
  • কিভাবে micropython programming language ব্যবহার করে LCD তে ইংরেজি বর্ণ, সংখ্যা প্রিন্ট করা যায়।
  • Micropython/Python এর মাধ্যমে Random number generation
  • Micropython/Python এর মাধ্যমে String to int conversion
প্রয়োজনীয় যন্ত্রপাতি পরিমাণ প্রোডাক্ট লিংক
Raspberry Pi Pico with header 1 লিংক
16×2 LCD with header 1 লিংক
4×4 Keypad Matrix (Flat Button) 1 লিংক
Volume resistor POT-10K 1 লিংক
Breadboard 1 লিংক
Male to male jumpers 12 লিংক
Male to female jumpers 8 লিংক
Micro USB cable 1 লিংক

সার্কিট কানেকশন?

নিচের সার্কিটটি ব্রেডবোর্ডে তৈরী করুন।

Raspberry Pi Pico এর সাথে ব্রেডবোর্ডের সার্কিট কানেকশন

Raspberry Pi Pico 16×2 LCD with header
40 VDD,A,1st pin of the 10K POT
38 VSS,K,RW,2nd pin of the 10K POT
21 RS
22 E
24 D4
25 D5
26 D6
27 D7
Vo,3rd pin of the 10K POT

4×4 keypad Matrix ও Raspberry Pi Pico এর মধ্যে নিচের কানেকশনটি সম্পন্ন করুন।

4x4 keypad Matrix ও Raspberry Pi Pico এর মধ্যে কানেকশন

Rascpberry Pi Pico 4×4 Keypad Matrix
12 R1
11 R2
10 R3
9 R4
7 C1
6 C2
5 C3
4 C4

Raspberry Pi Pico দিয়ে গেম তৈরির পুরো সেটআপ ছিল এরকম: 

Raspberry Pi Pico, Breadboard, Display, এবং 4x4 keypad Matrix এর পুরো সেটআপ

কোড:

  • কোড লেখা এবং আপলোড করার জন্য আমরা Thonny IDE ব্যবহার করব।
  • প্রথমে নিচের ফাইলদুটি ডাউনলোড করুন।
  • এবার Thonny IDE ব্যবহার করে ফাইলদুটি Raspberry Pi Pico তে Save করুন।

Thonny IDE-1

Thonny IDE-2

  • এবার নতুন একটি প্রজেক্ট ওপেন করুন।
  • নিচের কোডটি লিখুন।
import random
import machine
import utime
from machine import Pin
from gpio_lcd import GpioLcd


lcd = GpioLcd(rs_pin=Pin(16),
              enable_pin=Pin(17),
              d4_pin=Pin(18),
              d5_pin=Pin(19),
              d6_pin=Pin(20),
              d7_pin=Pin(21),
              num_lines=2, num_columns=16)

# Create a map between keypad buttons and characters
matrix_keys = [['1', '2', '3', 'A'],
               ['4', '5', '6', 'B'],
               ['7', '8', '9', 'C'],
               ['*', '0', '#', 'D']]

# PINs according to schematic - Change the pins to match with your connections
keypad_rows = [9,8,7,6]
keypad_columns = [5,4,3,2]

# Create two empty lists to set up pins ( Rows output and columns input )
col_pins = []
row_pins = []

# Loop to assign GPIO pins and setup input and outputs
for x in range(0,4):
    row_pins.append(Pin(keypad_rows[x], Pin.OUT))
    row_pins[x].value(1)
    col_pins.append(Pin(keypad_columns[x], Pin.IN, Pin.PULL_DOWN))
    col_pins[x].value(0)

##############################Scan keys ####################

print("Please enter a key from the keypad")
lcd.putstr("Let's play number game")
utime.sleep(1)
lcd.clear()
lcd.putstr("What number am I thinking?")

def scankeys():
    for row in range(4):
        for col in range(4):
            row_pins[row].high()
            key = None

            if col_pins[col].value() == 1:
                random_number1 = random.randint(0, 9)
                random_number=str(random_number1)
                print("You have pressed:", matrix_keys[row][col])
                key_press = matrix_keys[row][col]
                lcd.clear()
                lcd.putstr(key_press)
                utime.sleep(0.3)

                if(random_number==key_press):
                    lcd.clear()
                    lcd.putstr("Right answer!")
                    print(random_number1)
                    utime.sleep(1)
                    lcd.clear()
                    lcd.putstr("What number am I thinking?")

                else:
                    lcd.clear()
                    lcd.putstr("Sorry it's ")
                    lcd.putstr(random_number)
                    print(random_number1)
                    utime.sleep(1)
                    lcd.clear()
                    lcd.putstr("What number am I thinking?")


            row_pins[row].low()

while True:
    scankeys()
  • কোডটি Run করুন।
  • খেলা শুরু হয়ে গেছে।

নাম্বার গেম খেলা শুরু হয়ে গেছে

  • নাম্বার ইনপুট দিন।

নাম্বার গেমে নাম্বার ইনপুট দেওয়া

  • উত্তর যখন ভুল

গেম খেলায় উত্তর যখন ভুল দেখায়

  • উত্তর সঠিইইইইক!

রেফারেন্সঃ Vernon Peens-Github

উত্তর যখন সঠিক হয় নাম্বার গেমে

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

TSBlog
TSBlog

2 Comments

  1. এই টিউটোরিয়াল-এ ChatGPT এর সাথে সম্পৃক্ততা কি? Random Number তো library থেকে জেনারেট করা হয়েছেঃ
    random_number1 = random.randint(0, 9)
    random_number=str(random_number1)

    ChatGPT এর কাজ কি এখানে?

    • চ্যাট জিপিটির সাথে সম্পৃক্ত এই কথা কোথাও লেখা হয়নি। চ্যাট জিপিটি এরকম নাম্বার ধরার একটা গেম শুরুর দিকে খেলতো। ওই একই গেম এই প্রজেক্টে তৈরী করা হয়েছে। ইন্ট্রোতে এই কথাটাই লেখা

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.