Chapter 2: Push button interfacing with Raspberry pi | পর্ব ২ঃ পুশ বাটন ইন্টারফেসিং।
আগের আলোচনা থেকে আমরা জেনেছি যে রাসবেরি পাই থ্রি তে মোট ৪০টি জিপিআইও পিন আছে। এই জিপিআইও পিনগুলোকে ইনপুট এবং আউটপুট দুই হিসেবেই কনফিগার করা যায়। এই প্রজেক্টে আমরা দুটি পুশ বাটনকে রাসবেরি পাইয়ের সাথে ইন্টারফেস করে দুটি এলইডিকে অন-অফ করব। একেকটি সুইচ কতবার প্রেস করা হল সেই হিসাবও রাখব।
মূলনীতিঃ
এক্ষেত্রে, প্রজেক্টে রাসবেরি পাইয়ের যে দুটি পিনের সাথে বাটন যুক্ত থাকবে সেই দুটি পিনকে ইনপুট এবং যে দুটি পিনের সাথে দুটি এলইডি যুক্ত হবে সেই দুটি পিনকে আউটপুট হিসেবে ডিক্লেয়ার করব।
বাটন দুটিকে আমরা পুলডাউন করে রাখব। অর্থ্যাৎ , বাটনের যে প্রান্ত জিপিআইও পিনের সাথে সংযুক্ত সেই প্রান্তকে একটি রেজিস্টরের মাধ্যমে গ্রাউন্ডের সাথে কানেক্ট করে রাখব। বাটনের অপরপ্রান্ত সংযুক্ত করে রাখব রাসবেরি পাইয়ের 5 ভোল্ট পিনের সাথে। বাটন প্রেস করলে সংশ্লিষ্ট জিপিআইও পিনের লজিক হাই হবে এবং রাসবেরি পাই বুঝতে পারবে বাটনটি প্রেস করা হয়েছে। সেই অনুযায়ী দুটি ভিন্ন বাটন দ্বারা দুটি ভিন্ন রংয়ের এলইডি অন-অফ করা যাবে।
এই টিউটোরিয়াল শুরু করার আগে আপনাকে অবশ্যই রাসবেরি পাই পরিচিতি নামক টিউটোরিয়ালটি পড়ে আসতে হবে। একটি রাসবেরি পাইকে সচল করতে কী কী প্রয়োজন তা উপরোল্লেখিত টিউটোরিয়ালে ইতোমধ্যে আলোচনা করা হয়েছে। এগুলো ছাড়াও আমাদের এই টিউটোরিয়ালের জন্য যা যা লাগবে সেগুলো হল-
প্রয়োজনীয় যন্ত্রপাতি | পরিমান |
Breadboard | 1 |
330 ohm resistor | 4 |
Male to Female jumpers | 7 |
Male to male jumpers | 2 |
LED-Yellow | 1 |
LED-Blue | 1 |
Push switch | 2 |
সার্কিট :
নিচের ডায়াগ্রাম অনুযায়ী সার্কিটের কানেকশন দিন।
কানেকশনটি চার্ট আকারেও নিচে দেওয়া হল।
Raspberry pi | Components |
PIN 8 | One pin of the Button for yellow LED (Connected to GND through a 330 ohm resistor) |
PIN10 | Yellow LED( Through 330 ohm resistor) |
PIN11 | One pin Button for blue LED(Connected to GND through a 330 ohm resistor) |
PIN12 | Blue LED( Through 330 ohm resistor) |
VCC | Other two pins of the two buttons. |
প্রোগ্রামঃ
আমাদের প্রোগ্রামটি লিখতে ব্যবহার করা হয়েছে IDLE 3.4.2
import time
import RPi.GPIO as GPIO
yellow_button_switch = 8
blue_button_switch=11
yellow_LED_Pin = 10
blue_LED_Pin=12
a=0
b=0
yellow_previous_state = 0
yellow_present_state = 0
blue_previous_state=0
blue_present_state=0
GPIO.setmode(GPIO.BOARD)
GPIO.setup(yellow_button_switch, GPIO.IN)
GPIO.setup(blue_button_switch, GPIO.IN)
GPIO.setup(yellow_LED_Pin, GPIO.OUT)
GPIO.setup(blue_LED_Pin, GPIO.OUT)
while True:
yellow_input_value = GPIO.input(yellow_button_switch)
blue_input_value = GPIO.input(blue_button_switch)
if((yellow_input_value == True) and (yellow_previous_state == False)):
a=a+1
print ('Number of press on yellow button switch=')
print (a)
if(yellow_present_state == False):
print ('Yellow LED is ON')
yellow_present_state=True
else:
print('Yellow LED is OFF')
yellow_present_state=False
time.sleep(0.00002)
GPIO.output(yellow_LED_Pin,yellow_present_state)
yellow_previous_state = yellow_input_value
if((blue_input_value == True) and (blue_previous_state == False)):
b=b+1
print ('Number of press on blue button switch=')
print (b)
if(blue_present_state==False):
print('Blue LED in on')
blue_present_state=True
else:
print('Blue LED in OFF')
blue_present_state=False
time.sleep(0.00002)
GPIO.output(blue_LED_Pin,blue_present_state)
blue_previous_state=blue_input_value
GPIO.Cleanup()
নোটঃ কোডটি এখান থেকে কপি-পেস্ট করে পাইথন শেলে লিখলে সবার শেষে Twitter highlighter লেখা দেখা যেতে পারে। কোড রান করার আগে অবশ্যই সেটা কেটে দিয়ে সেভ করতে হবে।
কোডটি রান করার পর কোড অনুযায়ী একেকটি পুশ বাটন একেকবার প্রেস করলে একেকটি এলইডি জ্বলবে অথবা নিভবে। command prompt-এও এলইডির পরিবর্তন এবং একেকটি সুইচ কতবার প্রেস করা হয়েছে তা দেখা যাবে।