Как отключать платы не на взвешенном состоянии

Alex1968
Сержант
Сообщения: 173
Зарегистрирован: 11 дек 2019, 14:51
Имя: Alex

Как отключать платы не на взвешенном состоянии

Сообщение Alex1968 »

Я правильно понял, что побороть проблему недовыполнения кода на плате которая управляется по условию из другой платы не получится?
RootShell
Рядовой
Сообщения: 77
Зарегистрирован: 27 июн 2020, 04:22
Откуда: World
Имя: Agat
Контактная информация:

Как отключать платы не на взвешенном состоянии

Сообщение RootShell »

На вскидку очень большой loop(), много проверок if/else. Может как то их вынести в функции? От какой библиотеки заголовок CyberLib.h
Alex1968
Сержант
Сообщения: 173
Зарегистрирован: 11 дек 2019, 14:51
Имя: Alex

Как отключать платы не на взвешенном состоянии

Сообщение Alex1968 »

RootShell писал(а): 01 сен 2020, 17:25 На вскидку очень большой loop(), много проверок if/else. Может как то их вынести в функции? От какой библиотеки заголовок CyberLib.h
я не писатель кодов, собрал из блоков данной программы, на сайте которой вы сейчас находитесь.
Последний раз редактировалось Alex1968 01 сен 2020, 17:42, всего редактировалось 2 раза.
RootShell
Рядовой
Сообщения: 77
Зарегистрирован: 27 июн 2020, 04:22
Откуда: World
Имя: Agat
Контактная информация:

Как отключать платы не на взвешенном состоянии

Сообщение RootShell »

я вас понял. Можно проверять ногу на предмет высокого уровня. И если она в 1 то дальше проваливаться в функцию которая будет выполняться до конца и начинаться с начала до тех пор пока нога в 1. Если нога в 0 то и в функцию не попадем в итоге крутиться пустой Loop() Плата ничего не делает.

Отправлено спустя 58 секунд:
как это блоками сделать я не знаю к сожалению.
Alex1968
Сержант
Сообщения: 173
Зарегистрирован: 11 дек 2019, 14:51
Имя: Alex

Как отключать платы не на взвешенном состоянии

Сообщение Alex1968 »

RootShell писал(а): 01 сен 2020, 17:42 я вас понял. Можно проверять ногу на предмет высокого уровня. И если она в 1 то дальше проваливаться в функцию которая будет выполняться до конца и начинаться с начала до тех пор пока нога в 1. Если нога в 0 то и в функцию не попадем в итоге крутиться пустой Loop() Плата ничего не делает.

Отправлено спустя 58 секунд:
как это блоками сделать я не знаю к сожалению.
Это оооочень сложный проект ??? Я уже всё что можно и не можно вынес на другие платы ардуино, и управляю по UART оттуда, здесь банально надо включать и выключать две платы, но так чтоб они не застревали в промежуточном состоянии. Ну увы...если переменная с управляющей платы пришла на отключение, ты хоть лопни хоть тресни она выключится на середине кода.

777.jpg
У вас нет необходимых прав для просмотра вложений в этом сообщении.
RootShell
Рядовой
Сообщения: 77
Зарегистрирован: 27 июн 2020, 04:22
Откуда: World
Имя: Agat
Контактная информация:

Как отключать платы не на взвешенном состоянии

Сообщение RootShell »

Можно начать с простого, а затем постепенно увеличивать сложность.
Если ли принципиальная разница в управлении платами? Они должны управляться по UART или достаточно считывать состояние пина?

Код: Выделить всё

#include <arduino.h>

void setup(){
    pinMode(7, INPUT);
    Serial.begin(9600);
}

void loop(){
    if(digitalRead(7)){
        serialWrite();
    }
}

void serialWrite(){
    Serial.println(F("one"));
    Serial.println(F("two"));
    Serial.println(F("end......"));
}

Код будет выполняться пока на ноге 7 будет логическая единица. И всегда будет завершать строкой в мониторе порта "end......"
SSSergeich
Капитан
Сообщения: 708
Зарегистрирован: 06 фев 2016, 11:01
Откуда: Ярославль
Имя: Сергей

Как отключать платы не на взвешенном состоянии

Сообщение SSSergeich »

Alex1968 писал(а): 01 сен 2020, 15:43 Сделал по вашей схеме
Вы похоже не проинвертировали выходы
Alex1968
Сержант
Сообщения: 173
Зарегистрирован: 11 дек 2019, 14:51
Имя: Alex

