2

Подскажите пожалуйста по библиотеке Servo.h для ардуино

если открыть Servo.cpp там есть DEFAULT_PULSE_WIDTH

Servo::Servo()

{

if( ServoCount < MAX_SERVOS) {

this->servoIndex = ServoCount++;

servos[this->servoIndex].ticks = usToTicks(DEFAULT_PULSE_WIDTH);

}

else

this->servoIndex = INVALID_SERVO ; // too many servos

}

вот можно ли туда, вместо DEFAULT_PULSE_WIDTH, что-то добавить отсюда :

int Servo::read() // return the value as degrees

{

return map( this->readMicroseconds()+1, SERVO_MIN(), SERVO_MAX(), 0, 180);

}

int Servo::readMicroseconds()

{

unsigned int pulsewidth;

if( this->servoIndex != INVALID_SERVO )

pulsewidth = ticksToUs(servos[this->servoIndex].ticks) + TRIM_DURATION ; // 12 aug 2009

else

pulsewidth = 0;

return pulsewidth;

}

чтобы при инициализации пина сервопривод вставал не в дефолтное значение, а в считанное с текущего положения?

я просто не особо разбираюсь в программировании, и читаю только мануалы по командам в библиотеках, ну и по примерам из интернета.

находил какие-то древние вопросы на форумах, там советовали подключать транзистор на питание сервопривода, типа после прохождения всех attach в Setup, открывать транзистор. но без питания с сервопривода невозможно считать положение. сервопривод китайский, на 3 провода: плюс минус и управление.

если я не ошибаюсь, то можно создать переменную в начале Servo.cpp которая будет содержать данные о положении, но чё то не пойму пока как))

Arduino/Ардуино проекты

19 постов466 подписчиков

Правила сообщества

— Не оскорблять администрацию.

— Не оскорблять других участников.

— Не затрагивать тему политики.

— Не материться!

— Не допускаются расистские высказывания, сексизм, национализм.

— Запрещена реклама сторонних проектов, товаров, сайтов, блогов, ютуб каналов.

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

— Нет спаму и фишингу!