Страница 1 из 1

Нимагу установить вход в таблицу состояний с лазерных дальномеров

Добавлено: 18 окт 2019, 16:55
Arkan
Здравствуйте, друзья!
Выполнил конструктором FLProg счетчик на плате ESP8266 NodeMCU. На входе счетчика стоит Таблица состояний, управляемая двумя входами. По факту, два лазерных дальномера VL53L0X подключены к входам D1 и D2, соответственно SCL и SDA. Каждому из дальномеров присвоен свой адрес 41 и 42. И, вот вопрос: При наступлении определенных условий (расстояние меньше метра), на указанных выходах контроллера, соответствующих каждому из дальномеров, должна появится логическая 1. Как сделать, чтобы при наступлении этих условий логическая 1 устанавливалась не на выходе контроллера, а на входе Таблицы состояний. Сломал голову.Ответа не нашел. Подскажите, кто знает, плз! Заранее благодарю!

Изображение

Нимагу установить вход в таблицу состояний с лазерных дальномеров

Добавлено: 18 окт 2019, 17:34
Dryundel
[ref]Arkan[/ref], файл проекта лучше выложите.

Нимагу установить вход в таблицу состояний с лазерных дальномеров

Добавлено: 18 окт 2019, 19:33
Arkan
[ref]Dryundel[/ref], сейчас . Проект только готовится. Не пойму, как вставить файл. Вам нужен весь сохраненный проект?

Отправлено спустя 2 минуты 34 секунды:
Это он?

Нимагу установить вход в таблицу состояний с лазерных дальномеров

Добавлено: 18 окт 2019, 20:30
Dryundel
Arkan писал(а): 18 окт 2019, 19:33 Вам нужен весь сохраненный проект?
Ну мне то он не нужен, а вот Вам вряд ли кто поможет не видя Вашего творчества.

Теперь по существу.
Вы как то странно пытаетесь подключить два датчика VL53L0X.
Где у Вас блоки VL53L0X?
Дальномер присылает по шине I2C данные расстояния. Т.е. каждый из датчиков должен быть подключен к SCL и SDA.
А данные с них можно получить к примеру с помощью пользовательского блока типа этого
А вот с выхода этого блока надо ставить компараторы. И уже только после этого подавать сигнал на таблицу состояний.

Нимагу установить вход в таблицу состояний с лазерных дальномеров

Добавлено: 18 окт 2019, 20:32
ViktorPetrov
Нужно добавить блок в проект : VL53L0X лазерный дальномер

Нимагу установить вход в таблицу состояний с лазерных дальномеров

Добавлено: 18 окт 2019, 20:44
Arkan
Спасибо большое!
Для датчиков написана отдельная программа. Каждому присвоен свой адрес.
Блоков VL53LOx нет в программе FLProg . Пытаюсь совместить два скетча.
Постараюсь использовать Ваш совет.

Нимагу установить вход в таблицу состояний с лазерных дальномеров

Добавлено: 18 окт 2019, 20:59
Dryundel
Arkan писал(а): 18 окт 2019, 20:44 Для датчиков написана отдельная программа. Каждому присвоен свой адрес.
Где написана? Вы Правите скетч? Как Вы присваивали адрес?
Arkan писал(а): 18 окт 2019, 20:44 Блоков VL53LOx нет в программе FLProg .
В программе нет. Но пользовательский блок есть. Однако он вам не подойдет, т.к. в нем нет возможности прописывания адреса и он использует адрес по умолчанию.
Вывод: Надо делать новый пользовательский блок.

Нимагу установить вход в таблицу состояний с лазерных дальномеров

Добавлено: 18 окт 2019, 21:16
Arkan
Упс!
#define VL53L0X1_ADDRESS 41
#define VL53L0X2_ADDRESS 42
VL53L0X sensor1;
VL53L0X sensor2;
В компараторе, опять же, два входа для выполнения условий.
Один вход, это датчик, а второй?
А условие для датчиков <= 1ooo (мм)

Отправлено спустя 1 минуту 59 секунд:
Может, легче компаратор новый создать, где можно прописывать условие по 1 входу?

Отправлено спустя 6 минут 30 секунд:
Dryundel писал(а): 18 окт 2019, 20:59 В программе нет. Но пользовательский блок есть. Однако он вам не подойдет, т.к. в нем нет возможности прописывания адреса и он использует адрес по умолчанию.
Вывод: Надо делать новый пользовательский блок.
Мне, на самом деле не важно прописанные адреса, или по умолчанию. Главное, чтобы на вход Таблицы состояний приходили единицы от каждого датчика по выполнению условий.
Спасибо, что возитесь со мной!
P/S Как Вы понимаете, для счетчика не важна точность (в мм), важны скорость и надежность.

Нимагу установить вход в таблицу состояний с лазерных дальномеров

Добавлено: 18 окт 2019, 22:14
Dryundel
Arkan писал(а): 18 окт 2019, 21:16 Упс!
#define VL53L0X1_ADDRESS 41
#define VL53L0X2_ADDRESS 42
VL53L0X sensor1;
VL53L0X sensor2;
В компараторе, опять же, два входа для выполнения условий.
Один вход, это датчик, а второй?
А условие для датчиков <= 1ooo (мм)
Эт точно УПС! :smile37:

