bool sensor, sentido, touch;
int move_time,count, max_busca, x=0;
mutex semaforo;
#define velocidade 50
#define esquerda true
#define direita false
task testa_sensor(){
while(true){
sensor = SENSOR_3;
touch = SENSOR_1;
}
}
task atua_motores(){
while(true){
Acquire(semaforo);
if (!sensor){
while((count < move_time) && (!sensor)){
if (sentido){
OnFwd(OUT_B, velocidade);
OnRev(OUT_C, velocidade);
}
else {
OnFwd(OUT_C, velocidade);
OnRev(OUT_B, velocidade);
}
count++;
if (sensor)
break;
}
sentido = !sentido;
if (max_busca < 5)
move_time = move_time + 150;
else{
max_busca =0;
move_time = move_time + 2000;
sentido = esquerda;
}
max_busca++;
count = 0;
}
else {
OnFwd(OUT_BC, velocidade);
count = 0;
move_time = 150;
max_busca = 0;
sentido = !sentido;
}
Release(semaforo);
}
}
task garra(){
while(true){
Acquire(semaforo);
if (touch == true && x==0){
Off(OUT_BC);
OnFwd(OUT_A, 35);
Wait(1000);
x=1;
OnFwd(OUT_C, velocidade);
OnRev(OUT_B, velocidade);
Wait(500);
until (sensor){
OnFwd(OUT_C, velocidade);
OnRev(OUT_B, velocidade);
}
}
else if (x != 1) {
Off(OUT_A);
}
Release(semaforo);
}
}
task main()
{
max_busca = 0;
count = 0;
sentido = esquerda; //false = direita true = esquerda
SetSensorType(IN_1,SENSOR_TYPE_TOUCH); //sensor de toque
SetSensorMode(IN_1,SENSOR_MODE_BOOL);
SetSensorType(IN_3,SENSOR_TYPE_LIGHT_ACTIVE); //sensor de luz
SetSensorMode(IN_3,SENSOR_MODE_BOOL);
move_time = 150;
OnFwd(OUT_BC, velocidade);
OnRev(OUT_A, 50);
Wait(500);
Off(OUT_A);
Precedes(testa_sensor, atua_motores, garra);
}
---------------------------------------------------------------------------
Esta é o código que segue a linha preta através dos motores B e C e o sensor de luz, faz as leituras dos sensores em THREADS em conjunto com as outras rotinas e também realiza a captura do boneco através do sensor de toque e o motor A.
Quando o sensor de toque é ativado (presença do sobrevivente), é então acionado o motor que aprisiona o boneco em uma estrutura altamente avançada e rebusta ( =]] ). O robô, por conseguinte, gira 180º e continua sua rota de volta ao encrontro do MASTER.
Falta agora implementar a comunicação entre o MESTRE e o ESCRAVO via "DENTE AZUL" (BlueTooth).
Estamos caminhando...
13 de nov. de 2008
Assinar:
Postar comentários (Atom)
Nenhum comentário:
Postar um comentário