Страница 1 из 1
Непонятное компилирование пользовательского блока
Добавлено: 28 фев 2020, 11:24
Allkonafft
Написал код для поворота сервы с заданием скорости (все фото ниже), т.к. стандартный не устраивает, потому как идет дерготня, т.к. при снятия сигнала с EN выполняется не myservo.detach(); а if (0) {servo.write (90);}. Так после компиляции я еще могу понять что к переменным добавляются цифры, чтоб не повторялись, но если вначале к названию класса добавляется, то и в дальнейшем пусть добавляется, затем также к некоторым переменным цифры не добавились, где идет вычисление вместо цифры 2 тоже непонятно что, ! заменен на !+цифры!!! Что такое? Может я что-то не догнал????
Непонятное компилирование пользовательского блока
Добавлено: 28 фев 2020, 17:03
RedSky
Выложите проект. Тут сам подход к построению блока неправильный.
Отправлено спустя 23 минуты 24 секунды:
Не увидел в штатном блоке такого
Allkonafft писал(а): 28 фев 2020, 11:24
при снятия сигнала с EN выполняется не myservo.detach(); а if (0) {servo.write (90);}
У меня получается так:
[spoiler]
Код: Выделить всё
#include <Servo.h>
Servo _SM1;
bool _gtv1;
void setup()
{
_SM1.attach(4);
}
void loop()
{
//Плата:1
if (_gtv1) {_SM1.write (111);}
}
[/spoiler]
А дрожать серва будет в любом случае, нужно снимать питание с мотора.
Непонятное компилирование пользовательского блока
Добавлено: 02 мар 2020, 15:48
Allkonafft
RedSky писал(а): 28 фев 2020, 17:03
Выложите проект. Тут сам подход к построению блока неправильный.
В чем ошибка? Если сам код правильный.
RedSky писал(а): 28 фев 2020, 17:03
А дрожать серва будет в любом случае, нужно снимать питание с мотора.
Так я и снимаю в своем коде функцией myservo.detach();
RedSky писал(а): 28 фев 2020, 17:03
У меня получается так:
И в чем различие??? У меня просто константа на входе En, а Вы переменную добавили. Все равно питание не снимается по входу EN просто идет выполнение условия, если на EN равно true то выполнять поворот на заданный градус, а не снятие питания с сервы функцией detach();, автору программы на заметку, могли бы этот стандартный блок исправить.
Но меня больше интересует, почему так компилируется код???
Непонятное компилирование пользовательского блока
Добавлено: 02 мар 2020, 17:34
RedSky
Код может и правильный, но блок построен неправильно. В редакторе блоков отдельно заполняются секции declare, setup, loop, function.
Функция detach не может отключить питание, нужно делать внешний ключ.
Непонятное компилирование пользовательского блока
Добавлено: 02 мар 2020, 17:36
rw6cm
Allkonafft писал(а): 02 мар 2020, 15:48
В чем ошибка? Если сам код правильный.
активируйте опцию разрешить использовать только раз
Непонятное компилирование пользовательского блока
Добавлено: 03 мар 2020, 13:34
Allkonafft
RedSky писал(а): 02 мар 2020, 17:34
Код может и правильный, но блок построен неправильно. В редакторе блоков отдельно заполняются секции declare, setup, loop, function.
Функция detach не может отключить питание, нужно делать внешний ключ.
Так у меня все абсолютно все по секциям раскидано, Вы видимо не пробовали программировать с помощью классов. Как это всегда так, вроде постоянно пользуюсь detach и ничего не дергается
https://www.arduino.cc/en/Reference/ServoDetach
Отправлено спустя 51 секунду:
rw6cm писал(а): 02 мар 2020, 17:36
Allkonafft писал(а): 02 мар 2020, 15:48
В чем ошибка? Если сам код правильный.
активируйте опцию разрешить использовать только раз
Да это понятно, а если у меня 2 и более сервы?