کنترل خروجی پایه های GPIO

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

استفاده از پایه های رزبری پای

رزبری پای پایه های GPIO خود را بیش از یک هدر استاندارد بر روی بورد خود ارائه می دهد. در طول سالها تعداد هدرها با نسخه های جدیدتر رزبری پای از 26 پین به 40 پین گسترش یافته است، در حالی که پایه های اصلی را حفظ می کند. اگر به عنوان یک کاربر آردوینو به دنبال استفاده از Raspberry Pi میروید، احتمالا برای اشاره به پینها از یک شماره منحصر به فرد استفاده می کردید. برنامه نویسی سخت افزار Pi بسیار مشابه است، هر پین شماره خود را دارد.

انتخاب مدل ارتباط با پایه ها

حداقل دو طرح شماره متفاوت وجود دارد که شما ممکن است شما بتوانید از آن ها استفاده کنید(همانند بورد های توسعه ای چون nodemcu و یا WeMos): (1) شماره پین اختصاصی تراشه Broadcom

(2) شماره پین فیزیکی P1

شما می توانید از هر یک از روش های بالا استفاده کنید اما می بایست نوع ارتباط با این پین ها را بر اساس نحوه استفاده و فراخوانی تعریف کنید.

آماده سازی

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

import RPi.GPIO as GPIO

پس از وارد كردن ماژول RPi.GPIO، مرحله بعدي اين است كه مشخص كنيد كه به چه روش از دو طرح کنترل پایه ها را می خواهید استفاده کنید: 1- GPIO.BOARD - اعداد ثبت شده بر روی بورد. اعدادی که از شمارش پین در header P1 پیروی می کنند.برای تعیین روش GPIO.BOARD از قطعه کد زیر استفاده کنید:

GPIO.setmode(GPIO.BOARD)

2- GPIO.BCM - شماره پین اختصاصی تراشه Broadcom. این شماره پین ها از سیستم شماره گذاری سطح پایین تعریف شده توسط مغز تراشه Broadcom-Raspberry Pi پیروی می کنند.برای تعیین روش GPIO.BCM از قطعه کد زیر استفاده کنید:

GPIO.setmode(GPIO.BCM)

اگر در گذشته از Arduino استفاده می کردید ، احتمالا با این قضیه آشنایی دارید که قبل از اینکه بتوانید از پایه ها به عنوان یک ورودی یا خروجی استفاده کنید، می بایست در ابتدایی ترین قسمت کد مشخص کنید. برای تنظیم بنابراین، اگر شما می خواهید پین 18 را به عنوان یک خروجی تنظیم کنید، برای مثال می بایست بدین صورت ابتدا این پین را به حالت یک خروجی ببرید، نوشتن کنید:

GPIO.setup(18, GPIO.OUT)

برای فعال سازی و بردن یک پین به وضعیت روشن و یا HIGH می توانید از قطعه کد زیر استفاده کنید:

GPIO.output(18, GPIO.HIGH)
#و یا
GPIO.output(18,1)
#و یا
GPIO.output(18,True)

همچنین برای بردن این پین به وضعیت خاموش و یا LOW می توانید از قطعه کد زیر استفاده کنید:

GPIO.output(18, GPIO.LOW)
#و یا
GPIO.output(18,0)
#و یا
GPIO.output(18,False)

نکته: به یاد داشته باشید که خروجی پایه های روشن 3.3 ولت و پایه های خاموش 0 خواهد بود. همچنین روش هایی برای استفاده از PWM و یا تغییر پایه ها به حالت های pull_up و .. نیز وجود دارد که در پست های مخصوص استفاده خواهیم کرد. و در صورتی که می خواهید از این پایه به عنوان یک ورودی آنالوگ استفاده کنید می بایست این پین را با کد زیر مشخص کنید(نحوه استفاده از این مدل را در یک پست دیگر به صورت کامل شرح خواهم داد.):

GPIO.setup(18, GPIO.INPUT)

کنترل LED با پایتون

