'Programa Alpinista.bas 'Desenvolvido por Márcio José Soares ' 'Controla robô alpinista '3 servos de aeromodelo standart 'recebe comandos do LOGO para subir, descer ou parar ' 'Pind.0 RX, Pind.1 TX 'setar no compilador em Options, Compiler, Communication 'velocidade 9600 e freqüência 10000000 'use esta lib para adequar o PULSEIN para 10MHz $crystal = 10000000 $lib "Mymcs.lib" '************************************************* 'declaração de subrotinas e variáveis '************************************************* 'subrotinas Declare Sub Ainf() Declare Sub Finf() Declare Sub Asup() Declare Sub Fsup() Declare Sub Dob() Declare Sub Est() 'variáveis Dim S As String * 4 Dim C As String * 1 'configura servos 'servo1 -> garra superior 'servo2 -> garra inferior 'servo3 -> elevação Config Servos = 3 , Servo1 = Portb.0 , Servo2 = Portb.1 , Servo3 = Portb.2 , Reload = 10 'configura portas 'pinos 0,1,2 e 3 são saídas, o restante da porta B é entrada. Config Portb = &B00001111 'habilta interrupção Enable Interrupts Call Fsup() Call Est() Call Finf() Waitms 500 '************************************************* 'programa principal '************************************************* 'loop infinito Do Input S Noecho 'aguarda dado do logo C = Mid(s , 4 , 1) 'pega comando Select Case C Case "1" : Call Ainf() Case "2" : Call Finf() Case "3" : Call Asup() Case "4" : Call Fsup() Case "5" : Call Est() Case "6" : Call Dob() End Select 'envia para LOGO resposta de comando recebido Waitms 300 Print "1" Loop '************************************************* 'subrotinas do programa '************************************************* 'abre garra inferior Sub Ainf() Servo(2) = 150 End Sub 'fecha garra inferior Sub Finf() Servo(2) = 100 End Sub 'abre garra superior Sub Asup() Servo(1) = 150 End Sub 'fecha garra superior Sub Fsup() Servo(1) = 100 End Sub 'estica articulação Sub Est() Servo(3) = 150 End Sub 'dobra articulação Sub Dob() Servo(3) = 100 End Sub End 'fim do programa