from machine import Pin, PWM
from utime import sleep, sleep_ms
# PWM - клас що дозволяє працювати з ШІМ (широтно-імпульсна модуляція)
# Створюємо обє'кт. Вказуємо пін і частоту ШІМ (скільки разів на секунду будемо відправляти сигнал на пін)
led = PWM(Pin(32), freq=1000)
# Щоб задати співвідношення 0 і 1 які ми відправляемо на наш пін використовуємо метод duty(X),
# де X це ціле число від 0 до 1023 (0 - 0% одиниць, 1023 - 100% одиниць)
# duty(0) - передаєм тільки 0 (світлодіод не горить)
# duty(1023) - передаєм тільки 1 (світлодіод горить максимально яскраво)
# duty(512) - 50% нулів, 50% одиниць (світлодіод горить на половину від максимальної потужності)
while True:
# Змінюємо значення i від 1 до 1023 та підставляємо в метод duty()
# Світлодіод поступово буде збільшувати яскравість
for i in range(1, 1024):
led.duty(i)
sleep(0.005)
# Змінюємо значення i від 1023 до 1 та підставляємо в метод duty()
# Світлодіод поступово буде зменьшувати яскравість
for i in range(1023, 0, -1):
led.duty(i)
sleep(0.005)
# RGB-LED Світлодіод що містить в собі 3 кольори Red(червоний), Green(зелений), Blue(синій)
# кожний колір має свій окремий вивід і підключається до цифрового піна плати
# вивід COM підключається до мінусу плати (GND) якщо в налаштуваннях RGB-LED вибрано Cathode
# або до плюса плати (3V3) якщо в налаштуваннях RGB-LED вибрано Anode
# Створюємо об'єкти для кожного піна що буде керувати кольором
red = PWM(Pin(23), freq=1000)
green = PWM(Pin(22), freq=1000)
blue = PWM(Pin(21), freq=1000)
# Змініючи значення duty для кожного каналу отримуюєм відповідний колір
# Для того щоб помітити блок коду як комментар, або зняти комментар - виділяемо необхідний текст
# і натискаємо комбінацію клавіш Ctrl+/
# Приклад роботи RGB-LED
# while True:
# # червоний
# red.duty(1023)
# green.duty(0)
# blue.duty(0)
# sleep(1)
# # зелений
# red.duty(0)
# green.duty(1023)
# blue.duty(0)
# sleep(1)
# # синій
# red.duty(0)
# green.duty(0)
# blue.duty(1023)
# sleep(1)
# # кастомний
# red.duty(208)
# green.duty(940)
# blue.duty(940)
# sleep(1)
# Buzzer - дінамік
# чорний контакт - до мінусу (GND) плати
# червоний - до цифрового піна
# Коли ми створимо об'єкт дінаміка він почне відтворювати звук
# і не закінчить доки ми не деактивуємо цей об'єкт
# while True:
# # Створюємо об'єкт, починає грати звук частотою 1000 Гц
# beeper = PWM(Pin(26), freq=1000, duty=512)
# sleep(0.3)
# # Через 0.3 секунди змінюємо частоту на значення 440 Гц
# beeper.freq(440)
# sleep(0.3)
# # Через 0.3 секунди змінюємо частоту на значення 200 Гц
# beeper.freq(200)
# sleep(0.3)
# # Через 0.3 секунди змінюємо частоту на значення 880 Гц
# beeper.freq(880)
# sleep(0.3)
# # Вимикаємо дінамік
# beeper.deinit()
# sleep(1)
# Можемо створити окрему функцію для відтворення звуків
# Перший параметр buzzer - номер піна до якого приєднано дінамік
# Другий параметр freq - частота звука
# Третій парамерт time - час відтворення звуку
def tone(buzzer, freq, time):
beep = PWM(Pin(buzzer), freq=freq, duty=512)
sleep_ms(time)
beep.deinit()
tone(14, 440, 400)
tone(buzzer=14, freq=880, time=200)