Por favor, me ajudem... Eu gostaria de controlar um servo motor por um único botão. O projeto é o seguinte, ao pulsar o botão o motor gira um determinado grau e fica, quando pulsar de novo ele volta para o centro e assim sucessivamente.
Estou utilizando a linguagem C no compilador MikroC, segue o código inicial:
//////////////////////////////////////////////////////////////////////////////////////
#define S1 RA2_bit //define o port RA2 como S1.
#define S2 RA3_bit //define o porta RA3 como S2.
#define motor RB4_bit //define o port RB4 como motor.
int estado1 = 1;
int estado2 = 0;
//protótipos das funções de controle do servo.
void servo_antihorario();
void servo_centro();
void servo_horario();
void main() //função principal.
{
TRISB = 0b00000000; //definição de saída.
PORTB = 0b00000000; //garante nível lógico 0.
TRISA = 0b00011100; //definição de entrada.
PORTA = 0b00000010; //habilita os Leds no hardware.
while(1)
{
if (S1 == 1 && estado1 == 1){
servo_centro();
}
else if ( servo_horario();
}
}
//função move serve horario.
void servo_horario()
{
do{
motor = 0;
delay_us(18000);
motor = 1;
delay_us(2000);
}while (S1 == 0 && estado1 == 1);
}
//função move servo antihorario.
void servo_antihorario()
{
motor = 0;
delay_us(19000);
motor = 1;
delay_us(1000);
}
//função move servo centro.
void servo_centro()
{
motor = 0;
delay_us(18500);
motor = 1;
delay_us(1500);
}
//////////////////////////////////////////////////////////////
Este código que criei não esta funcionado. Eu já fiz de varias formas e nada. Me ajudem please.