آموزش های کاربردیبایگانی مطالب

ساخت مدار تشخیص واکنش با استفاده از Raspberry Pi

در این آزمایش میخواهیم نحوه ساخت یک مدار تشخیص واکنش را با استفاده از بورد Raspberry Pi به شما آموزش دهیم.

قطعاتی که به آنها نیاز دارید

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

قطعات مورد نیاز

  • رزبری پای


  • برد بورد


  •  LED


  • مقاومت 330 اهم


  • 4 عدد سیم جامپر نری به مادگی


  • 2 عدد سیم جامپر نری به نری


  • 2 عدد دکمه فشاری لمسی


جهت ساخت مدار تشخیص واکنش با Raspberry Pi شامل دو عدد دکمه فشاری و یک LED لمسی می باشد که طبق شکل زیر سیم کشی میکنیم.

ابزار تشخیص با Raspberry Pi

کد های مورد نیاز جهت ساخت ابزار تشخیص واکنش در Raspberry Pi

جهت نگارش برنامه مورد نظر در پایتون، ابتدا کتابخانه های زیر را ایمپورت می نماییم:

from gpiozero import LED, Button
from time import sleep

از آنجا که خروجی بر روی LED ظاهر می شود، متغیر و شماره پین مربوطه به صورت زیر تعریف می شود:

led = LED(4)

دستورات زیر LED را روشن و پس از وقفه 5 ثانیه ای آن را خاموش می نماید.

led.on()
sleep(5)
led.off()

با ذخیره دستورات و اجرای آنها عملکرد LED را بررسی می نماییم.


هدف از این مدار تعیین فردی است که زودتر دکمه را می فشارد. اگر طول مدت روشن بودن LED به صورت تصادفی باشد، جالب تر خواهد بود. بدین منظور از تابع uniform استفاده می شود که یک عدد تصادفی بین دو عدد را بر می گرداند. بنابراین دستور sleep(5) به sleep(uniform(5, 10)) تغییر می نماید.

در ادامه میخواهیم زمان فشرده شدن دکمه و اینکه چه کسی زودتر دکمه را فشرده است مشخص نماییم. برای این منظور دو دستور زیر پس از تعریف متغیر LED اضافه می شود:

right_button = Button(15)
left_button = Button(14)

کد برنامه به صورت زیر خواهد بود:

from gpiozero import LED, Button
from time import sleep
from random import uniform

led = LED(4)
right_button = Button(15)
left_button = Button(14)

led.on()
sleep(uniform(5, 10))
led.off()

در انتهای کد تابعی که با فشردن دکمه اجرا خواهد شد اضافه می شود که نشان می دهد که کدام پین دکمه فعال شده است.

def pressed(button):
        print(str(button.pin.number) + ' won the game')

در انتها با فشردن دکمه تابع فراخوانی خواهد شد. با فشردن right_button می توانید رشته right و با فشردن left_button رشته left را به تابع pressed  ارسال کنید.


کد نهایی برنامه به صورت زیر خواهد بود:

from gpiozero import LED, Button
from time import sleep
from random import uniform

led = LED(4)
right_button = Button(15)
left_button = Button(14)

led.on()
sleep(uniform(5, 10))
led.off()


def pressed(button):
        print(str(button.pin.number) + ' won the game')
    exit()



right_button.when_pressed = pressed
left_button.when_pressed = pressed

به جای اعلام شماره پین دکمه ای که زودتر فشرده شده است، می توان با استفاده از تابع input نام افراد را دریافت و با تغییر تابع pressed به صورت زیر، نام فرد پیروز را نمایش داد:

from gpiozero import LED, Button
from time import sleep
from random import uniform
from sys import exit

led = LED(4)
right_button = Button(15)
left_button = Button(14)

left_name = input('left player name is ')
right_name = input('right player name is ')

led.on()
sleep(uniform(5, 10))
led.off()


def pressed(button):
        if button.pin.number == 14:
               print(left_name + ' won the game')
        else:
               print(right_name + ' won the game')
        exit()

right_button.when_pressed = pressed
left_button.when_pressed = pressed

منبع

این مقاله چطور بود ؟
+1
1
+1
20
+1
11
مشاهده بیشتر

محمد حسنی

علاقمند به حوزه IoT و الکترونیک. در حال حاضر به مدت یکسال است که در تیم سخت افزار سازان نام آور به تولید محتوا مشغول هستم.

نوشته های مشابه

دیدگاهتان را بنویسید

دکمه بازگشت به بالا