جلسه سوم:
آموزش کار با GPIO در میکروپایتون
جلسه سوم: موصوع این جلسه در مورد راه اندازی و استفاده از GPIO در MicroPython است. برای راه اندازی GPIO مربوط به ESP32 و ESP8266 به ماژول Machine نیاز داریم. پیشنیاز این جلسه، جلسات قبلی هستند. لطفا اگر جلسات قبل را مطالعه نکردید از طریق لینکهای زیر آنها رو مطاله کنید.
مقدمات کار با Thonny IDE
بعد از انجام مراحل جلسات قبل برای اتصال Thonny IDE به برد از کلیدهای CTRL+C برای توقف عملیات فعلی و از کلید CTRL+D برای ریست نرم افزاری برد استفاده کنید.
بعد از انجام این کار وقتی نسخه میکروپایتون و برد را مشاهده کردید با زدن کد زیر در قسمت shell مربوط به Thonny IDE و زدن کلید ENTER راهنمای مربوط به MicroPython به نمایش در میآید.
help()

دستور پر کاربرد بعدی دستور زیر است که برای نمایش لیست ماژولهای نصب شده روی سیستم عامل MicroPython به کار میرود:
help('modules')

ملاحظه میکنید که یکی از این ماژولها machine است که کنترل واحدهای مختلف سخت افزاری توسط آن انجام میشود.
معرفی ماژول machine
ماژول machine برای استفاده از کلاسهای مختلف سخت افزار به کار میرود برای آشنایی با ماژول machine و مشاهده کلاسهای داخل آن ابتدا کد زیر را در ترمینال (shell) مربوط به MicroPython در نرم افزار Thonny IDE وارد کنید:
import machine
help(machine)

کلاس Pin
کلاس Pin کلاس پر کاربردی است که برای کنترل پایههای GPIO استفاده میشود. این class پایه و اساس کلاسهایی مثل UART, I2C , I2S ,PWM و … است.
با زدن کد زیر راهنمای مربوط به کلاس PIN را مشاهده میکنید:
help(machine.Pin)

طبق تصویر بالا این class دارای المانهای زیر است:(برای ESP8266)
توابع:
- init: برای تنظیم رجیسترهای مربوط به پایه
- value: برای خواندن مقدار فعلی PIN به صورت 0 یا 1
- off:تغییر مقدار فعلی به 0
- on:تغییر مقدار فعلی به 1
- irq:فعال کردن وقفه (interrupt)
- IN:مقدار این ثابت 0 است و برای تنظیم پایه به صورت ورودی (input) استفاده میشود.
- OUT:مقدار این ثابت 1 است و برای تنظیم پایه به صورت خروجی (output) استفاده میشود.
- OPEN_DRAIN:مقدار این ثابت 2 است و برای تنظیم پایه به صورت open drain استفاده میشود.
- PULL_UP:مقدار این ثابت 1 است و برای pull up کردن پایه استفاده میشود.
- IRQ_RISING: فعال کردن وقفه لبه بالارونده
- IRQ_FALLING: فعال کردن وقفه لبه پایین رونده
کد زیر یک نمونه کامل از استفاده از class مربوط به Pin است:
from machine import Pin
p0 = Pin(0, Pin.OUT) # ایجاد یک شی از کلاس پین روی پین 0 و تنظیم آن به عنوان خروجی
p0.on() #روشن کردن پین صفر
p0.off() #خاموش کردن پین صفر
p2 = Pin(2, Pin.IN) # ایجاد یک شی از کلاس پین روی پین 2 و تنظیم آن به عنوان ورودی
print(p2.value()) #خواندن مقدار فعلی پین 2 و خروجی نمایش آن روی ترمینال
p4 = Pin(4, Pin.IN, Pin.PULL_UP)#ایجاد یک شیء از کلاس پین و تنظیم آن به عنوان و ورودی به همراه پول آپ داخلی
p5 = Pin(5, Pin.OUT, value=1) #ایجاد شیء خروجی و مقدار دهی به محض ایجاد
برای مثال شما میتوانید با زدن به ترتیب کدهای زیر در ترمینال LED تعبیه شده روی بردهای Nodemcu را روشن کنید. توجه کنید که در بعضی بردها LED به صورت صفر فعال است یعنی با صفر شدن پایه LED روشن میشود.
from machine import Pin
led=Pin(0,Pin.OUT)
led.off()#صفر فعال
مبحث این جلسه در همین قسمت به پایان رسید. جلسه بعدی در مورد برنامه LED چشمک زن صحبت خواهیم کرد. برای مشاهده جلسات کامل آموزش MicroPython میتوانید از لینکهای زیر استفاده کنید: