🤖Have you ever tried Chat.M5Stack.com before asking??😎
    M5Stack Community
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Groups
    • Search
    • Register
    • Login

    Урок 21.1. UNITS. LIGHT

    Scheduled Pinned Locked Moved Русскоязычный форум
    1 Posts 1 Posters 5.7k Views 1 Watching
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • DimiD Offline
      Dimi
      last edited by

      Цель урока

      Привет! Сегодня мы познакомимся с LIGHT UNITS и научимся определять наличие света (рисунок 1).

      Рисунок 1

      Этот урок научит: получать и обрабатывать цифровые данные о наличии источника света.

      Краткая справка

      • Назначение: применяют для определения наличия источника света
      • Сфера применения: сельское хозяйство, наука и домашний быт
      • Интерфейс подключения: I / O (разъём Groove Port B)
      • Напряжение питания: 5 В
      • Совместимость: M5 FIRE
      • Форм-фактор: LEGO-совместимый

      Краткий обзор

      LIGHT — один из большого семейства дополнительных модулей (UNITS), предназначенных прежде всего для М5 Fire. Поставляется данный модуль в пластиковой коробке. В комплект входит отличный кабель (15 см) с установленными вилками Groove (рисунок 2). На лицевой стороне датчика имеется наклейка с названием модуля и обозначением контактов. Интересно то, что датчик может работать в двух режимах: как в аналоговом, так и в цифровом.

      Рисунок 2

      Для того, чтобы установить порог срабатывания для цифрового выхода, на обратной стороне датчика имеется движок подстроечного резистора (рисунок 3), который можно вращать с помощью отвертки.

      Рисунок 3

      Габаритные размеры датчика смешные, и, проблем с установкой не будет (рисунок 4) :)

      Рисунок 4

      Подключается датчик напрямую к указанному выше порту М5 с помощью прилагаемого кабеля. Свет должен падать в отверстие с датчиком (рисунок 5).

      Рисунок 5

      Начнём!

      Blockly (UI Flow)

      Прежде всего мы должны убедиться в том, что UI Flow подключён к M5. Если Вы видите надпись "Disconneted", то многократно нажимайте на стрелки (1) до тех, пор пока надпись (2) не смениться на "Connected". Отлично! Теперь можем добавить UNITS для этого кликните на плюс (3) (рисунок 6).

      Рисунок 6

      Хорошо, теперь поставьте галочку около LIGHT (1), затем нажмите ОК (2) (рисунок 6.1).

      Рисунок 6.1

      Для того, чтобы получить цифровые данные с модуля необходимо добавить соответствующий пазл Blockly. Нажмите UNITS (1), затем Light (2), далее передащите в рабочую область пазл Digital Value (3) (рисунок 6.2).

      Рисунок 6.2

      Когда свет падает на датчик он возвращает логическую единицу на цифровом выходе, в таком случае - нам подсветка не нужна и мы её отключаем, иначе наоборот зажигаем подсветку. Для того, чтобы управлять теплотой свечения используем клавишу A (холоднее) и клавишу С (теплее) (рисунок 7).

      Рисунок 7

      На этом урок закончен! :)

      MicroPython (UI Flow)

      from m5stack import *
      from m5ui import *
      import units
      
      clear_bg(0x000000)
      light0 = units.Light(units.PORTB)
      
      
      
      btnA = M5Button(name="ButtonA", text="ButtonA", visibility=False)
      btnB = M5Button(name="ButtonB", text="ButtonB", visibility=False)
      btnC = M5Button(name="ButtonC", text="ButtonC", visibility=False)
      
      import random
      
      red = None
      blue = None
      green = None
      
      
      def buttonA_pressed():
        global red, blue, green, rgb, light0
        red = red - 25
        blue = blue + 25
        pass
      def buttonC_pressed():
        global red, blue, green, rgb, light0
        red = red + 25
        blue = blue - 25
        pass
      buttonA.wasPressed(callback=buttonA_pressed)
      buttonC.wasPressed(callback=buttonC_pressed)
      red = 100
      green = 100
      blue = 100
      while True:
        if red >= 255:
          red = 255
        if red < 0:
          red = 0
        if green >= 255:
          green = 255
        if green < 0:
          green = 0
        if blue >= 255:
          blue = 255
        if blue < 0:
          blue = 0
        if light0.d_read():
          rgb.set_all(int('0x%02x%02x%02x' % (round(min(100, max(0, red)) * 2.55), round(min(100, max(0, green)) * 2.55), round(min(100, max(0, blue)) * 2.55))))
        else:
          rgb.set_all(0x000000)
        lcd.pixel(random.randint(0, 320), random.randint(0, 240), 0xccffff)
        wait(0.05)
        wait(0.001)
      

      C & C++ (Arduino IDE)

      Пример ещё не написан ^_^

      Downloads

      Demo

      1. YouTube
      1 Reply Last reply Reply Quote 0

      Hello! It looks like you're interested in this conversation, but you don't have an account yet.

      Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.

      With your input, this post could be even better 💗

      Register Login
      • First post
        Last post