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