É um robô muito simples, básico, com o objectivo de seguir linhas e ir desviando-se dos obstáculos.
Depois de ter tudo montado e a funcionar, quero adicionar a opção de escolher:
- Seguir linha branca no fundo preto ou seguir linha preta no fundo branco
- Ligar e desligar a função de seguir linha
- Ligar e desligar a função de desviar obstáculos
Dificuldades Encontradas
Até agora, a dificuldade que encontrei foi na tentativa de construír o sensor de proximidade pelo tutorial do tr3s. Provavelmente os componentes que utilizei não estavam bons. Solução: Usar o sensor PING ))).Estado Actual
- llllllllll 100% - Base (circular)
- llllllllll 100% - Montagem dos Motores Mini e Rodas
- llllllllll 100% - Montagem do Servo para o Sensor Ultrasons
- llllllllll 100% - Montagem dos sensores de reflexão para seguir linha
- llllllllll 100% - Programação do Arduino para seguir linha
- llllllllll 0% - Montagem do sensor PING)))
- llllllllll 0% - Programação do Arduino para evitar obstáculos
Fotos
Vídeo
Código (Arduino)
- int ledPin = 13; // LED
- int senEsq = 0; // Sensor da Esquerda
- int senMei = 1; // Sensor do Meio
- int senDir = 2; // Sensor da Direita
- int valEsq = 0;
- int valMei = 0;
- int valDir = 0;
- boolean Esq = false;
- boolean Mei = false;
- boolean Dir = false;
- int motores[] = {2,3,4,5};
- int pwm[] = {9,6};
- void setup() {
- pinMode(ledPin, OUTPUT);
- pinMode(motores[0], OUTPUT);
- pinMode(motores[1], OUTPUT);
- pinMode(motores[2], OUTPUT);
- pinMode(motores[3], OUTPUT);
- pinMode(pwm[0], OUTPUT);
- pinMode(pwm[1], OUTPUT);
- Serial.begin(9600);
- digitalWrite(motores[0], HIGH);
- digitalWrite(motores[1], LOW);
- digitalWrite(motores[2], HIGH);
- digitalWrite(motores[3], LOW);
- }
- void loop(){
- valEsq = analogRead(senEsq);
- valMei = analogRead(senMei);
- valDir = analogRead(senDir);
- if(valEsq < 100){Esq = true;}else{Esq = false;}
- if(valMei < 100){Mei = true;}else{Mei = false;}
- if(valDir < 100){Dir = true;}else{Dir = false;}
- if(Esq)
- {
- // Virar para a esquerda
- Serial.println("100");
- analogWrite(pwm[0], 0);
- analogWrite(pwm[1], 64);
- }else if(Mei)
- {
- // Frente
- Serial.println("010");
- analogWrite(pwm[0], 64);
- analogWrite(pwm[1], 64);
- }else if(Dir)
- {
- // Virar à direita
- Serial.println("001");
- analogWrite(pwm[0], 64);
- analogWrite(pwm[1], 0);
- }
- delay(10);
- }