'****************************************************************
'* Name : UNTITLED.BAS *
'* Author : Miguel Noe Garcia Perez *
'* Notice : Copyright (c) 2010 Iberica 2000 *
'* : All Rights Reserved *
'* Date : 03/09/2010 *
'* Version : 1.0 *
'* Notes : *
'* : *
'****************************************************************
' Control a servo motor attached to pin 3 of PORTA
DEVICE 16f876 ' We'll use the new PICmicro
Device = 16F876
XTAL = 4
LCD_TYPE = 0
LCD_LINES = 4
LCD_DTPIN = PORTB.4
LCD_RSPIN = PORTB.3
LCD_ENPIN = PORTB.2
LCD_INTERFACE = 4
DIM Grados as dWORD ' Servo Position
Dim Punto as word
DIM Pos as WORD ' Servo Position
Dim i as word
dim Velocidad as word
SYMBOL Pin = PORTA.5 ' Alias the servo pin
ALL_DIGITAL = ON ' PORTA to digital
CLS ' Clear the LCD
Pos = 400 ' Centre the servo
PORTA = 0 ' PORTA lines low to read buttons
TRISA = %00000111 ' Enable the button pins as inputs
for i = 0 to 15
pos = 400
SERVO Pin , Pos
delayms 5
next
'Check any button pressed to move servo
Main:
PRINT AT 1 , 1 , "Position=" , Dec Pos , " "
DelayMS 500
'for i = 10 to 0 step -1
' print at 2,2,"Tiempo: ", dec2 i
' delayms 1000
' next
' IF PORTA.0 = 0 AND Pos < 3000 Then pos = pos +2 'inc Pos ' Move servo left
' IF PORTA.1 = 0 Then Pos = 1500 ' Centre servo
' IF PORTA.2 = 0 AND Pos > 0 Then pos = pos -2 ' dec Pos ' Move servo right
' Regulacion servo futaba S 3001
Velocidad =1
i=400
grados = 0
inicio:
punto = 1
'for velocidad = 10 to 30
for pos = 400 to 2430 step 10
Servo pin, pos
Delayms 5
Grados = punto/11
gosub pinta
punto = punto +1
'inc velocidad
'DelayMS 500
next
'next
'for velocidad = 1 to 30
for pos = 2430 to 400 step -10
Servo pin, pos
Delayms 5
Grados = punto/11
gosub pinta2
punto = punto -1
'dec velocidad
'DelayMS 500
next
'next
goto inicio
'if pos <= 400 then pos = 2430:Gosub Baja
'if pos >= 2430 then pos = 400:gosub Sube
'delayms 500
GOTO Main
Sube:
DELAYMS 5 ' Servo update rate
PRINT AT 1 , 1 , "Position=" , Dec Pos , " "
pos = pos +1
SERVO Pin , Pos
return
Baja:
DELAYMS 5 ' Servo update rate
PRINT AT 1 , 1 , "Position=" , Dec Pos , " "
pos = pos -1
SERVO Pin , Pos
return
Pinta:
PRINT AT 1 , 1 ,"Posicion: " , Dec4 Pos , " "
print at 2 , 1 ,"Grados: ", Dec3 Grados,223
return
Pinta2:
PRINT AT 1 , 1 ,"Posicion: " , Dec4 Pos , "2for"
print at 2 , 1 ,"Grados: ", Dec3 Grados,223
return