'Programa INSETO_FINAL.BAS 'Márcio José Soares 'Revista Mecatrônica Fácil '09/05/2003 'Versão oficial 'Com correção para interpretação 'dos comandos em português 'Utiliza 2 servos para movimentar 'as patas do inseto. 'Sensor tipo chave de colisão para desvio 'define variáveis e constantes Symbol pos_c = b0 'pulso para patas centrais Symbol pos_e = b1 'pulso para patas externas Symbol esq_dir = b2 'variável auxiliar para esquerda direita Symbol s_e_d = b3 'variável auxiliar para sobe esq, sob dir Symbol i = b4 'variável p/ contador Symbol srv_ext=7 'servo das patas externas Symbol srv_cent=6 'servo das patas centrais Symbol sensor=pin3 'entrada do sensor Symbol led1=4 'led1 Symbol led2=5 'led2 Symbol on=0 'sensor ligado Symbol off=1 'sensor desligado Symbol ext_meio=150 'posição central do servo patas externas Symbol ext_max=170 'max posição servo patas externas Symbol ext_min=110 'mim posição servo patas externas Symbol ext_crv=130 'posição mediana para curvas Symbol cent_meio=140 'posição central do servo patas centrais Symbol cent_max=180 'max posição servo patas centrais Symbol cent_min=120 'mim posição servo patas centrais Symbol lpasso=5 'controla velocidade dos servos dirs = %11110111 'pin 0,1,2,4,5,6,7 saídas 'pin 3 entrada 'centraliza servos para começar 'inicializa variáveis pos_c=cent_meio pos_e=ext_meio esq_dir=0 s_e_d=0 low led1: low led2 pulsout srv_cent,pos_c pause 20 pause 5 pulsout srv_ext,pos_e pause 20 'faz inseto andar a frente inicio: 'Testa sensor, se pressionado desvia if sensor = on then desvio 'senão, anda para frente s_e_d=1 esq_dir=1 gosub sobcentro 'sobe direita gosub esqdir 'esquerda s_e_d=0 'sobe esquerda esq_dir=0 'direita gosub sobcentro gosub esqdir goto inicio 'realiza desvio 'primeiro 3 passos para traz 'depois, desvia para o lado desvio: high led1: high led2 for i=1 to 3 'anda p/ traz s_e_d=1 'sobe direita esq_dir=0 'esquerda gosub sobcentro gosub esqdir s_e_d=0 'sobe esquerda esq_dir=1 'direita gosub sobcentro gosub esqdir next pos_c=cent_meio pos_e=ext_meio gosub move i=1 for i=1 to 15 'desvia para o lado s_e_d=1 esq_dir=0 gosub sobcentro 'sobe direita gosub esqdir 'direita pos_c=cent_meio gosub move esq_dir=1 'esquerda gosub esqdir next low led1: low led2 goto inicio 'eleva pata central sobcentro: branch s_e_d,(sob1, sob2) sob1: pos_c=pos_c+lpasso if pos_c>cent_max then volta goto sob3 sob2: pos_c=pos_c-lpasso if pos_cext_max then volta goto ed3 ed2: pos_e=pos_e-lpasso if pos_e