Отправлено спустя 57 секунд:
Arkan писал(а): 18 окт 2019, 21:16 Может, легче компаратор новый создать, где можно прописывать условие по 1 входу?
А это УПС-УПС!

Отправлено спустя 47 секунд:
Arkan писал(а): 18 окт 2019, 21:16 Мне, на самом деле не важно прописанные адреса, или по умолчанию. Главное, чтобы на вход Таблицы состояний приходили единицы от каждого датчика по выполнению условий.
А вот это уже УУУУУУУУУУУУУУУУУУУУПС !!!

Нимагу установить вход в таблицу состояний с лазерных дальномеров

Добавлено: 18 окт 2019, 22:48
Arkan
Спасибо!
Поставил компаратор <=. На один вход - выход датчика. а второй - задал переменную (600). На второй компоратор , то же. И выходы обоих компараторов приходят на входы Таблицы состояний. На выходы таблицы состояний установил "выходы" для проверки светодиодами. И, вот какая ерунда: казалось бы, если расстояние, сканируемое датчиком меньше указанного в переменной, на выходе ТС должна появляться 1. Она появляется. Но, как-то странно. На мгновение вспыхивает сд. И тут же может вспыхнуть и второй. если держать препятствие над датчиками, то вспышка происходит разово. Если вообще происходит. Хотя, как я понимаю, должна висеть 1 постоянно.
На счет упс. Скетч с двуммя датчиками работает. Только с большими задержками., и с ложными несрабатываними.

Нимагу установить вход в таблицу состояний с лазерных дальномеров

Добавлено: 19 окт 2019, 05:30
edyapd
Arkan писал(а): 18 окт 2019, 22:48 На один вход - выход датчика. а второй - задал переменную (600). На второй компоратор , то же. И выходы обоих компараторов приходят на входы Таблицы состояний. На выходы таблицы состояний установил "выходы" для проверки светодиодами. И, вот какая ерунда: казалось бы, если расстояние, сканируемое датчиком меньше указанного в переменной, на выходе ТС должна появляться 1. Она появляется. Но, как-то странно. На мгновение вспыхивает сд. И тут же может вспыхнуть и второй. если держать препятствие над датчиками, то вспышка происходит разово. Если вообще происходит. Хотя, как я понимаю, должна висеть 1 постоянно.
Тут возможно зависит от условий, которые вы прописали в компараторе. Если просто "=", то будет как раз происходить то, как вы описываете.

Нимагу установить вход в таблицу состояний с лазерных дальномеров

Добавлено: 19 окт 2019, 21:28
Arkan
Понял в чем проблема. Проблема в пользовательском блоке лазерного датчика. Года датчик один, все нормально. Но когда их несколько, контроллер обрабатывает, полученную с них информацию, без разграничений. Блок очень сырой. Переделывать не буду. Изменю скетч. Нужно назначить каждому датчику свой адрес. Щас попробую решиь задачу.

Нимагу установить вход в таблицу состояний с лазерных дальномеров

Добавлено: 20 окт 2019, 00:44
Arkan
Ничего не вышло. Не понимаю. Уменьшил схему до "не могу". Ну, почему она не работает?
Два лазерных дальномера.jpg

Нимагу установить вход в таблицу состояний с лазерных дальномеров

Добавлено: 20 окт 2019, 09:08
Dryundel
Arkan писал(а): 20 окт 2019, 00:44 Ничего не вышло. Не понимаю. Уменьшил схему до "не могу". Ну, почему она не работает?
Ну так сам же писал ответ:
Arkan писал(а): 19 окт 2019, 21:28 Понял в чем проблема. Проблема в пользовательском блоке лазерного датчика. Года датчик один, все нормально. Но когда их несколько, контроллер обрабатывает, полученную с них информацию, без разграничений.
Это то о чем я говорил ранее:
Dryundel писал(а): 18 окт 2019, 20:59 В программе нет. Но пользовательский блок есть. Однако он вам не подойдет, т.к. в нем нет возможности прописывания адреса и он использует адрес по умолчанию.
Вывод: Надо делать новый пользовательский блок.
Вот здесь пример № 2 посмотрите.
И библиотеку поизучайте.

Отправлено спустя 5 минут 36 секунд:
Arkan писал(а): 19 окт 2019, 21:28 Блок очень сырой. Переделывать не буду.
А без переделок два датчика работать не будут.

Нимагу установить вход в таблицу состояний с лазерных дальномеров

Добавлено: 20 окт 2019, 14:26
Arkan
Да. Спасибо!
Пример этот я видел.
У меня написан скетч счетчика на 2 . Но, хотелось разобраться с конструктором. В скетче устанавливаются адреса. И все, вроде, работает. однако, скетч тяжелый. Постоянно должны меняться адреса датчиков. Так же, присутствуют ложные не срабатывания. Или срабатывания в одну сторону (видимо не переключаются адреса). А по прошествии времени работы, вообще начинает глючить. Щас напаяю на плату, чтобы исключить дребезг.
Пришел к выводу, что проблема все же в конструкторе. Если каждый датчик, в отдельности работает сторонним скетчем. Скетч на 2 так же работает. Не работает конструктор. Т.е. при подключении датчиков к компараторам, при выполнении условий на любом из датчиков, на выходах обоих компараторов появляется 1. Вот я и не пойму, где ошибка! Не счтите за труд, посмотрите код, пожалуйста!