Загрузка данных


import bluetooth
from machine import Pin, PWM, ADC
import time
import dht

# --- НАСТРОЙКА ПИНОВ ---
# Моторы (L9110S)
MOTOR_A_1A = Pin(26, Pin.OUT)
MOTOR_A_1B = Pin(27, Pin.OUT)
MOTOR_B_1A = Pin(13, Pin.OUT)
MOTOR_B_1B = Pin(14, Pin.OUT)

# Сервопривод (SG90)
servo = PWM(Pin(25), freq=50)

# DHT11
dht_sensor = dht.DHT11(Pin(33))

# ИК-приемник
ir_receiver = Pin(32, Pin.IN)

# --- ФУНКЦИИ УПРАВЛЕНИЯ МОТОРАМИ ---
def stop_motors():
    MOTOR_A_1A.value(0)
    MOTOR_A_1B.value(0)
    MOTOR_B_1A.value(0)
    MOTOR_B_1B.value(0)

def move_forward():
    MOTOR_A_1A.value(1)
    MOTOR_A_1B.value(0)
    MOTOR_B_1A.value(1)
    MOTOR_B_1B.value(0)

def move_backward():
    MOTOR_A_1A.value(0)
    MOTOR_A_1B.value(1)
    MOTOR_B_1A.value(0)
    MOTOR_B_1B.value(1)

def turn_left():
    MOTOR_A_1A.value(0)
    MOTOR_A_1B.value(1)
    MOTOR_B_1A.value(1)
    MOTOR_B_1B.value(0)

def turn_right():
    MOTOR_A_1A.value(1)
    MOTOR_A_1B.value(0)
    MOTOR_B_1A.value(0)
    MOTOR_B_1B.value(1)

def set_servo_angle(angle):
    # Преобразование угла (0-180) в скважность (duty) для MicroPython
    # 50Hz -> период 20ms. 0 град = 0.5ms, 180 град = 2.5ms
    duty = int((angle / 180 * 2 + 0.5) / 20 * 1023)
    servo.duty(duty)

# --- НАСТРОЙКА BLUETOOTH ---
ble = bluetooth.BLE()
ble.active(True)
# В MicroPython для BLE нужна библиотека для UART сервиса. 
# Если вы используете стандартный пример, он будет здесь.
# Пока для теста сделаем простую обработку (в реальности нужен Nordic UART Service)

print("Робот LOIK готов к работе!")

# --- ОСНОВНОЙ ЦИКЛ ---
while True:
    # 1. Чтение DHT11 (раз в 2 секунды)
    try:
        dht_sensor.measure()
        temp = dht_sensor.temperature()
        hum = dht_sensor.humidity()
        print("Температура:", temp, "C, Влажность:", hum, "%")
    except OSError as e:
        print("Ошибка чтения DHT11")
    
    # 2. Чтение ИК-приемника (просто проверяем, есть ли сигнал)
    # Примечание: для реального пульта нужна библиотека NEC, здесь просто проверка
    if ir_receiver.value() == 0:
        print("ИК сигнал получен!")

    # 3. Ожидание команд по Bluetooth (ЗАГЛУШКА, так как BLE в MicroPython сложен)
    # В реальном коде здесь должен быть обработчик UART.
    
    time.sleep(2)