آموزش رزبری پایپروژه رزبری پای

راه اندازی صفحه کلید لمسی (تاچ پد) با رزبری پای و پایتون

سلام. راه اندازی صفحه کلید لمسی (تاچ پد) با Raspberry Pi (آموزش رزبری پای #11) را آماده کردیم.

آموزش اتصال کیبورد لمسی به رزبری پای

در این آموزش رزبری پای، ما یک تاچ پد خازنی را به Raspberry pi متصل میکنیم. صفحه کلید خازنی ما دارای 8 کلید است. این کلید ها در اصل صفحه های قابل لمسی هستند که روی PCB قرار گرفته اند. وقتی یکی از کلید ها لمس شوند، خازن ها تحریک میشوند و باعث تغییر ولتاژ در آن ها میشود. هنگامی که این تغییر ولتاژ رخ دهد، واحد کنترل تاچ پد این موضوع را متوجه میشود و یک پین خروجی را High میکند.

در قسمت قبلی آموزش رزبری پای ما به طور کامل با آنالوگ به دیجیتال آشنا شدیم. توجه داشته باشید در مورد پین های GPIO در آموزش های قبل بحث کردیم پس برای درک بهتر مطالب پیشنهاد میشود آموزش ها را از ابتدا بخوانید.

نکته مهم در اجرای این پروژه این است که پین های GPIO رزبری پای تحمل ولتاژ بیشتر از 3.3 را ندارند و اگر به پین ها ولتاژ بیشتر به طور مثال 5 ولت بدهید، برد Raspberry pi شما آسیب میبینید. بنابراین برای بدست آوردن خروجی های مناسب برای رزبری پای، باید از صفحه کلید لمسی خازنی 3.3 ولت استفاده کنیم.

برای یادگیری آردوینو (برنامه نویسی، ساخت ربات، ارتباط با اندروید) روی دوره آموزش آردوینو کلیک کنید.
برای یادگیری کامل الکترونیک روی دوره آموزش الکترونیک کلیک کنید.

فیلم زیر به شما در درک نحوه عمل این کد و پروژه کمک میکند.

این آموزش را نیز با استفاده از یک پروژه به پیش میبریم.

مدار راه اندازی تاچ پد با رزبری پای

در اینجا ما از رزبری پای 2 Model B با سیستم عامل Raspbian Jessie استفاده می کنیم. در قسمت های قبل، در مورد کلیه نیازهای اولیه سخت افزار و نرم افزار بحث کرده ایم. تصویر زیر شماتیک مدار پروژه را نشان میدهد. همانطور که در تصویر زیر میبنید، برای این پروژه به قطعات خاصی احتیاج نداریم.

شماتیک مدار  کیبرد لمسی با رزبری پای

اتصالات تاچ پد خازنی با Raspberry pi در شماتیک بالا نشان داده شده است.

قطعات مورد نیاز را از فروشگاه قطعات آیرنکس تهیه کنید.

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

آموزش اتصال کیبورد لمسی به رزبری پای

وقتی همه چیز را مانند شماتیک مدار متصل کردید، می توانیم Raspberry Pi را روشن کنیم تا برنامه را در پایتون (PYHTON) بنویسیم. کد کامل در انتهای صفحه قرار داده شده است. در اینجا در مورد قسمت های مهم کد صحبت میکنیم.

ما میخواهیم پرونده GPIO را از کتابخانه وارد کنیم. کد زیر باعث میشود بتوانیم پین های GPIO برد رزبری پای را برنامه ریزی کنیم. همچنین مانند قسمت قبلی آموزش، نام GPIO را به IO تغییر میدهیم. و هر بار بخواهیم به پین های GPIO مراجعه کنیم از کلمه IO استفاده میکنیم.

import RPi.GPIO as IO

بعضی اوقات، پین ​​های GPIO که سعی در استفاده از آنها داریم، ممکن است عملکردهای دیگری را انجام دهند. در این حالت، هنگام اجرای برنامه، هشدارهایی دریافت خواهیم کرد. دستور زیر به PI می گوید هشدارها را نادیده گرفته و به برنامه ادامه دهد.

IO.setwarnings(False)

ما می توانیم پین های GPIO رزبری پای یا شماره پین آن یا شماره GPIO آن ها وارد کنیم. به طور مثال پین 35 روی برد Raspberry pi، همان پین GPIO 19 است. بنابراین ما میتوانیم آن را با 19 یا 35 معرفی کنیم.

IO.setmode (IO.BCM)

ما 8 پین را به عنوان پین ورودی تنظیم می کنیم. ما وضعیت 8 کلید صفحه کلید را توسط این 8 پین بررسی میکنیم.

همچنین اگر در مورد این مطلب سوالی داشتید در انتهای صفحه در قسمت نظرات بپرسید
IO.setup(21,IO.IN)
IO.setup(20,IO.IN)
IO.setup(16,IO.IN)
IO.setup(12,IO.IN)
IO.setup(25,IO.IN)
IO.setup(24,IO.IN)
IO.setup(23,IO.IN)
IO.setup(18,IO.IN)

سپس برای هر پین، یک شرط تعیین میکنیم. به طور مثال برای پین GPIO 21 مینویسیم که فقط اگر این پین High شد، دستورات مربوطه یک بار اجرا شوند. توجه داشته باشید پین 21 طبق مدار، مربوط به کلید 8 است.

    if (IO.input(21) == True): // اکر پین 21 فعال شد
        time.sleep(0.001) // تاخیر میلی ثانیه 0.001
        if (IO.input(21) == True):  // اکر پین 21 فعال شد
            print ( 8) // عدد 8 نمایش داده شود

برای تمامی دکمه ها این کار را تکرار میکنیم.

کد کامل :

import RPi.GPIO as IO        # فراخوانی کتابخانه پین های GPIO
import time                          # فراخوانی کتابخانه تاخیر
IO.setwarnings(False)         # عدم نمایش هشدار ها
IO.setmode (IO.BCM)           
IO.setup(21,IO.IN)                     # initialize GPIO Pins as an Input.
IO.setup(20,IO.IN)
IO.setup(16,IO.IN)
IO.setup(12,IO.IN)
IO.setup(25,IO.IN)
IO.setup(24,IO.IN)
IO.setup(23,IO.IN)
IO.setup(18,IO.IN)
while 1:
    if (IO.input(21) == True): 
        time.sleep(0.001)
        if (IO.input(21) == True):
            print ( 8)            # اگر پین 21 بالا رفت روی صفحه بنویس 8
    if (IO.input(20) == True):
        time.sleep(0.001)
        if (IO.input(20) == True):
            print ( 7)            # اگر پین 20 بالا رفت روی صفحه بنویس 7
    if (IO.input(16) == True):
        time.sleep(0.001)
        if (IO.input(16) == True):
            print ( 6)            # اگر پین 16 بالا رفت روی صفحه بنویس 6
        time.sleep(0.001)
    if (IO.input(12) == True):
        if (IO.input(12) == True):
            print ( 5)            # اگر پین 12 بالا رفت روی صفحه بنویس 5
    if (IO.input(25) == True):
        time.sleep(0.001)
        if (IO.input(25) == True):
             print ( 4)           # اگر پین 25 بالا رفت روی صفحه بنویس 4
    if (IO.input(24) == True):
        time.sleep(0.001)
        if (IO.input(24) == True):
            print ( 3)            # اگر پین 24 بالا رفت روی صفحه بنویس 3
    if (IO.input(23) == True):
        time.sleep(0.001)
        if (IO.input(23) == True):
            print ( 2)            # اگر پین 23 بالا رفت روی صفحه بنویس 2
    if (IO.input(18) == True):
        time.sleep(0.001)
        if (IO.input(18) == True):
            print ( 1)            # اگر پین 18 بالا رفت روی صفحه بنویس 1
    time.sleep(0.2)

هنگامی که برنامه بالا را در PYTHON می نویسیم و آن را اجرا می کنیم، همه کار انجام شده است. هنگامی که پد لمس می شود، ماژول پین مربوطه را بالا می برد و این ماشه توسط PI شناسایی می شود. پس از تشخیص ، PI کلید مناسب را روی صفحه چاپ می کند.

قسمت بعد : چطور سروو موتور را با رزبری پای کنترل کنیم ؟ 

برای مشاهده توضیحات روی دوره مورد نظر کلیک کنید.

برای دریافت مطالب جدید در کانال تلگرام یا پیج اینستاگرام آیرنکس عضو شوید.

تصویر از محمد رحیمی

محمد رحیمی

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

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

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *