آموزش رزبری پای با پایتون – قسمت دوم – GPIO – کنترل چراغ به کمک دکمه

0
229
آموزش رزبری پای با پایتون – قسمت دوم – GPIO – کنترل چراغ به کمک دکمه
GPIO رزبری و LED

سلام به همه.

امروز میخوایم با هم بررسی کنیم چطوری با GPIO رزبری یه LED رو با استفاده از یه دکمه خاموش و روشن کنیم.

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

وسایل مورد نیاز:

۱− رزبری پای (من از رزبری ۴ استفاده کردم)

۲− یدونه LED (رنگش مهم نیست)

۳− یدونه مقاومت ( من از ۲۲۰ استفاده کردم)

۴− دکمه (من از دکمه Push Up استفاده کردم)

۵− سه عدد سیم نر و ماده (ترجیحا با رنگ های متفاوت)

۶− دو عدد سیم دو سر نر

۷− برد بورد (کوچیک و بزرگش فرقی نداره)

اول از همه بیاید تا  این تصویر که نشون دهنده raspberry pi gpio pinout هست رو نگاه کنیم.

raspberry pi gpio pinout

همون طور که میبینید پین شماره ۶ میشه Ground یا همون منفی و پین های شماره ۷ و ۱۱ رزبری پای به ترتیب میشه GPIO 4 و GPIO 17 .

یدونه از سیم های نر و ماده را توی پین شماره ۶ که همون Ground میشه میزنیم و سر دیگه او رو توی پورت ردیف منفی یا همون Ground برد بورد وصل میکنیم.

حالا LED رو برمیداریم و سر منفی اون رو به پورت شماره G28 و G24 برد بود وصل میکنیم. بعدش یدونه سیم های دو سر نر رو از ردیف منفی برد بورد به پورت F28 برد بورد وصل میکنیم (ینی یه سر سیم توی ردیف منفی و سر دیگه توی شماره F28). نوبت به مقاومت میرسه. مقاومت رو برمیداریم و یه سر اون رو توی پورت H24 و سر دیگه رو توی پورت H18 وصل میکنیم.

حالا یدونه دیگه از سیم های نر و ماده رو برمیداریم و توی پین شماره ۷ رزبری وصل میکنیم و سر دیگه اون رو توی پورت شماره G18 برد بورد وصل میکنیم. دیگه نوبت دکمه شده که اون رو روی بردبورد جایگذاری کنیم. به این عکس دقت کنید:

توی گذاشتن دکمه روی برد بورد باید به این نکته دقت داشت که باید طوری دکمه رو توی برد بورد بزاریم که A و C توی پورت های E6 و E8 برد بورد و B و D توی پورت های شماره F6 و F8 باشه.

بعد از اینکه دکمه رو توی برد بورد گذاشتیم باید یدونه از سیم های نر و ماده رو به پین شماره ۱۱ و سر دیگه اون رو به پورت شماره H6 وصل میکنیم. بعدش یدونه سیم های دوسر نر رو از ردیف منفی به پورت H8 برد بورد وصل میکنیم. تبریک میگم. سیم کشی ها تموم شد. حالا بیاید با هم بریم کد بزنیم.

توی رزبری یه محیط ویرایشگر متن برای برنامه نویسی نیاز داریم که اینجا من از nano استفاده میکنم. شما میتونید از هر ویرایشگر متنی که خواستید استفاده کنید. یه فایل به نام button.py ایجاد کرده و اون رو باز میکنیم و شروع به کد نویسی توی اون میکنیم.

import RPi.GPIO as GPIO 
from time import sleep

همون طور که از قبل میدونید توی این دو خط کد کتابخونه یا ماژول مربوط بر برنامه نویسی رزبری و کتابخونه تایم رو وارد رزبری کردیم.

GPIO.setmode(GPIO.BCM)

توی این خط اصطلاحا اومدیم و set mode کردیم رزبری رو.

sleep_time=0.1
light_pin=4
button_pin=17

ین سه خط هم به ترتیب گفتیم میخوایم ۰.۱ ثانیه تاخیر داشته باشیم(جلو تر میفهمیم چرا)، LED توی پین شماره ۴ و دکمه توی پین شماره ۱۷ رزبری پای وصله.

GPIO.setup(light_pin,GPIO.OUT)
GPIO.setup(button_pin,GPIO.IN,pull_up_down=GPIO.PUD_UP)

خط اول گفتیم اون که LED بهش وصله (همون پین شماره ۷ که میشد GPIO 4 رزبری) رو میخوایم به عنوان خروجی ازش استفاده کنیم و خط بعدی گفتیم که میخوایم از پین که دکمه رو بهش وصل کردیم (همون پین شماره ۱۱ که میشه GPIO 17 ) به عنوان خروجی استفاده کنیم.

while True:
if GPIO.input(button_pin):
GPIO.output(light_pin,0)
else:
GPIO.output(light_pin,1)

sleep(sleep_time)

حالا توی یه حلقه اومدیم و هر ۰.۱ ثانیه یکبار چک میکنیم که اگه دکمه فشره شده بود چراغ رو روشن و در غیر این صورت چراغ رو خاموش کن.

دقت کنید که تا زمانی که دکمه پایین نگه داشته شود چراغ روشن مانده و زمانی که دکمه رها شود، چراغ خاموش میشود.

کد کامل که استفاده کردیم به این صورته:

import RPi.GPIO as GPIO 
from time import sleep

GPIO.setmode(GPIO.BCM)
sleep_time=0.1

light_pin=4
button_pin=17

GPIO.setup(light_pin,GPIO.OUT)
GPIO.setup(button_pin,GPIO.IN,pull_up_down=GPIO.PUD_UP)

while True:
if GPIO.input(button_pin):
GPIO.output(light_pin,0)
else:
GPIO.output(light_pin,1)

sleep(sleep_time)

به همین سادگی و به همین خوشمزگی ما با استفاده از یه دکمه LED رو خاموش و روشن کردیم.

اشکالی که این کد داره اینه که در صورتی که LED روشن باشه و ما برنامه رو از حالت اجرا دربیاریم LED روشن میمونه و اصطلاحا GPIO خالی نمیشه. برای اینکه این مشکل رو حل کنیم کد خودمون رو به صورت زیر تغییر میدیم:

import RPi.GPIO as GPIO 
from time import sleep

GPIO.setmode(GPIO.BCM)
sleep_time=0.1

light_pin=4
button_pin=17

GPIO.setup(light_pin,GPIO.OUT)
GPIO.setup(button_pin,GPIO.IN,pull_up_down=GPIO.PUD_UP)
try:


while True:
if GPIO.input(button_pin):
GPIO.output(light_pin,1)
else:
GPIO.output(light_pin,0)

sleep(sleep_time)
finally:
GPIO.cleanup()

همون طور که ما به سادگی هرچه تمام تر ما LED رو با استفاده از یدونه دکمه خاموش و روشن کردیم.

امیدوارم که خوشتون اومده باشه.

 

 

 

منبع:سیسوگ

مطلب قبلیکار با ماژول تمام عیار mc60 – قسمت هشتم – کدنویسی با Eclipse
مطلب بعدیآموزش مقدماتی الکترونیک برای مبتدیان به زبان ساده – قسمت صفر

پاسخ دهید

لطفا نظر خود را وارد کنید!
لطفا نام خود را در اینجا وارد کنید