Как отключать платы не на взвешенном состоянии

Сообщение Alex1968 »

av писал(а): 01 сен 2020, 17:49
Alex1968 писал(а): 01 сен 2020, 17:20 Я правильно понял, что побороть проблему недовыполнения кода на плате которая управляется по условию из другой платы не получится?
есть возможность добавить 4 плату зразу после счетчика ? В этой плате обрабатывать переменные включение/отключение плат 2 и 3.
Добавить то можно, но она же будет включена с платой самого счётчика, а значит будет отъедать ресурсы ардуины, а значит скорость упадёт, частота генератора понизится в разы....Именно для того чтоб работала только лишь плата со счётчиком я и затеял эту котовасию с отключением плат.

Плата со счётчиком стабильно выдаёт 15 кгц, все настройки получает по UART с другой ардуины, стоит поставить рядом хоть один блок, даже самый простой хоть OR хоть AND, так сразу частота падает до 200 -300 гц
SSSergeich
Капитан
Сообщения: 708
Зарегистрирован: 06 фев 2016, 11:01
Откуда: Ярославль
Имя: Сергей

Как отключать платы не на взвешенном состоянии

Сообщение SSSergeich »

al3.PNG
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Alex1968
Сержант
Сообщения: 173
Зарегистрирован: 11 дек 2019, 14:51
Имя: Alex

Как отключать платы не на взвешенном состоянии

Сообщение Alex1968 »

SSSergeich писал(а): 01 сен 2020, 17:57
Alex1968 писал(а): 01 сен 2020, 15:43 Сделал по вашей схеме
Вы похоже не проинвертировали выходы
Какие выходы, это же ваша схема...Как вы предложили так и собрал.
SSSergeich
Капитан
Сообщения: 708
Зарегистрирован: 06 фев 2016, 11:01
Откуда: Ярославль
Имя: Сергей

Как отключать платы не на взвешенном состоянии

Сообщение SSSergeich »

[ref]Alex1968[/ref], посмотрите повнимательнее
Alex1968
Сержант
Сообщения: 173
Зарегистрирован: 11 дек 2019, 14:51
Имя: Alex

Как отключать платы не на взвешенном состоянии

Сообщение Alex1968 »

SSSergeich писал(а): 01 сен 2020, 18:07 [ref]Alex1968[/ref], посмотрите повнимательнее
но это ведь полнейший бред...Переменная для включения платы имеет значение 1, оно инвертируется в 0 и поступает на входы EN дисплея и генератора...и тем самым запрещают их работу...Плату включили и всё на ней выключили ??? Зачем мне включённая плата с отключённым дисплеем и генератором. Итог,на дисплее пусто, светодиод не работает.
SSSergeich
Капитан
Сообщения: 708
Зарегистрирован: 06 фев 2016, 11:01
Откуда: Ярославль
Имя: Сергей

Как отключать платы не на взвешенном состоянии

Сообщение SSSergeich »

Alex1968 писал(а): 01 сен 2020, 18:12 Переменная для включения платы имеет значение 1, оно инвертируется в 0 и поступает на входы EN дисплея и генератора...и тем самым запрещают их работу...Плату включили и всё на ней выключили ??? Зачем мне включённая плата с отключённым дисплеем и генератором. Итог,на дисплее пусто, светодиод не работает.
Какая переменная и для какой платы?

Отправлено спустя 56 секунд:
Вы попробовали или предположили?

Отправлено спустя 1 минуту 23 секунды:
Alex1968 писал(а): 01 сен 2020, 18:12 Переменная для включения платы имеет значение 1,
да
Alex1968 писал(а): 01 сен 2020, 18:12 оно инвертируется в 0 и поступает на входы EN дисплея и генератора
нет
Alex1968
Сержант
Сообщения: 173
Зарегистрирован: 11 дек 2019, 14:51
Имя: Alex

Как отключать платы не на взвешенном состоянии

Сообщение Alex1968 »

я понял что на ардуине что то более менее быстрое сделать не получится 328 микроконтроллер не тянет даже 20 кгц. Нет, конечно оставить один блок генератора в проекте можно и 50 кгц получить, но для чего мне один голый генератор без счётчиков, схем сравнения, сдвиговых регистров и прочей обвязки? Стоит поставить помимо генератора ещё пару блоков, так сразу частота снижается. Поэтому все эти пляски с бубном с ещё тремя ардуинами управляющими этим несчастным генератором, только ради того чтоб не терять скорость. Значит надо переходить на ESP8266 или ещё что то подобное, с более высокой тактовой частотой. Жаль, но пока его купить тут негде,с али заказывать пока не могу, почта не работает,особый карантинный режим продлён до 30 сентября
Alex1968
Сержант
Сообщения: 173
Зарегистрирован: 11 дек 2019, 14:51
Имя: Alex

