পর্ব ২ঃ পুশ বাটন ইন্টারফেসিং।

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

মূলনীতিঃ

এক্ষেত্রে, প্রজেক্টে রাসবেরি পাইয়ের যে দুটি পিনের সাথে বাটন যুক্ত থাকবে সেই দুটি পিনকে ইনপুট এবং যে দুটি পিনের সাথে দুটি এলইডি যুক্ত হবে সেই দুটি পিনকে আউটপুট হিসেবে ডিক্লেয়ার করব।

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

এই টিউটোরিয়াল শুরু করার আগে আপনাকে অবশ্যই রাসবেরি পাই পরিচিতি নামক টিউটোরিয়ালটি পড়ে আসতে হবে। একটি রাসবেরি পাইকে সচল করতে কী কী প্রয়োজন তা উপরোল্লেখিত টিউটোরিয়ালে ইতোমধ্যে আলোচনা করা হয়েছে। এগুলো ছাড়াও আমাদের এই টিউটোরিয়ালের জন্য যা যা লাগবে সেগুলো হল-

প্রয়োজনীয় যন্ত্রপাতিপরিমান
Breadboard1
330 ohm resistor4
Male to Female jumpers7
Male to male jumpers2
LED-Yellow1
LED-Blue1
Push switch2

সার্কিট :

নিচের ডায়াগ্রাম অনুযায়ী সার্কিটের কানেকশন দিন।

কানেকশনটি চার্ট আকারেও নিচে দেওয়া হল।

Raspberry piComponents
PIN 8One pin of the Button for yellow LED (Connected to GND through a 330 ohm resistor)
PIN10Yellow LED( Through 330 ohm resistor)
PIN11One pin Button for blue LED(Connected to GND through a  330 ohm resistor)
PIN12Blue LED( Through 330 ohm resistor)
VCCOther 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-এও এলইডির পরিবর্তন এবং একেকটি সুইচ কতবার প্রেস করা হয়েছে তা দেখা যাবে।

Leave a Reply

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