رزبری پای پیکو Raspberry Pi PICO دارای ۳۰ پایه GPIO است. هر پایه های GPIO رزبری Pico دارای ماهیت متفاوتی است و نقش متفاوتی را برای ما ایفا میکنند. برای استفاده از این ۳۰ پایه نیاز به دانش برنامه نویسی میکروپایتون خواهیم داشت. در میکروپایتون از کلاس های پایتون برای کدنویسی استفاده میکنیم. هر کلاس شامل تعدادی توابع است که برای فراخوانی استفاده میشود. در این آموزش کلاس های مورد نیاز برای استفاده از PINS & GPIO در برد رزبری پای پیکو را یاد خواهیم گرفت. در ادامه با مرجع تخصصی میکروپایتون با رزبری پای به زبان فارسی، دیجی اسپارک همراه باشید.
بررسی پایه هاPins & GPIO رزبری پای پیکو
برد Raspberry Pi Pico دارای تعدادی پین GPIO (ورودی/خروجی عمومی) است که برای اتصال به انواع دستگاهها و ماژولهای الکترونیکی استفاده میشوند. این پایهها در دو ردیف و به شکل دو ورودی سمت به سمت و با مرکز مشترک قرار دارند. در کل، Raspberry Pi Pico دارای ۲۶ پایه GPIO است. این پایهها به شرح زیر هستند:
ردیف ۱ (Row 1):
GP0
GP1
GP2
GP3
GP4
GP5
GP6
GP7
GP8
GP9
GP10
GP11
GP12
GP13
GP14
GP15
ردیف ۲ (Row 2):
GP16
GP17
GP18
GP19
GP20
GP21
GP22
GP23
GP24
GP25
GP26
GP27
هر یک از این پایهها میتوانند به عنوان ورودی یا خروجی تنظیم شوند و از طریق کد برنامهنویسی، میتوانید به آنها سیگنالهای دیجیتالی مختلفی اعمال کنید. همچنین، برخی از این پایهها میتوانند به عنوان ورودیهای آنالوگ برای خواندن سیگنالهای آنالوگ استفاده شوند. این پایهها از برنامهنویسان امکان اتصال و کنترل متنوعی از دستگاهها و سنسورها را فراهم میکنند.
جهت فراخوانی پایه های GPIO رزبری Pico از زبان برنامه نویسی میکروپایتون استفاده میکنیم. زبان برنامه نویسی میکروپایتون برگرفته از پایتون و توسعه یافته برای بردهای امبدد است. در میکروپایتون از کلاس ها برای فراخوانی تابع مورد نظر استفاده میشود. برای فراخوانی پایه های GPIO رزبری Pico از کلاس machin.Pin استفاده میکنیم.
class Pin – control I/O pins کلاس پایه ها – کنترل پایه های I/O:
از آبجکت Pin برای کنترل پایه ها I/O یا همان GPIO استفاده میشود. آبجکت های تعریف شده برای پایه ها با پایه های فیزیکی مرتبط است و برای دریافت دیتا از ولتاژ ورودی و خروجی استفاده میشود. کلاس پین ها دارای یک متد مشخص برای مشخص کردن ورودی، خروجی IN ,OUT است که توسط این کلاس سطح منطقی دیجیتال مانند کنترل ورودی آنالوگ مشخص خواهد شد. آبجکت های تعریف شده برای هر پایه هویت آن پایه را مشخص میکند.
متذ تعریف پایه ها در کلاس GPIO رزیری پای پیکو
محدودیت در دسترسی کامل به این مجموعه آموزش
دسترسی کامل به آموزش برای اعضای دیجی اسپارک امکان پذیر است. بخش اصلی آموزش شامل سورس کدهای توسعه داده شده توسط مهندسهای دیجی اسپارک است. به همین دلیل این آموزش خاص و یکتاست. برای استفاده از آن بایستی عضویت تهیه کنید. تبادل نظر با کاربران و پرسش سوال رایگان است و میتوانید از بخش نظرات همین آموزش اقدام کنید. |
برای مشخص کردن وضعیت پایه ها از کلاس های زیر استفاده میشود.
مثال ۱ – روشن شدن LED داخلی
در مثال اول ال ای دی داخلی برد رزبری پای پیکو را فعال میکنیم. ال ای دی داخلی به پایه های GPIO رزبری Pico شماره ۲۵ برد متصل است. برای فراخوانی این پایه آبجکت machin.Pin را وارد برنامه میکنیم. اگر بخواهیم ال ای دی روی برد روشن شود، بایستی از کلاس P0.value(1) استفاده کنیم. منظور از p0 پایه انتخابی است که دلخواه است.
from machine import Pin led = Pin(25, Pin.OUT) led.value(1)
در این کد ال ای دی gpio شماره ۲۵ است و مد کاری آن Pin.OUT است که به معنی خروجی است. سپس این پایه در متغیری با نام دلخواه led ذخیره شده است. در نهایت برای روشن شدن ال ای دی متغیر بایستی دارای مقدار ۱ باشد تا روشن شود.
- ۱: قدم اول انتخاب برد MicroPython (Raspberry Pi Pico) است.
- ۲: کد را در صفحه ی جدید تایپ کنید.
- ۳: سپس RUN کنید.
- برنامه اجرا شده و ال ای دی روی برد طبق تصویر زیر روشن خواهد شد.
مثال ۲: اضافه شدن کلید
در مثال دوم شناخت پایه های GPIO رزبری Pico یک ورودی به صورت فیزیکی همانند کلید در برنامه اضافه میکنیم. بدین صورت که با فشردن کلید ال ای دی روشن شود. برای اینکار در ابتدا کلید بایستی در نقش ورودی پول دان در برنامه تعریف شود. ال ای دی نقش خروجی دارد و در برنامه به صورت OUTPUT تعریف میشود. کد برنامه به صورت زیر است.
from machine import Pin import time led = Pin(15, Pin.OUT) button = Pin(14, Pin.IN, Pin.PULL_DOWN) while True: if button.value(): led.toggle() time.sleep(0.5)
در این کد از بازه زمانی برای ایجاد وقفه در برنامه استفاده شده است که در آموزش های بعدی توابع و کلاس های مورد نیاز را فرا خواهیم گرفت. دو مود Mode در این کد استفاده شده است. ورودی به صورت زیر تعریف شده است.
محدودیت در دسترسی کامل به این مجموعه آموزش
دسترسی کامل به آموزش برای اعضای دیجی اسپارک امکان پذیر است. بخش اصلی آموزش شامل سورس کدهای توسعه داده شده توسط مهندسهای دیجی اسپارک است. به همین دلیل این آموزش خاص و یکتاست. برای استفاده از آن بایستی عضویت تهیه کنید. تبادل نظر با کاربران و پرسش سوال رایگان است و میتوانید از بخش نظرات همین آموزش اقدام کنید. |
اتصال کلید و LED به رزبری پای پیکو
برای انجام اتصالات از تمامی پایه های GP سبز رنگ میتوانید استفاده کنید.
- پایه ال ای دی را به پایه GP14 اتصال دهید.
- پایه کوتاه را به پایه GND اتصال دهید.
- پایه کلید را به پایه ی GP13 اتصال دهید.
- پایه دیگر کلید را به پایه ۳٫۳ ولت اتصال دهید.
وسایل مورد نیاز
جمع بندی لیدی پای
در بخش سوم از سری آموزش های مقدماتی یادگیری میکروپایتون با رزبری پای پیکو کلاس machin.Pin را بررسی کردیم و سپس تمامی کلاس های تابع را تحلیل کردیم. در صورتیکه بخواهیم قطعات و دیوایس های مورد استفاده در نقش ورودی و خروجی باشند و مود کاری هر کدام وابسته به سناریوی تعریف شده در پروژه باشد، از این کلاس ها در بخش اول کدنویسی استفاده میکتیم. ورودی ها میتوانند به صورت پول آپ و یا پول دان و یا هیچ کدام باشد. خروجی فقط دارای یک هویت مشخص out است که در کد برنامه تعریف میشود.
چنانچه در مراحل راه اندازی و انجام این پروژه با مشکل مواجه شدید، بدون هیچ نگرانی در انتهای همین پست، به صورت ثبت نظر سوالتان را مطرح کنید. من در سریعترین زمان ممکن پاسخ رفع مشکل شما را خواهم داد. همچنین اگر ایرادی در کدها و یا مراحل اجرایی وجود دارند میتوانید از همین طریق اطلاع رسانی کنید.
سلام
عالی و کاربردی توضیح دادید. سپاس از شما که باعث رشد جامعه کاربری فارسی زبان هستید.
با سلام
کاربر گرامی ضمن تشکر از شما، امیدوارم آموزش ها مفید واقع شود.
رعابت حروف بزرگ و کوچک مهم ااست؟
با سلام
بله حتما باید رعایت کنید در غیر اینصورت با خطا مواجه خواهید شد.
سلام و خسته نباشید
برنامه نویسی بسیار شبیه به سی پلاس پلاس در آردوینو است و واقعا سخته و جالبه
با سلام
سپاس از همراهی شما بله اگر الگوریتم را بلد باشید قطعا کدنویسی ساده تر خواهد شد.
سلام مهندس
آیا آموزش پروژه محور را پیشنهاد میکنید؟
با سلام
بله برای یادگیری کدنویسی میکروها و بردها بهترین روش یادگیری اصول کدنویسی و اجرا در لحظه و نمایش آن است.
با سلام
آیا امکان نوشتن کد دو ال ای دی برای روشن و خاموش شدن فراهم است؟
با سلام
در بخش کامنت ها این مورد امکان پذیر نیست اما در آموزش های آتی اضافه خواهد شد.
سلام و خسته نباشید بابت این اموزش شفاف و فارسی از شما کمال تشکر دارم
سلام
سپاس از همراهی شما کاربر گرامی امیدوارم مفید واقع شده باشد.
با سلام
مهندس اگر به جای کلیدی از سنسور دیگری استفاده کنیم باید کد را تغییر دهیم مثلا سنسور مادون قرمز یا سنسورهای دیجیتال دیگر
با سلام
بله امکان پذیر است و هیچ محدودیتی وجود ندارد.
خسته نباشید من وقتی به ide وصلش میکنم چراغم روشن نمیشه منظورم بدون کدنویسی هست آیا سوخته :((((
با سلام
به صورت پیش فرض هیچ چراغی روی برد روشن نمیشود.
سلام اگر چندین پایه gpio داشته باشیم فقط یک بار باید از ماژول ماشین ایمپورت کنیم؟
با سلام
بله فقط یک بار در اول برنامه فراخوانی میکنیم و به تعداد دفعات استفاده ارتباطی ندارد.
برای کار با میکروپایتون از لیست و رنج پایتون هم میشه در کدنویسی استفااده کرد؟
با سلام
بله از تمامی کلاس ها و توابع پایتون برای میکروپایتون هم میتوانید استفاده کنید اما در نظر داشته باشید کمی دشوار خواهد بود.
سلام
چرا از pulldown , pullup استفاده میکنیم؟
با سلام
برای ورودی ها در صورت تمایل میتوانید از مقاومت به صورت خارجی استفاده نکنید و در کد برنامه آن را داخلی تعریف کنید.
برای پایه های GPIO از چه مقاومتی باید استفاده کرد؟
با سلام
مقاومت بین ۱۰۰ تا ۳۳۰ اهم کافی است.
سلام
برای یادگیری آیا سینتکس ها تاثیری در روش کدنویسی دارد
با سلام
بله نحوه نگارش بسیار مهم است.
سلام آیا سرعت میکروپایتون از سی پلاس پلاس بیشتره؟
چه جوری میشه با استفاده از میکروپایتون سرعت و کارایی سیستم را توسعه داد؟
سلام
سرعت میکروپایتون کمتر از C++ است، اما در برخی موارد می توان از آن برای پروژه های خاصی استفاده کرد. میکروپایتون یک زبان برنامه نویسی اسکریپتی است و به دلیل طراحی ساده و کم حجم خود، امکانات کافی برای توسعه سیستم های کوچک و ساده را فراهم می کند.