Estoy usando una MCU 8051 y deseo controlar un servomotor RC con 2 botones para un carro de juguete RC.
Tengo un código para usar dos botones, uno para la derecha y otro para la izquierda.
Cuando hago clic en un botón, el servomotor se mueve en una dirección pero luego permanece en esta posición.
Lo que quiero es que cuando aprieto el botón, el servomotor se mueva en una dirección y vuelva a su posición inicial al soltar el botón.
Probé este código, pero no funcionó para mí.
#include<reg51.h>
sbit output=P1^0;
sbit S1 = P2^0;
sbit S2 = P2^1;
void timer(int msec) // Function for timer
{
int i;
for(i=0;i<msec;i++)
{
TMOD=0x20; // Mode2
TH1=0xFF;
TL1=0xD1;
//TH1= -23; // 50usec timer
TR1=1;
while(TF1==0);
TF1=0;
TR1=0;
}
}
void main()
{
int i;
output=0;
while(1)
{
//move to LEFT
if (S1==0)
for(i=0;i<300;i++)
{
output=1;
timer(20);
output=0;
timer(40);
output=1;
timer(40);
output=0;
timer(40);
}
//move to RIGHT
if (S2 == 0)
for(i=0;i<300;i++)
{
output=1;
timer(40);
output=0;
timer(40);
output=1;
timer(20);
output=0;
timer(40);
}
}
}