Hola que tal a todo el foro!
Necesito alguna idea,consejo o ejemplo de como puedo posicionar un servo de forma aleatoria sin usar nada es decir sin pulsadores,ni pots,ni adc,etc unicamente el valor a cargar en la variable pos y que segun ese valor se coloque en posicion x,otro valor y se coloque en la posicion y, otro valor y se coloque en la posicion z,no necesariamente tenga que ser consecutivo osea en pocas palabras jugar con el servo,moverlo en cualquier posicion de forma aleatoria claro con su respectivo pause todo esto utilizando la interrupcion por timer0.
Hice un recorrido por el foro y los temas sobre servos son los citados arriba utilizando pulsadores,pots,adc,la instruccion pulsout,pwm,...todo esto ya lo he utilizado con resultados satisfactorios...Ahora lo que deseo es mover el servo automaticamente con int/tmr0 (que se posicione en un angulo cierto tiempo,luego se mueva a otro angulo espere cierto tiempo y asi sucesivamente...),intente cargar valores a la variable pos con su respectiva pause pero no hace lo que yo deseo osea cargo pos=23,se mueve digamos a la posicion max(angulo +90) enseguida cargo pos=15 (centro) y no regresa...entonces desde aqui hay algo mal no se si falte poner limites a alguna variable dentro del main o crear otra variable en fin...si alguien tiene un poco de tiempo,dejo datos y parte del codigo...Gracias por algun aporte.
Datos:
Desbordamiento del timer0: cada 100us
Oscilador: 20MHz
Pic: pic16f628a
Compilador:Pic Basic Pro
Simulador:Proteus
Extracto del codigo:
PORTB.0=0
On Interrupt GoTo Interrupciones_ISR
main:
pos=x ;x grados
pos=y ;y grados
pos=z ;z grados
goto main
Disable
Interrupciones_ISR:
if INTCON.2=1 THEN
contador=contador+1
if contador > 200 then contador=0
iF contador < pos then PORTB.0=1
if contador = pos then PORTB.0=0
ENDIF
TMR0=166 ;carga TMR0
INTCON.2 = 0
Resume
Enable
end