Social Icons

Robo Extremamente Simples com Arduino! [2]



É 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)

  1. int ledPin = 13; // LED
  2. int senEsq = 0;   // Sensor da Esquerda
  3. int senMei = 1;   // Sensor do Meio
  4. int senDir = 2;   // Sensor da Direita
  5. int valEsq = 0;
  6. int valMei = 0;
  7. int valDir = 0;
  8. boolean Esq = false;
  9. boolean Mei = false;
  10. boolean Dir = false;
  11. int motores[] = {2,3,4,5};
  12. int pwm[] = {9,6};
  13. void setup() {
  14.  pinMode(ledPin, OUTPUT);
  15.  pinMode(motores[0], OUTPUT);
  16.  pinMode(motores[1], OUTPUT);
  17.  pinMode(motores[2], OUTPUT);
  18.  pinMode(motores[3], OUTPUT);
  19.  pinMode(pwm[0], OUTPUT);
  20.  pinMode(pwm[1], OUTPUT);
  21.  Serial.begin(9600);
  22.  digitalWrite(motores[0], HIGH);
  23.  digitalWrite(motores[1], LOW);
  24.  digitalWrite(motores[2], HIGH);
  25.  digitalWrite(motores[3], LOW);
  26. }
  27. void loop(){
  28.  valEsq = analogRead(senEsq);
  29.  valMei = analogRead(senMei);
  30.  valDir = analogRead(senDir);
  31.  if(valEsq < 100){Esq = true;}else{Esq = false;}
  32.  if(valMei < 100){Mei = true;}else{Mei = false;}
  33.  if(valDir < 100){Dir = true;}else{Dir = false;}
  34.  if(Esq)
  35.  {
  36.  // Virar para a esquerda
  37.  Serial.println("100");
  38.  analogWrite(pwm[0], 0);
  39.  analogWrite(pwm[1], 64);
  40.  }else if(Mei)
  41.  {
  42.  // Frente
  43.  Serial.println("010");
  44.  analogWrite(pwm[0], 64);
  45.  analogWrite(pwm[1], 64);
  46.  }else if(Dir)
  47.  {
  48.  // Virar à direita
  49.  Serial.println("001");
  50.  analogWrite(pwm[0], 64);
  51.  analogWrite(pwm[1], 0);
  52.  }
  53.  delay(10);
  54. }