Upload files to "/"
This commit is contained in:
@@ -0,0 +1,3 @@
|
||||
{
|
||||
"info": "This file is just used to identify a project folder."
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
from machine import Pin
|
||||
import time
|
||||
pin = Pin(19, Pin.OUT)
|
||||
for i in range(10):
|
||||
pin.value(1)
|
||||
time.sleep(0.5)
|
||||
pin.value(0)
|
||||
time.sleep(0.5)
|
||||
print(i)
|
||||
+75
@@ -0,0 +1,75 @@
|
||||
from machine import Pin, PWM
|
||||
import time
|
||||
import json
|
||||
|
||||
TRANSMIT_PIN = 19
|
||||
CARRIER_FREQ = 38000 # Гц, стандартная несущая для большинства ИК-пультов
|
||||
DUTY = 33 # % заполнения (обычно 30-50% для ИК-светодиода)
|
||||
|
||||
|
||||
def _send_timings(pwm, pin, timings):
|
||||
"""
|
||||
Воспроизводит список таймингов (в мкс).
|
||||
Чётные индексы (0, 2, 4...) - импульсы (несущая включена),
|
||||
нечётные индексы (1, 3, 5...) - паузы (несущая выключена).
|
||||
"""
|
||||
for i, duration in enumerate(timings):
|
||||
if i % 2 == 0:
|
||||
# импульс: включаем несущую 38кГц
|
||||
pwm.duty_u16(int(65535 * DUTY / 100))
|
||||
else:
|
||||
# пауза: несущая выключена
|
||||
pwm.duty_u16(0)
|
||||
time.sleep_us(duration)
|
||||
|
||||
# на всякий случай гарантированно выключаем несущую в конце
|
||||
pwm.duty_u16(0)
|
||||
|
||||
|
||||
def transmit_raw(timings, pin_num=TRANSMIT_PIN, freq=CARRIER_FREQ):
|
||||
"""
|
||||
Передаёт сырые тайминги ИК-сигнала через ИК-светодиод на pin_num.
|
||||
"""
|
||||
pin = Pin(pin_num, Pin.OUT)
|
||||
pwm = PWM(pin)
|
||||
pwm.freq(freq)
|
||||
pwm.duty_u16(0)
|
||||
|
||||
try:
|
||||
_send_timings(pwm, pin, timings)
|
||||
finally:
|
||||
pwm.duty_u16(0)
|
||||
pwm.deinit()
|
||||
|
||||
|
||||
def send_code(name, filename="codes.json", pin_num=TRANSMIT_PIN, freq=CARRIER_FREQ):
|
||||
"""
|
||||
Загружает сохранённый код по имени из codes.json и передаёт его.
|
||||
"""
|
||||
try:
|
||||
with open(filename, "r") as f:
|
||||
codes = json.load(f)
|
||||
except OSError:
|
||||
print("Файл кодов не найден")
|
||||
return
|
||||
|
||||
if name not in codes:
|
||||
print(f"Код '{name}' не найден. Доступные коды: {list(codes.keys())}")
|
||||
return
|
||||
|
||||
timings = codes[name]
|
||||
print(f"Передача '{name}' ({len(timings)} импульсов)...")
|
||||
transmit_raw(timings, pin_num, freq)
|
||||
print("Готово")
|
||||
|
||||
|
||||
def send_code_repeat(name, times=1, delay_ms=50, filename="codes.json",
|
||||
pin_num=TRANSMIT_PIN, freq=CARRIER_FREQ):
|
||||
"""
|
||||
Передаёт код несколько раз подряд с задержкой между повторами.
|
||||
Полезно, если пульт нормально распознаётся только с нескольких попыток.
|
||||
"""
|
||||
for i in range(times):
|
||||
send_code(name, filename, pin_num, freq)
|
||||
if i < times - 1:
|
||||
time.sleep_ms(delay_ms)
|
||||
Reference in New Issue
Block a user