Непонятное компилирование пользовательского блока
-
- Рядовой
- Сообщения: 7
- Зарегистрирован: 12 янв 2019, 11:16
- Имя: Игорь
Непонятное компилирование пользовательского блока
Написал код для поворота сервы с заданием скорости (все фото ниже), т.к. стандартный не устраивает, потому как идет дерготня, т.к. при снятия сигнала с EN выполняется не myservo.detach(); а if (0) {servo.write (90);}. Так после компиляции я еще могу понять что к переменным добавляются цифры, чтоб не повторялись, но если вначале к названию класса добавляется, то и в дальнейшем пусть добавляется, затем также к некоторым переменным цифры не добавились, где идет вычисление вместо цифры 2 тоже непонятно что, ! заменен на !+цифры!!! Что такое? Может я что-то не догнал????
У вас нет необходимых прав для просмотра вложений в этом сообщении.
- RedSky
- Лейтенант
- Сообщения: 576
- Зарегистрирован: 19 дек 2016, 20:07
- Откуда: Днепропетровск
- Имя: Алексей
- Поблагодарили: 1 раз
Непонятное компилирование пользовательского блока
Выложите проект. Тут сам подход к построению блока неправильный.
Отправлено спустя 23 минуты 24 секунды:
Не увидел в штатном блоке такого
[spoiler][/spoiler]
А дрожать серва будет в любом случае, нужно снимать питание с мотора.
Отправлено спустя 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);}
}
А дрожать серва будет в любом случае, нужно снимать питание с мотора.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
-
- Рядовой
- Сообщения: 7
- Зарегистрирован: 12 янв 2019, 11:16
- Имя: Игорь
Непонятное компилирование пользовательского блока
В чем ошибка? Если сам код правильный.RedSky писал(а): 28 фев 2020, 17:03 Выложите проект. Тут сам подход к построению блока неправильный.
Так я и снимаю в своем коде функцией myservo.detach();RedSky писал(а): 28 фев 2020, 17:03 А дрожать серва будет в любом случае, нужно снимать питание с мотора.
И в чем различие??? У меня просто константа на входе En, а Вы переменную добавили. Все равно питание не снимается по входу EN просто идет выполнение условия, если на EN равно true то выполнять поворот на заданный градус, а не снятие питания с сервы функцией detach();, автору программы на заметку, могли бы этот стандартный блок исправить.
Но меня больше интересует, почему так компилируется код???
- RedSky
- Лейтенант
- Сообщения: 576
- Зарегистрирован: 19 дек 2016, 20:07
- Откуда: Днепропетровск
- Имя: Алексей
- Поблагодарили: 1 раз
Непонятное компилирование пользовательского блока
Код может и правильный, но блок построен неправильно. В редакторе блоков отдельно заполняются секции declare, setup, loop, function.
Функция detach не может отключить питание, нужно делать внешний ключ.
Функция detach не может отключить питание, нужно делать внешний ключ.
- rw6cm
- Полковник
- Сообщения: 2372
- Зарегистрирован: 06 сен 2015, 20:25
- Имя: Владимир
- Поблагодарили: 41 раз
Непонятное компилирование пользовательского блока
активируйте опцию разрешить использовать только раз
Win10-64, FLProg (portable)
-
- Рядовой
- Сообщения: 7
- Зарегистрирован: 12 янв 2019, 11:16
- Имя: Игорь
Непонятное компилирование пользовательского блока
Так у меня все абсолютно все по секциям раскидано, Вы видимо не пробовали программировать с помощью классов. Как это всегда так, вроде постоянно пользуюсь detach и ничего не дергается https://www.arduino.cc/en/Reference/ServoDetachRedSky писал(а): 02 мар 2020, 17:34 Код может и правильный, но блок построен неправильно. В редакторе блоков отдельно заполняются секции declare, setup, loop, function.
Функция detach не может отключить питание, нужно делать внешний ключ.
Отправлено спустя 51 секунду:
Да это понятно, а если у меня 2 и более сервы?
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость