Ora aqui está o meu bicho que ainda não tem nome mas aceito sugestões.
Este brinquedo segue linhas.
Uploaded with
ImageShack.usTem dois servo motores modificados para 360º.
A detecção da linha é por infravermelhos. Dois detectores e dois emissores
Uploaded with
ImageShack.usutilizei uma breadboard e não liguem à trapalhada de fios mas quando se tem 4 filhos com menos de 3 anos é complicado ser perfeito
.
Agora uma pequena demonstração
View My VideoUtilizei umas folhas coladas com fita cola e a linha é fita isoladora preta. Não fiz a pista completa porque a parte critica são as curvas então só fiz a curva.
Utilizei um PIC16f84a programado em C
O código utilizado foi este
#include <16F84a.h>
#fuses hs,noprotect,nowdt
#use delay (clock=4000000)
#use RS232(baud=2400, bits=8, parity=N, xmit=pin_a1, rcv=pin_a0)
int i;
#INT_RB//interrupção porto B
ladoesq(){
disable_interrupts(GLOBAL);
if(input(PIN_b5)==0){//quando o detector da direita detecta vira para a direita
while(i<30){//30 ciclos
output_high(PIN_a2);//pwm1 so controla a roda esquerda, para virar à direita pára a roda direita e anda a roda esquerda
delay_us(2000);//espera 2ms
output_low(PIN_a2);//poe a low
delay_us(18000);//espera 18ms
i++;
}
i==0;
}
if(input(PIN_b4)==0){
while(i<30){
output_high(PIN_a3);//pwm2 so controla a roda direita, para virar à esquerda pára a roda esquerda e anda a roda direita
delay_us(1000);//espera 1ms
output_low(PIN_a3);//poe a low
delay_us(19000);//espera 19ms
i++;
}
i==0;
}
enable_interrupts(GLOBAL);
}
main(){
i=0;
set_tris_b (0b11110011);
enable_interrupts(GLOBAL);
enable_interrupts(INT_RB);
while (1){ // ciclo infinito, poe o robo a andar sempre para a frente
while(i<10){
output_high(PIN_a2);//sinal pwm1
output_high(PIN_a3);//sinal pwm2
delay_us(1000);//espera 1mili segundo
output_low(PIN_a3);//pwm2 com duração high 1ms 19ms a low
delay_us(1000);//espera mais 1 ms
output_low(PIN_a2);//pwm1 com duração 2ms a high e 18ms a low
delay_us(18000);//espera 18ms
i++;
}
i=0;
}
}
Peço desculpa se existir uma maneira melhor mas não sou grande programador.
Próximas alterações:
1- Trocar os servomotores por motores DC;
2- Colocar mais sensores.
Aqui está o meu bichinho.