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

кнопки и переменные

Добавлено: 11 янв 2020, 01:44
shura2
тренируюсь на кошках так сказать

Собрал конструкцию из 3 кнопок и сервы. первый вариант - нажатие на кнопку двигает серву на заданный угол

[spoiler]
3knopki.png
[/spoiler]

Все работает.

Заменил действие на третьей кнопке (поворот сервы на угол 10град по нажатию кнопки):

[spoiler]
3 knopki2.png
[/spoiler]

перестали работать первые две кнопки. Почему?

кнопки и переменные

Добавлено: 11 янв 2020, 05:45
edyapd
[ref]shura2[/ref], а вы найдите отличие в записи переменной "поворот" для первых двух кнопок и для третьей. И сразу станет всё понятно

кнопки и переменные

Добавлено: 11 янв 2020, 17:41
shura2
Как бы и там и там переменной присваивается значение. Согласно моей логике в первом или во втором случае переменной должно присвоится значение. Но не присваивается. Почему перестали работать первые две, а третья работает я не понимаю.

кнопки и переменные

Добавлено: 11 янв 2020, 17:51
dizzyy
[ref]shura2[/ref], что бы не присвоилось переменной в первых случаях , то третий всегда перезапишет свое ..переделайте 3 пункт на условие записи(как в первых) и все пойдет

Отправлено спустя 3 минуты 7 секунд:
если нажата кнопка 1 то поворот на столько..
если нажата кнопка 2 то поворот на столько
по барабану нажата или нет 3 кнопка присвоить переменной значение счетчика умноженное на 10
выполнить поворот

вот ваш алгоритм

кнопки и переменные

Добавлено: 12 янв 2020, 01:38
shura2
Спасибо! Поправил - заработало.
[spoiler]
3 knopki_rabochij.png
[/spoiler]
dizzyy писал(а): 11 янв 2020, 17:51 shura2, что бы не присвоилось переменной в первых случаях , то третий всегда перезапишет свое ..переделайте 3 пункт на условие записи(как в первых) и все пойдет
сделал, но все равно не понимаю,почему не работали первые две кнопки, даже если не была нажата третья?
что означает en в переменной?

кнопки и переменные

Добавлено: 12 янв 2020, 06:01
edyapd
En это разрешение на запись в переменную.
Просто представьте себя на месте цикла программы. И от вас требуется принести значение, на которое требуется повернуть серву.
Идёте вы с блокнотиком и опрашиваете устройства. Подходите к первой кнопке. Есть разрешение на управление? Есть. Записываете её значение в блокнотик. Шагаете дальше. Подходите ко второй кнопке. Есть разрешение на управление? Нет. Свободен. Шагаете к третьей. Есть разрешение? А ей разрешение не требуется. Ясно, вычёркиваете то, что дала вам первая кнопка и записываете значение третьей. Пришли вы к серве. Какое значение вы ей должны отдать?
А ещё, таким образом у вас на серву может быть два значения. Не одновременно конечно. А скажем нажали на кнопку. Записали значение в переменную. А считывание с переменной происходит не после того, как были опрошены все устройства, а где-то между ними. Серва у вас повернулась на заданное значение. А в следующем цикле эта переменная перезаписалась той, для которой разрешение не требуется и серва вернулась в исходное состояние. Она физически конечно не успеет даже повернуться, но конвульсии будут.

кнопки и переменные

Добавлено: 14 янв 2020, 21:53
shura2
Спасибо большое за разжеванное объяснение.

кнопки и переменные

Добавлено: 18 янв 2020, 20:36
shura2
Продолжаю тренироваться на кошках.

Сделал такую схемку:

[spoiler]
3 knopki_serva.png
[/spoiler]
1 кнопка - 0град
2 кнопка - 90 град
3 кнопка - +10 градусов к текущему положению.
все работает без замечаний.

Вопрос - как лучше упростить схему?

второй вопрос, если мне нужно двигать серву вниз, то ставить новый счетчик?

кнопки и переменные

Добавлено: 18 янв 2020, 20:46
edyapd
[ref]shura2[/ref], было бы удобней, если бы вы выложили файл проекта, а не картинку.

кнопки и переменные

Добавлено: 18 янв 2020, 23:48
shura2
К сожалению не сохранил.

Так как поменял логику - теперь 1 кнопка ставит серву в положение 90град, остальные две кнопки +-10 град.
[spoiler]
3 knopki+-.png
[/spoiler]

и тут тоже вопрос: мне для того что бы подключить сброс (R), SP и триггер мало того, что пришлось ввести логику OR, не нужную в данном случае, так еще и соблюдать порядок в подключении. (сначала R, потом OR, потом триггер). Это фича или баг?
может есть какой то другой способ?

[spoiler]
3 knopki+-.flp
[/spoiler]

кнопки и переменные

Добавлено: 19 янв 2020, 00:44
grin-mpx
3 knopki+-2.flp
[spoiler]
3 кнопки.jpg
[/spoiler]

Отправлено спустя 2 минуты 57 секунд:
shura2 писал(а): 18 янв 2020, 23:48 мне для того что бы подключить сброс (R), SP и триггер мало того, что пришлось ввести логику OR, не нужную в данном случае, так еще и соблюдать порядок в подключении. (сначала R, потом OR, потом триггер).
А зачем там вообще вверху OR нужен? Тем более одноногий?

кнопки и переменные

Добавлено: 19 янв 2020, 03:20
shura2
grin-mpx писал(а): 19 янв 2020, 00:44 А зачем там вообще вверху OR нужен? Тем более одноногий?
[ref]grin-mpx[/ref], А он и не нужен был. я не смог 3 вывода подключить на кнопку.

А зачем на вашей схеме Rtriger? и что за Ftriger? Я попробовал к счетчику напрямую "кнопку 90гр" подключить - работает
[spoiler]
3 knopki+- v2.png
[/spoiler]

кнопки и переменные

Добавлено: 19 янв 2020, 13:56
grin-mpx
shura2 писал(а): 19 янв 2020, 03:20 А зачем на вашей схеме Rtriger? Я попробовал к счетчику напрямую "кнопку 90гр" подключить - работает
Работает и хорошо. Rtriger для записи в 1 цикл независимо от длины нажатия на кнопку.
shura2 писал(а): 19 янв 2020, 03:20 и что за Ftriger
viewtopic.php?f=81&t=2977

кнопки и переменные

Добавлено: 01 фев 2020, 23:58
shura2
А как сделать, что бы повторное нажатие кнопки не перезапускало какой-либо цикл снова?

кнопки и переменные

Добавлено: 02 фев 2020, 02:02
support
Но можно ещё проще
Серво.PNG
Отправлено спустя 2 минуты 7 секунд:
Да и вообще можно отказатся от R тригеров. Счетные входы счетчика и так работают по переднему фронту.

Отправлено спустя 2 минуты 34 секунды:
Серво1.PNG

кнопки и переменные

Добавлено: 05 фев 2020, 01:15
shura2
А как сделать, что бы, к примеру, кнопка "90град" не "нажималась" повторно, пока выполняется поворот?

кнопки и переменные

Добавлено: 05 фев 2020, 05:50
edyapd
shura2 писал(а): 05 фев 2020, 01:15 А как сделать, что бы, к примеру, кнопка "90град" не "нажималась" повторно, пока выполняется поворот?
Для этого надо ввести обратную связь. В своём устройстве, делаете концевик, а выход с него заводите в проект.
А там уже в зависимости от логики схема "И" или "RS-тригер".
Просто сами подумайте, как программа может узнать, повернулась Серва или ещё нет?