خواندن وضعیت دیجیتال پین دکمه برد رزبری پای پیکو

در این آموزش یاد میگیرید چگونه پینهای GPIO در Raspberry Pi Pico را با استفاده از فریمور MicroPython بهعنوان ورودی دیجیتال و خروجی دیجیتال تنظیم کنید. بهعنوان مثال، نحوه خواندن مقدار یک کلید فشاری و روشن کردن LED متناسب با آن را خواهید آموخت. با این مثال ساده، میتوانید نحوه خواندن هر ورودی دیجیتال و کنترل هر خروجی دیجیتال را در Raspberry Pi Pico فرا بگیرید.
برای دنبال کردن این آموزش، لازم است فریمور MicroPython روی برد Raspberry Pi Pico شما نصب شده باشد. همچنین به یک محیط توسعه (IDE) برای نوشتن و آپلود کد روی برد نیاز دارید.
محیط توسعه پیشنهادی برای برنامهنویسی MicroPython در Raspberry Pi Pico، نرمافزار Thonny IDE است. در آموزش زیر میتوانید نحوه نصب Thonny IDE، فلش کردن فریمور MicroPython و آپلود کد روی برد را بیاموزید.
پروژه خواندن پین برد پیکو و کنترل LED
برای نمایش نحوه استفاده از ورودیهای دیجیتال و خروجیهای دیجیتال، یک پروژه ساده شامل یک کلید فشاری و یک LED پیادهسازی میکنیم. در این پروژه، وضعیت کلید فشاری خوانده شده و متناسب با آن LED روشن یا خاموش میشود، همانگونه که در شکل زیر مشاهده میکنید.

برد Raspberry Pi Pico دارای 40 پین است که 26 پین آن بهصورت GPIO قابل برنامهریزی هستند و میتوان از آنها برای اتصال تجهیزات جانبی استفاده کرد.
میتوانید از نقشه پینهای زیر بهعنوان مرجع برای شناسایی و مکانیابی هر GPIO روی برد خود استفاده کنید. توجه داشته باشید که چیدمان پینها در Pico و Pico W اندکی متفاوت است.
تصویر زیر نقشه پینهای Raspberry Pi Pico و قابلیتهای هر پین را نشان میدهد.

پینهایی که با رنگ قرمز مشخص شدهاند، پینهای تغذیه با خروجی 3.3V هستند. پینهای مشکی، پینهای GND میباشند. تمامی پینهایی که با رنگ سبز روشن نمایش داده شدهاند میتوانند بهعنوان GPIO معمولی (ورودی و خروجی دیجیتال) استفاده شوند.
ورودی دیجیتال
برای دریافت مقدار یک GPIO، ابتدا باید یک شیء از کلاس Pin ایجاد کرده و آن را بهعنوان ورودی تنظیم کنید. برای مثال:
button = Pin(21, Pin.IN)
این دستور یک شیء Pin با نام button روی GPIO 21 ایجاد میکند. با استفاده از این خط کد، مشخص میکنید که GPIO 21 باید بهعنوان ورودی (Pin.IN) عمل کند.
همچنین میتوانید ورودی را طوری تنظیم کنید که از مقاومت داخلی Pull-up یا Pull-down میکروکنترلر استفاده کند. برای کلید فشاری، استفاده از مقاومت Pull-down داخلی کاربردی است. در این صورت، میتوانید پارامتر سوم (PULL_DOWN) را به سازنده Pin() اضافه کنید.
button = Pin(21, Pin.IN, Pin.PULL_DOWN)
بسته به نحوه سیمکشی کلید فشاری، ممکن است نیاز به استفاده از مقاومت Pull-up داخلی داشته باشید. در این صورت:
button = Pin(21, Pin.IN, Pin.PULL_UP)
پس از تعریف پین بهعنوان ورودی، برای دریافت مقدار آن باید از متد value() روی شیء Pin بدون ارسال آرگومان استفاده کنید. برای مثال، جهت دریافت وضعیت شیء button از عبارت زیر استفاده میشود:
button.value()
در مثال پروژه، نحوه عملکرد این بخش را بهصورت دقیقتر مشاهده خواهید کرد.
خروجی دیجیتال
برای روشن یا خاموش کردن یک GPIO، ابتدا باید آن را بهعنوان خروجی تنظیم کنید. برای مثال:
led = Pin(20, Pin.OUT)
این دستور یک شیء Pin با نام led روی GPIO 20 ایجاد میکند. بنابراین با اجرای این خط کد، مشخص میکنید که GPIO 20 باید بهعنوان خروجی (Pin.OUT) عمل کند.
برای کنترل GPIO، از متد value() روی شیء Pin استفاده کرده و مقدار 1 یا 0 را بهعنوان آرگومان ارسال کنید. برای مثال، دستور زیر شیء led را در وضعیت HIGH قرار داده و LED را روشن میکند:
led.value(1)
برای قرار دادن GPIO در وضعیت LOW، مقدار 0 را ارسال کنید که باعث خاموش شدن LED میشود:
led.value(0)
مدار اتصال دکمه به رزبری پای
پیش از ادامه، لازم است یک مدار شامل یک LED و یک کلید فشاری مونتاژ کنید. در این پروژه، LED را به GPIO 20 و کلید فشاری را به GPIO 21 متصل میکنیم.
قطعات مورد نیاز
در ادامه فهرست قطعات موردنیاز برای ساخت این مدار آورده شده است:
- برد رزبری پای پیکو
- LED
- مقاومت 330 اهم
- کلید فشاری
- مقاومت 10k Ohm
- برد بورد (Breadboard)
- سیم جامپر

میتوانید از دیاگرام زیر بهعنوان مرجع برای اتصال کلید فشاری و LED به برد Raspberry Pi Pico استفاده کنید.
کد کامل پروژه اتصال دکمه به برد Pico
کد زیر وضعیت کلید فشاری را خوانده و متناسب با آن LED را روشن یا خاموش میکند.
from machine import Pin from time import sleep led = Pin(20, Pin.OUT) button = Pin(21, Pin.IN, Pin.PULL_DOWN) while True: led.value(button.value()) sleep(0.1) print(button.value())
سپس یک شیء Pin با نام led روی GPIO 20 ایجاد میشود. از آنجا که LED یک خروجی است، آرگومان دوم Pin.OUT در نظر گرفته میشود.
led = Pin(20, Pin.OUT)
در ادامه، شیئی با نام button روی GPIO 21 ایجاد میشود. کلید فشاری یک ورودی است و در این پروژه از مقاومت داخلی Pull-down استفاده میکنیم، بنابراین آن را به شکل زیر تعریف میکنیم:
button = Pin(21, Pin.IN, Pin.PULL_DOWN)
برای خواندن وضعیت کلید از button.value() استفاده میشود. سپس مقدار بازگشتی این عبارت بهعنوان آرگومان به متد value مربوط به LED ارسال میشود.
led.value(button.value())
به این ترتیب، زمانی که کلید فشاری را فشار میدهیم، button.value() مقدار 1 را بازمیگرداند. در نتیجه، این وضعیت معادل اجرای led.value(1) خواهد بود.
این دستور LED را در وضعیت 1 قرار داده و آن را روشن میکند. زمانی که کلید فشاری فشرده نشده باشد، button.value() مقدار 0 را بازمیگرداند. در این حالت، led.value(0) اجرا شده و LED خاموش باقی میماند.
بررسی عملکرد کد میکروپایتون
کد را با استفاده از Thonny IDE یا هر محیط MicroPython دیگری که ترجیح میدهید، روی برد Raspberry Pi Pico ذخیره کنید.
در صورتی که از Thonny IDE استفاده میکنید، مراحل زیر را دنبال نمایید.
کد ارائهشده را در یک فایل جدید (untitled) در Thonny IDE کپی کنید.

پس از کپی کد، روی آیکون Save کلیک کنید. سپس گزینه Raspberry Pi Pico را انتخاب نمایید.

فایل را با نام main.py ذخیره کنید. اگر فایلی با همین نام وجود دارد، آن را بازنویسی (Overwrite) نمایید.

نکته: زمانی که فایل را با نام main.py ذخیره میکنید، Raspberry Pi Pico در هنگام راهاندازی (Boot) بهصورت خودکار آن را اجرا میکند. اگر نام دیگری برای فایل انتخاب کنید، فایل در حافظه برد ذخیره خواهد شد اما بهصورت خودکار اجرا نمیشود.
برد را ریست کنید (آن را از کامپیوتر جدا کرده و مجدداً متصل نمایید).
پس از آن، با فشردن کلید فشاری، LED باید روشن شود و با رها کردن آن، خاموش باقی بماند.

در جمعبندی، برای خواندن مقدار یک GPIO کافی است از متد value() روی شیء Pin مربوطه استفاده کنید. برای تنظیم مقدار یک GPIO نیز باید مقدار 1 یا 0 را بهعنوان آرگومان به متد value() ارسال نمایید تا بهترتیب روشن یا خاموش شود.