مثال کنترل LED یکی از شایعترین مثال ها برای شروع ارتباط با میکروکنترلر ها در زمینه های الکترونیک و IOT می باشد و ما هم همین کار را می کنیم و یک مثال ساده از نحوه کنترل LED را با استفاده از raspberry pi نشان می دهیم. اتصالات مورد نیاز برای انجام این کار به شکل زیر می باشد:(اتصالات را بر اساس کنترل پایه ها با شماتیک BCM انجام خواهیم داد)

برای مثال قطعه کد زیر پایه مورد نظر را به حالت فعال و روشن می برد:

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

#بردن پايه ها به حالت مورد نظر براي استفاده
GPIO.setmode(GPIO.BCM)

#انتخاب و بردن پايه 18 به حالت خروجي
GPIO.setup(18,GPIO.OUT)

#فعال و روشن کردن پايه 18
GPIO.output(18,GPIO.HIGH)

#خروج از حالت برنامه نويسي پايه ها
GPIO.cleanup()

همچنین می توانید با استفاده از قطعه کد زیر پین مورد نظر را به دفعات روشن و خاموش کنید:

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

#اضافه کردن کتابخانه زمان
import time

#بردن پايه ها به حالت مورد نظر براي استفاده
GPIO.setmode(GPIO.BCM)

#انتخاب و بردن پايه 18 به حالت خروجي
GPIO.setup(18,GPIO.OUT)


#غير فعال و خاموش کردن پايه 18
GPIO.output(18,GPIO.LOW)

#ايجاد يک وقفه يک ثانيه
time.sleep(1)

#فعال و روشن کردن پايه 18
GPIO.output(18,GPIO.HIGH)

#ايجاد يک وقفه يک ثانيه
time.sleep(1)

#غير فعال و خاموش کردن پايه 18
GPIO.output(18,GPIO.LOW)

#ايجاد يک وقفه يک ثانيه
time.sleep(1)

#فعال و روشن کردن پايه 18
GPIO.output(18,GPIO.HIGH)

#خروج از حالت برنامه نويسي پايه ها
GPIO.cleanup() 

اگر دوره آموزش زبان برنامه نویسی پایتون را در سایت ما گذرانده باشید می توانید به راحتی با ساخت یک حلقه به دفعات معین این کار را انجام دهید:

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

#اضافه کردن کتابخانه زمان
import time

#بردن پايه ها به حالت مورد نظر براي استفاده
GPIO.setmode(GPIO.BCM)

#انتخاب و بردن پايه 18 به حالت خروجي
GPIO.setup(18,GPIO.OUT)

#ايجاد حلقه تکرار براي 5 بار
for i in range(5):
    #غير فعال و خاموش کردن پايه 18
    GPIO.output(18,GPIO.LOW)

    #ايجاد يک وقفه يک ثانيه
    time.sleep(1)

    #فعال و روشن کردن پايه 18
    GPIO.output(18,GPIO.HIGH)

#خروج از حالت برنامه نويسي پايه ها
GPIO.cleanup() 

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

ثبت دیدگاه
نام *
ایمیل*
دیدگاه *
5دیدگاه
  • jvdMoh
    1 month ago

    سلام درخواست میشه ودیو کار باهاش رو قرار بدهید.
    تشکر فراوان مهندس

  • مهدی اسماعیلیان
    1 year, 10 months ago

    سلام ویدیو های این دوره کی قرار میگیره ؟
    ممنونم از دوره های خوب دیگه تون :)

    • علی بیگدلی
      1 year, 9 months ago

      نظر لطفتونه متشکرم
      ویدئو های دوره ها بر اساس چندین معیار سنجیده و قرار گرفته میشه که یکیش تعداد مخاطب های اون دورس و به علاوه اینکه چه تعداد درخواست ازش باشه، که در حال حاضر شما اولین نفری

    • آرمان عباسی
      1 year, 6 months ago

      سلام ممنون از آموزش های خوبتون من هم دومین درخواست دهنده

    • amirmohamad akbari
      1 year, 2 months ago

      سوم👋