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

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

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

Сообщение Allkonafft »

Написал код для поворота сервы с заданием скорости (все фото ниже), т.к. стандартный не устраивает, потому как идет дерготня, т.к. при снятия сигнала с EN выполняется не myservo.detach(); а if (0) {servo.write (90);}. Так после компиляции я еще могу понять что к переменным добавляются цифры, чтоб не повторялись, но если вначале к названию класса добавляется, то и в дальнейшем пусть добавляется, затем также к некоторым переменным цифры не добавились, где идет вычисление вместо цифры 2 тоже непонятно что, ! заменен на !+цифры!!! Что такое? Может я что-то не догнал????
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
RedSky
Лейтенант
Сообщения: 576
Зарегистрирован: 19 дек 2016, 20:07
Откуда: Днепропетровск
Имя: Алексей
Поблагодарили: 1 раз

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

Сообщение 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]

А дрожать серва будет в любом случае, нужно снимать питание с мотора.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Allkonafft
Рядовой
Сообщения: 7
Зарегистрирован: 12 янв 2019, 11:16
Имя: Игорь

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

Сообщение Allkonafft »

RedSky писал(а): 28 фев 2020, 17:03 Выложите проект. Тут сам подход к построению блока неправильный.
В чем ошибка? Если сам код правильный.
RedSky писал(а): 28 фев 2020, 17:03 А дрожать серва будет в любом случае, нужно снимать питание с мотора.
Так я и снимаю в своем коде функцией myservo.detach();
RedSky писал(а): 28 фев 2020, 17:03 У меня получается так:
И в чем различие??? У меня просто константа на входе En, а Вы переменную добавили. Все равно питание не снимается по входу EN просто идет выполнение условия, если на EN равно true то выполнять поворот на заданный градус, а не снятие питания с сервы функцией detach();, автору программы на заметку, могли бы этот стандартный блок исправить.
Но меня больше интересует, почему так компилируется код???
Аватара пользователя
RedSky
Лейтенант
Сообщения: 576
Зарегистрирован: 19 дек 2016, 20:07
Откуда: Днепропетровск
Имя: Алексей
Поблагодарили: 1 раз

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

Сообщение RedSky »

Код может и правильный, но блок построен неправильно. В редакторе блоков отдельно заполняются секции declare, setup, loop, function.
Функция detach не может отключить питание, нужно делать внешний ключ.
Аватара пользователя
rw6cm
Полковник
Сообщения: 2372
Зарегистрирован: 06 сен 2015, 20:25
Имя: Владимир
Поблагодарили: 41 раз

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

Сообщение rw6cm »

Allkonafft писал(а): 02 мар 2020, 15:48 В чем ошибка? Если сам код правильный.
активируйте опцию разрешить использовать только раз
Win10-64, FLProg (portable)
Allkonafft
Рядовой
Сообщения: 7
Зарегистрирован: 12 янв 2019, 11:16
Имя: Игорь

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

Сообщение 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 и более сервы?
Ответить

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

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

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