Страница 3 из 5

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

Добавлено: 01 сен 2020, 17:20
Alex1968
Я правильно понял, что побороть проблему недовыполнения кода на плате которая управляется по условию из другой платы не получится?

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

Добавлено: 01 сен 2020, 17:25
RootShell
На вскидку очень большой loop(), много проверок if/else. Может как то их вынести в функции? От какой библиотеки заголовок CyberLib.h

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

Добавлено: 01 сен 2020, 17:30
Alex1968
RootShell писал(а): 01 сен 2020, 17:25 На вскидку очень большой loop(), много проверок if/else. Может как то их вынести в функции? От какой библиотеки заголовок CyberLib.h
я не писатель кодов, собрал из блоков данной программы, на сайте которой вы сейчас находитесь.

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

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

Отправлено спустя 58 секунд:
как это блоками сделать я не знаю к сожалению.

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

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

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

777.jpg

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

Добавлено: 01 сен 2020, 17:55
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......"

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

Добавлено: 01 сен 2020, 17:57
SSSergeich
Alex1968 писал(а): 01 сен 2020, 15:43 Сделал по вашей схеме
Вы похоже не проинвертировали выходы

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

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

Плата со счётчиком стабильно выдаёт 15 кгц, все настройки получает по UART с другой ардуины, стоит поставить рядом хоть один блок, даже самый простой хоть OR хоть AND, так сразу частота падает до 200 -300 гц

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

Добавлено: 01 сен 2020, 17:58
SSSergeich
al3.PNG

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

Добавлено: 01 сен 2020, 18:00
Alex1968
SSSergeich писал(а): 01 сен 2020, 17:57
Alex1968 писал(а): 01 сен 2020, 15:43 Сделал по вашей схеме
Вы похоже не проинвертировали выходы
Какие выходы, это же ваша схема...Как вы предложили так и собрал.

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

Добавлено: 01 сен 2020, 18:07
SSSergeich
[ref]Alex1968[/ref], посмотрите повнимательнее

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

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

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

Добавлено: 01 сен 2020, 18:28
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 дисплея и генератора
нет

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

Добавлено: 01 сен 2020, 18:31
Alex1968
я понял что на ардуине что то более менее быстрое сделать не получится 328 микроконтроллер не тянет даже 20 кгц. Нет, конечно оставить один блок генератора в проекте можно и 50 кгц получить, но для чего мне один голый генератор без счётчиков, схем сравнения, сдвиговых регистров и прочей обвязки? Стоит поставить помимо генератора ещё пару блоков, так сразу частота снижается. Поэтому все эти пляски с бубном с ещё тремя ардуинами управляющими этим несчастным генератором, только ради того чтоб не терять скорость. Значит надо переходить на ESP8266 или ещё что то подобное, с более высокой тактовой частотой. Жаль, но пока его купить тут негде,с али заказывать пока не могу, почта не работает,особый карантинный режим продлён до 30 сентября

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

Добавлено: 01 сен 2020, 18:36
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 генератора и дисплея, запрещая их работу.

Попробовал только что естественно на макетке. Дисплей пустой, светодиод не горит.

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

Добавлено: 01 сен 2020, 19:05
SSSergeich
[ref]Alex1968[/ref], нет
al5.PNG
al4.PNG
Отправлено спустя 5 минут 2 секунды:
Alex1968 писал(а): 01 сен 2020, 18:31 Значит надо переходить на ESP8266 или ещё что то подобное, с более высокой тактовой частотой.
или esp32 или стм...

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

Добавлено: 01 сен 2020, 19:07
Alex1968
SSSergeich писал(а): 01 сен 2020, 19:00 [ref]Alex1968[/ref], нет
al5.PNG
al4.PNG
Вы опять не поняли ? Константа BOLSHE и MENSHE равны значению TRUE, там же на скрине в услвиях отчётливо видно....Вы вешаете на них инверсию, тоесть меняете значение на противоположное на FALCE....При значении FALCE на входе EN генератора и дисплея они работать не будут.

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

Добавлено: 01 сен 2020, 19:12
SSSergeich
Вы видите перекресток?
При значении BOLSHE = TRUE я инвертирую переменную MENSHE, которая равна 0 и после этого разрешаю работу!
И наоборот

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

Добавлено: 01 сен 2020, 19:34
Alex1968
SSSergeich писал(а): 01 сен 2020, 19:12 переменную MENSHE
переменная MENSHE и переменнаая BOLSHE могут быть одновременно равны TRUE....И инвертировашись в 0 вешают в нерабочее положение всё что там есть.

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

Добавлено: 01 сен 2020, 19:56
Ingwar
SSSergeich писал(а): 01 сен 2020, 19:12 Вы видите перекресток?
Вам будет трудно, т.к. ...
Alex1968 писал(а): 01 сен 2020, 19:34 переменная MENSHE и переменнаая BOLSHE могут быть одновременно равны TRUE