Така ето и една съвсем семпла функция на C, която може да сложите във вашия код и да управлявате серво. Първо трябва да кажа, че функцията е компилирана и тествана на CCS 4.084.
void rotate_servo(int angle) // -90 < angle < 90
{
int i, us;
us = 1000 + ((90 + angle)/180) * 1000;
for(i = 0; i < 10; i++)
{
output_bit(PIN_A0, 1);
delay_us(us);
output_bit(PIN_A0, 0);
delay_ms(20);
}
}
angle е стойността на ъгъла, на който желаете завъртане.
Приел съм, че сервото е свързано с PIN_A0, но може да го промените, дори и като аргумент да бъде ако желаете. Попринцип е желателно сигналите към сервото да се пращат постоянно, но тъй като е хубаво контролера да не се занимава само с тази задача, за това импулсът се изпраща 10 пъти и от там разчитаме електрониката на сервото да пази желания ъгъл на завъртане, при външно въздействие (което е вградено вече в почти всички серва). Надявам се функцийката да бъде полезна и да демонстрира, как на пръв поглед сложни неща, могат да бъдат семпло реализирани.