Как отключать платы не на взвешенном состоянии

Сообщение Alex1968 »

SSSergeich писал(а): 01 сен 2020, 18:28
Alex1968 писал(а): 01 сен 2020, 18:12 Переменная для включения платы имеет значение 1, оно инвертируется в 0 и поступает на входы EN дисплея и генератора...и тем самым запрещают их работу...Плату включили и всё на ней выключили ??? Зачем мне включённая плата с отключённым дисплеем и генератором. Итог,на дисплее пусто, светодиод не работает.
Какая переменная и для какой платы?

Отправлено спустя 56 секунд:
Вы попробовали или предположили?

Отправлено спустя 1 минуту 23 секунды:
Alex1968 писал(а): 01 сен 2020, 18:12 Переменная для включения платы имеет значение 1,
да
Alex1968 писал(а): 01 сен 2020, 18:12 оно инвертируется в 0 и поступает на входы EN дисплея и генератора
нет
Переменная БОЛЬШЕ, или переменная МЕНЬШЕ, они принимают значение TRUE, именно при условии когда переменная БОЛЬШЕ или МЕНЬШЕ равны TRUE и включается плата №2 или №3.....

al3.jpg

А вы эту переменную инвертируете в FALCE и подаёте на вход EN генератора и дисплея, запрещая их работу.

Попробовал только что естественно на макетке. Дисплей пустой, светодиод не горит.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
SSSergeich
Капитан
Сообщения: 708
Зарегистрирован: 06 фев 2016, 11:01
Откуда: Ярославль
Имя: Сергей

Как отключать платы не на взвешенном состоянии

Сообщение SSSergeich »

[ref]Alex1968[/ref], нет
al5.PNG
al4.PNG
Отправлено спустя 5 минут 2 секунды:
Alex1968 писал(а): 01 сен 2020, 18:31 Значит надо переходить на ESP8266 или ещё что то подобное, с более высокой тактовой частотой.
или esp32 или стм...
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Alex1968
Сержант
Сообщения: 173
Зарегистрирован: 11 дек 2019, 14:51
Имя: Alex

Как отключать платы не на взвешенном состоянии

Сообщение Alex1968 »

SSSergeich писал(а): 01 сен 2020, 19:00 [ref]Alex1968[/ref], нет
al5.PNG
al4.PNG
Вы опять не поняли ? Константа BOLSHE и MENSHE равны значению TRUE, там же на скрине в услвиях отчётливо видно....Вы вешаете на них инверсию, тоесть меняете значение на противоположное на FALCE....При значении FALCE на входе EN генератора и дисплея они работать не будут.
SSSergeich
Капитан
Сообщения: 708
Зарегистрирован: 06 фев 2016, 11:01
Откуда: Ярославль
Имя: Сергей

Как отключать платы не на взвешенном состоянии

Сообщение SSSergeich »

Вы видите перекресток?
При значении BOLSHE = TRUE я инвертирую переменную MENSHE, которая равна 0 и после этого разрешаю работу!
И наоборот
Alex1968
Сержант
Сообщения: 173
Зарегистрирован: 11 дек 2019, 14:51
Имя: Alex

Как отключать платы не на взвешенном состоянии

Сообщение Alex1968 »

SSSergeich писал(а): 01 сен 2020, 19:12 переменную MENSHE
переменная MENSHE и переменнаая BOLSHE могут быть одновременно равны TRUE....И инвертировашись в 0 вешают в нерабочее положение всё что там есть.
Ingwar
Полковник
Сообщения: 1928
Зарегистрирован: 28 окт 2015, 22:47
Откуда: Ленобласть
Имя: Игорь
Поблагодарили: 2 раза

Как отключать платы не на взвешенном состоянии

Сообщение Ingwar »

SSSergeich писал(а): 01 сен 2020, 19:12 Вы видите перекресток?
Вам будет трудно, т.к. ...
Alex1968 писал(а): 01 сен 2020, 19:34 переменная MENSHE и переменнаая BOLSHE могут быть одновременно равны TRUE
Люди в своем большинстве живо интересуются всем на свете, за исключением того, что действительно стоит знать.
Ответить

Вернуться в «Помогите, а то я "нимагу"»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 3 гостя