Подскажите пожалуйста по библиотеке 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 которая будет содержать данные о положении, но чё то не пойму пока как))



























