Непонятное компилирование пользовательского блока

При компилировании блока, который написан с помощь кода появляются проблемы

В данный форуме Вы можете создавать темы посвящённые расширению функционала программы или сайта. После рассмотрения Ваше предложение будет перенесено в соответствующее место
Ответить
Allkonafft
Рядовой
Сообщения: 7
Зарегистрирован: 12.01.2019{, 11:16}
Репутация: 0
Имя: Игорь

Непонятное компилирование пользовательского блока

#1

Сообщение Allkonafft » 28.02.2020{, 11:24}

Написал код для поворота сервы с заданием скорости (все фото ниже), т.к. стандартный не устраивает, потому как идет дерготня, т.к. при снятия сигнала с EN выполняется не myservo.detach(); а if (0) {servo.write (90);}. Так после компиляции я еще могу понять что к переменным добавляются цифры, чтоб не повторялись, но если вначале к названию класса добавляется, то и в дальнейшем пусть добавляется, затем также к некоторым переменным цифры не добавились, где идет вычисление вместо цифры 2 тоже непонятно что, ! заменен на !+цифры!!! Что такое? Может я что-то не догнал????
Вложения
008.png
007.png
006.png
005.png

Аватара пользователя
RedSky
Лейтенант
Сообщения: 574
Зарегистрирован: 19.12.2016{, 20:07}
Репутация: 72
Откуда: Днепропетровск
Имя: Алексей

Непонятное компилирование пользовательского блока

#2

Сообщение RedSky » 28.02.2020{, 16:39}

Выложите проект. Тут сам подход к построению блока неправильный.

Отправлено спустя 23 минуты 24 секунды:
Не увидел в штатном блоке такого
Allkonafft писал(а):
28.02.2020{, 11:24}
при снятия сигнала с EN выполняется не myservo.detach(); а if (0) {servo.write (90);}
У меня получается так:
СпойлерПоказать

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

#include <Servo.h>
Servo _SM1;
bool _gtv1;

void setup()
{

_SM1.attach(4);

}
void loop()
{

//Плата:1
if (_gtv1) {_SM1.write (111);} 

}
А дрожать серва будет в любом случае, нужно снимать питание с мотора.
Вложения
servo_test.flp
(19.41 КБ) 40 скачиваний

Allkonafft
Рядовой
Сообщения: 7
Зарегистрирован: 12.01.2019{, 11:16}
Репутация: 0
Имя: Игорь

Непонятное компилирование пользовательского блока

#3

Сообщение Allkonafft » 02.03.2020{, 15:48}

RedSky писал(а):
28.02.2020{, 17:03}
Выложите проект. Тут сам подход к построению блока неправильный.
В чем ошибка? Если сам код правильный.
RedSky писал(а):
28.02.2020{, 17:03}
А дрожать серва будет в любом случае, нужно снимать питание с мотора.
Так я и снимаю в своем коде функцией myservo.detach();
RedSky писал(а):
28.02.2020{, 17:03}
У меня получается так:
И в чем различие??? У меня просто константа на входе En, а Вы переменную добавили. Все равно питание не снимается по входу EN просто идет выполнение условия, если на EN равно true то выполнять поворот на заданный градус, а не снятие питания с сервы функцией detach();, автору программы на заметку, могли бы этот стандартный блок исправить.
Но меня больше интересует, почему так компилируется код???

Аватара пользователя
RedSky
Лейтенант
Сообщения: 574
Зарегистрирован: 19.12.2016{, 20:07}
Репутация: 72
Откуда: Днепропетровск
Имя: Алексей

Непонятное компилирование пользовательского блока

#4

Сообщение RedSky » 02.03.2020{, 17:34}

Код может и правильный, но блок построен неправильно. В редакторе блоков отдельно заполняются секции declare, setup, loop, function.
Функция detach не может отключить питание, нужно делать внешний ключ.

Аватара пользователя
rw6cm
Полковник
Сообщения: 2283
Зарегистрирован: 06.09.2015{, 20:25}
Репутация: 334
Имя: Владимир

Непонятное компилирование пользовательского блока

#5

Сообщение rw6cm » 02.03.2020{, 17:36}

Allkonafft писал(а):
02.03.2020{, 15:48}
В чем ошибка? Если сам код правильный.
активируйте опцию разрешить использовать только раз
Win10-64, FLProg (portable)

Allkonafft
Рядовой
Сообщения: 7
Зарегистрирован: 12.01.2019{, 11:16}
Репутация: 0
Имя: Игорь

Непонятное компилирование пользовательского блока

#6

Сообщение Allkonafft » 03.03.2020{, 13:33}

RedSky писал(а):
02.03.2020{, 17:34}
Код может и правильный, но блок построен неправильно. В редакторе блоков отдельно заполняются секции declare, setup, loop, function.
Функция detach не может отключить питание, нужно делать внешний ключ.
Так у меня все абсолютно все по секциям раскидано, Вы видимо не пробовали программировать с помощью классов. Как это всегда так, вроде постоянно пользуюсь detach и ничего не дергается https://www.arduino.cc/en/Reference/ServoDetach

Отправлено спустя 51 секунду:
rw6cm писал(а):
02.03.2020{, 17:36}
Allkonafft писал(а):
02.03.2020{, 15:48}
В чем ошибка? Если сам код правильный.
активируйте опцию разрешить использовать только раз
Да это понятно, а если у меня 2 и более сервы?

Ответить

Вернуться в «Новые»