کنترل ورودی پایه های GPIO

  • مدرس: علی بیگدلی
  • تاریخ انتشار: Aug 25, 2020

کنترل پایه ورودی رزبری پای

در قسمت قبلی با نحوه روشن کردن یک LED توسط یک قطعه کد آشنا شدید و حال در این قسمت با نحوه استفاده از پایه های رزبری به عنوان یک ورودی آشنا خواهید شد. اما بر خلاف گذشته که از طریق کد پایه های خروجی به LED را کنترل می کردید این بار قرار است که از طریق اتصال کلیدی به یکی از پایه ها و ارتباط دادن کلید به LED این کار را انجام دهید. برخی مواقع کلیدی که خریداری می کنید دارای 4 پین و یا بعضی ها 2 پین هستند. پس نحوه اتصال هر دو مدل را می توانید در تصویر زیر مشاهده کنید.

اتصالات

نکته:طبق شماتیک اتصالات عمل کنید و فقط در نظر داشته باشید که اتصالات اشتباه و بدون استفاده از مقاومت می تواند برای رزبری شما مشکل ایجاد کند. سعی کنید برای دفعات اول رزبری را خاموش کنید و سپس پس از برقراری اتصالات آن را روشن نمایید.

قطعه کد

طبق آموزش قبلی برای اینکه از یک پایه بتوانید استفاده کنید، ابتدا می بایست نحوه تاثیر پذیری و حالتش را با استفاده از تابع GPIO.setup مشخص نمایید. همچنین اینکه شماتیک اتصالات را نیز در نظر داشته باشید که بر اساس پایه های BCM است و یا GPIOBOARD.

برای اینکه یک پایه را به حالت ورودی ببرید از قطعه کد زیر استفاده می کنید. که دارای دو آرگومان است. جایگاه اولی برای مشخص کردن پین مورد نظر و جایگاه دوم مشخص کردن حالت آن می باشد. برای تنظیم یک پین به حالت ورودی برای کنترل یک کلید دو حالت وجود دارد. اول استفاده از GPIO.IN, pull_up_down=GPIO.PUD_UP که به عنوان یک pull_up_resistor ازش استفاده میشه و فعال سازی پایه را بر حسب LOW شدن پایه قرار می دهد و یا استفاده از GPIO.IN به صورت عادی که وضعیت آن را بر اساس پیشفرض سخت افزاری در نظر می گیرد.

#بردن پایه به حالت ورودی
#حالت اول استفاده
GPIO.setup(PIN, GPIO.IN, pull_up_down=GPIO.PUD_UP)
#حالت دوم استفاده 
GPIO.setup(PIN,GPIO.IN)

پس از اینکه پایه مورد نظر مشخص شد می بایست وضعیت پایه را در جایی ذخیره و آن را خواند و مورد بررسی قرار داد. (دید کلی این اتصالات برای این است که در نظر داشته باشیم در هنگام فشار دادن کلید وضعیت کلید تغییر کند و همزمان با آن وضعیت LED نیز از خاموش به روشن در آید)

# ذخیره وضعیت فعلی پایه مورد نظر در یک متغیر که به صورت درست و غلط خواهد بود
button_state = GPIO.input(PIN)

حال که با ساختار اصلی آشنا شدیم می توانیم بدنه کد را بنویسیم که با حلقه ای دائم در حال چک کردن وضعیت کلی دستگاه است. در این حلقه شرطی تعیین شده است تا در صورت تغییر وضعیت پایه ورودی کلید ، LED مد نظر را به حالت روشن در آورد.

#اضافه کردن کتابخانه کنترل پایه های رزبری
import RPi.GPIO as GPIO
#اضافه کردن کتابخانه زمان
import time

#بردن شماتیک اتصالات بورد به حالت تعیین شده
GPIO.setmode(GPIO.BCM)

#مشخص کردن وضعیت ورودی پایه مورد نظر که به کلید منتهی است
GPIO.setup(14, GPIO.IN, pull_up_down=GPIO.PUD_UP)
#مشخص کردن وضعیت پایه خروجی مورد نظر که به چراغ متصل است
GPIO.setup(15, GPIO.OUT)  

#حلقه تکرار تشخیص وضعیت کلید
while True:
   #جایگذاری وضعیت کلید در متغیر
   button_state = GPIO.input(14)
   #شرط بررسی وضعیت کلید
   if button_state == False:
      #تغییر وضعیت پین مورد نظر برای روشن کردن چراغ
      GPIO.output(15, True)
      #ایجاد وقفه برای اعمال
      time.sleep(0.2)
   #اجرای قسمت دوم شرط در صورت فشرده نشدن کلید
   else:
       #غیر فعال کردن پایه چراغ و خاموش ماندن
       GPIO.output(15, False)
GPIO.cleanup()

 

ثبت دیدگاه
نام *
ایمیل*
دیدگاه *
captcha
0دیدگاه