آموزش رزبری پای رزبری پای میکروپایتون Micropython

پروژه دیمر دیجیتال با MicroPython میکروپایتون و برد رزبری پای پیکو

create-digital-dimmer-with-rasperry-pi-pico-and-micropython-digispark
نوشته شده توسط پریسا پوربلورچیان

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

پروژه دیمر دیجیتال با MicroPython برد رزبری پیکو - دیجی اسپارک

 


ایجاد لیست در پایتون


اگر با آرایه در آردوینو با سی پلاس پلاس کار کرده باشید، عملکرد لیست در پایتون هم به همان صورت خواهد بود. در اکثر زبان های برنامه نویسی آرایه کاربرد دارد که شامل مجموعه ای از داده های هم نوع است. یکی از این آرایه ها با نام لیست List شناخته می‌شود که که دنباله ای از انواع تغییر پذیر داده هستند. جهت دسترسی به عناصر یک لیست باید از اندیس گذاری استفاده کنیم.

listnme = [name1, name32, name3, ..., nameN]

توسط تابع range() در پایتون میتوان لیستی از اعداد را تولید کرد و جهت پیمایش در حلقه for استفاده می‌شود. رنج range از سه بخش تشکیل شده است.

  • start = تعیین کننده ی عدد شروع در تابع range است
  • stop = تعیین کننده ی عدد پایان در تابع range است
  • step =  تعیین کنند ی گام حرکت بین start , stop است

 


موج PWM در زبان میکروپایتون


موج مربعی PWM) Pulse Width Modulation) مدولاسیون پهنای باند روشی برای به دست آوردن خروجی آنالوگ روی پین دیجیتال است. PWM به دو پارامتر فرکانس و دیوتی سایکل وابسته است. در PWM عرض سیگنال مدام در حال تغییر است اما فرکانس ثابت ادامه میدهد. در صورتیکه سیگنال PWM در یک فرکانس ثابت کار کند، با تغییر زمان، زمانیکه دامنه سیگنال High باشد، زمان دامنه سیگنال پایین را تغییر داده می‌شود. به این بازه ی زمانی پهنای پالس گفته می‌شود. پهنای پالس که وابسته به دوره ی سیگنال است، دیوتی سایکل Duty Cycle گفته می شود. دوره زمانی سیگنال (T) که به پریود زمانی نیز گفته می شود از لحظه افزایش پله ی سیگنال موج مربعی شروع شده و به میزان شروع فزایش بعدی طول می کشد. تراشه RP2040 از هشت پایه PWM دو کاناله به صورت A B تشکیل شده است. به صورتی که پایه B میتواند برای اندازه گیری فرکانس و دیوتی سایکل استفاده شود. تمامی پایه های GPIO برد رزبری پای پیکو میتوانند ماهیت PWM داشته باشند. 

from machine import Pin , PWM

pwm = PWM ( Pin ( 16 ) ) # GP16
pwm. freq ( 100000 ) # 100kHz 
pwm. duty_u16 ( 32768 ) # duty 50% (65535/2)

 


اتصالات پروژه دیمر دیجیتال با MicroPython


برای تست برنامه دیمر دیجیتال با MicroPython به سه ال ای دی LED نیاز داریم. از پایه های ۱۶، ۱۷، ۱۸ رزبری پای پیکو استفاده کنید. برای pwm از تمامی پایه های برد رزبری پای پیکو مجاز به استفاده هستید.

اتصالات پروژه دیمر دیجیتال با MicroPython رزبری پیکو - دیجی اسپارک

 


کد میکروپایتون پروژه دیمر دیجیتال


برای تست و اجرای برنامه دیمر دیجیتال با MicroPython از نرم افزار Thonny IDE استفاده کنید. اگر تجربه ی کار با این نرم افزار را ندارید، بر روی لینک کلیک کنید. نرم افزار Thonny را باز کرده و سپس کد زیر را کپی کنید. برای اجرا قبل از RUN بایستی فریمور را بر روی برد رزبری پای پیکو انتخاب کنید.

فریمور رزبری پیکو در دیمر دیجیتال با MicroPython - دیجی اسپارک

 

کد کامل پروژه دیمر دیجیتال به صورت زیر است.

برنامه نویسی دیمر دیجیتال با MicroPython - دیجی اسپارک

 

import time
from machine import Pin, PWM
pins = [16,17,18]
pwms = [PWM(Pin(pins[0])),PWM(Pin(pins[1])),PWM(Pin(pins[2]))]
[PWM.freq(1000) for PWM in pwms]
step=64
bright = [a for a in range (0, 2**16, step)]
dimm = [a for a in range (2**16, -step, -step)]
while True:
    for pwm in pwms:
        for a in bright + dimm:
            pwm.duty_u16(a)
            time.sleep(0.001)
        for pwm in pwms:
            pwm.duty_u16(a)
            time.sleep(0.001)

 

در ابتدا از ماژول ماشین machine کلاس Pin , PWM را فراخونی میکنیم. برای تاخیر بین دو زمان روشن و خاموش شدن از کلاس time استفاده شده است.

import time
from machine import Pin, PWM

 

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

pins = [16,17,18]

 

در قدم بعدی بایستی برای هر خروجی مشخص کنیم که خروجی از کلاس PWM است.

pwms = [PWM(Pin(pins[0])),PWM(Pin(pins[1])),PWM(Pin(pins[2]))]

 

از ترکیب List و range برای دو وضعیت افزایش شدت نور و کاهش شدت نور دو لیست با مشخص کردن start, stop, step مینویسیم.

step=64
bright = [a for a in range (0, 2**16, step)]
dimm = [a for a in range (2**16, -step, -step)]

 

سپس یک حلقه برای تکرار مینویسیم. برای اینکار نیاز به کلاس PWM داریم که قبلا در آموزش میکروپایتون با رزبری پای پیکو آموزش داده شده است. بر روی لینک کلیک کنید.

 for pwm in pwms:
        for a in bright + dimm:
            pwm.duty_u16(a)
            time.sleep(0.001)
        for pwm in pwms:
            pwm.duty_u16(a)
            time.sleep(0.001)

 

برای اجرای پروژه دیمر دیجیتال با MicroPython بر روی گزینه ی Run Current Script کلیک کنید. هر سه ال ای دی با سرعت فرکانس ۱۰۰۰ هرتز روشن و سپس خاموش می‌شود.

 


لینک خرید وسایل مورد نیاز


رزبری پای پیکو

ال ای دی 

برد بورد

 

چنانچه در مراحل راه اندازی و انجام این پروژه با مشکل مواجه شدید، بدون هیچ نگرانی در انتهای همین پست، به صورت ثبت نظر سوالتان را مطرح کنید. من در سریع‌ترین زمان ممکن پاسخ رفع مشکل شما را خواهم داد. همچنین اگر ایرادی در کدها و یا مراحل اجرایی وجود دارند می‌توانید از همین طریق اطلاع رسانی کنید.

 

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

پریسا پوربلورچیان

تولید کننده محتوا / کارشناس IOT

زندگی یعنی پژوهش و فهمیدن چیزی جدید

تلاشم بر این است تجربیاتم در زمینه IOT‌ را به بهترین شکل با شما در میان بگذارم.

تبادل نظر و رفع عیب با ثبت دیدگاه

۲ دیدگاه