*************************************************************
'* Name : abriendo puerta de trabuquito con servo *
'* Author : CARPTROYA *
'* Notice : Copyright (c) 2011 [select VIEW...EDITOR OPTIONS] *
'* : All Rights Reserved *
'* Date : 12/05/2011 *
'* Version : 1.0 *
'* Notes : *
'* : *
'****************************************************************
Device=16F84A
Xtal 4
'
'
' Le decimos al compilador en que pin colocaremos el lcd
'
LCD_Type = 0 ' LCD alfanumerica tipica
LCD_DTPin = PORTB.4 ' datos PORTB.4,5,6,7
LCD_RSPin = PORTB.1 ' LCD RS pin
LCD_ENPin = PORTB.3 ' LCD EN pin
LCD_Interface = 4 ' 4-bit LCD
LCD_Lines = 2 ' 2-Line LCD
'
'
' configuramos los puertos
'
'
TRISA =%00000001 ' ponemos el puerto a como salida menos el pin RA0 como entrada
TRISB=%00000000 'ponemos el puerto b como salida
'
'
'
' declaramos las variable que utilizaremos
'
'
Dim x As Word
Dim y As Word
Dim z As Word
Dim t As Byte
'
'
' pongo el servo en el centro con X= 1500
'
' la variable " y " la pongo a cero esta la utilizare para saber
' los grados en que se encuentra la puerta
'
'
x= 1500
y=0
'
'
' Comienza el programa
'
'
'
inicio:
Servo PORTA.1,x ' ponemos el servo en el centro
If PORTA.0=0 Then 'cuando el pin RA0 se pone a cero ejecuta las dos lineas siguientes
' con ello conseguimos que aumente poco a poco el valor de x
' y se consigue que el servo se desplace muy lentamente
x=x+10
y=Y+10
EndIf
If x<2000 Then ' nos aseguramos que X nunca supere el valor maximo
' que admite el servo
x=2000
For t=0 To 29 ' creo un bucle que repite 30 veces un retardo de 1 segundo
DelayMS 1000
Next
Servo PORTA.1,1500 ' ponemos de nuevo el servo en el centro
x=1500
y=0
EndIf
z=y*90/500 ' algoritmo para pasar a grados la posicion del servo
Print At 2,1,"grados ",Dec3 z ' saca los grados por LCD
GoTo inicio