collapse

* Posts Recentes

Cerca eléctrica por SerraCabo
[14 de Junho de 2025, 23:26]


Alguém arranja motores? por almamater
[10 de Junho de 2025, 22:34]


Condensador 4.7uF 0603 por brunus
[09 de Junho de 2025, 15:52]


+ LASERs por dropes
[30 de Maio de 2025, 23:11]


Lenovo IdeaPad 3 Não liga por jm_araujo
[07 de Maio de 2025, 19:10]


Identificar Diodo Zenner por filjoa
[01 de Maio de 2025, 23:07]


Meu novo robô por dropes
[18 de Março de 2025, 14:51]


JBL partybox On-The-Go por almamater
[21 de Fevereiro de 2025, 23:32]


Talking Reverse Engineering with an Absolute Legend! por SerraCabo
[13 de Fevereiro de 2025, 09:56]


Motoserra Stihl 120C por brunus
[11 de Fevereiro de 2025, 16:29]

Autor Tópico: Funcionamento e Programação do sensor QTR-8RC  (Lida 14282 vezes)

0 Membros e 1 Visitante estão a ver este tópico.

Offline projectoAREA

  • Mini Robot
  • *
  • Mensagens: 64
    • projectoAREA - blog
Re: Funcionamento e Programação do sensor QTR-8RC
« Responder #15 em: 26 de Março de 2011, 13:05 »
mostra aqui o código que tu tens. e já agora, confirma se os fios estão ligados na ordem certa e que os pinos também estão declarados na ordem certa.

Offline zeneves

  • Mini Robot
  • *
  • Mensagens: 86
Re: Funcionamento e Programação do sensor QTR-8RC
« Responder #16 em: 26 de Março de 2011, 14:08 »
aqui tens....
Código: [Seleccione]
#include <PololuQTRSensors.h>



int motor1Pin1 = 5;    // Ponte H
int motor1Pin2 = 6;    // Ponte H
int motor2Pin1 = 10;   // Ponte H
int motor2Pin2 = 11;   // Ponte H



PololuQTRSensorsRC qtr((unsigned char[]) {9,8,7,6,5,4,3,2}, 8);


void setup()
{
  Serial.begin(9600);

  pinMode(motor1Pin1, OUTPUT);
  pinMode(motor1Pin2, OUTPUT);
  pinMode(motor2Pin1, OUTPUT);
  pinMode(motor2Pin2, OUTPUT);


  int i;
  for (i = 0; i < 250; i++)
  {
    qtr.calibrate();
    delay(20);       
  }
  Serial.println("Calibrado");
}

void loop()
{
  unsigned int sensors[8];
 
  int position = qtr.readLine(sensors);

  if (sensors[0] > 750 && sensors[1] > 750 && sensors[2] > 750 &&  sensors[3] > 750 &&  sensors[4] > 750 &&
  sensors[5] > 750 &&  sensors[6] > 750 && sensors[7] > 750)
     
  {   
   
    Serial.println("Tudo escuro");

    digitalWrite(motor1Pin1, HIGH); 
    digitalWrite(motor1Pin2, LOW);   
 
    digitalWrite(motor2Pin1, HIGH); 
    digitalWrite(motor2Pin2, LOW); 
    delay (1800);                   
 
}
else
 {
 
    digitalWrite(motor1Pin1, HIGH);
    digitalWrite(motor1Pin2, LOW); 
 
    digitalWrite(motor2Pin1, LOW); 
    digitalWrite(motor2Pin2, HIGH);
    delay (3500);                   
 
    digitalWrite(motor1Pin1, HIGH);
    digitalWrite(motor1Pin2, LOW);
 
    digitalWrite(motor2Pin1, HIGH);
    digitalWrite(motor2Pin2, LOW);
    delay (3000);
   
     return;
  }


  int error = position - 3500;
 
  Serial.println(position);
  delay(1000);
}
 

Offline projectoAREA

  • Mini Robot
  • *
  • Mensagens: 64
    • projectoAREA - blog
Re: Funcionamento e Programação do sensor QTR-8RC
« Responder #17 em: 27 de Março de 2011, 16:46 »
Deixa-me ver se percebi bem :)

Esse código faz com que o robot ande para a frente de se vir tudo escuro e que rode 3,5 segundos para a esquerda e depois 3,5 segundos para a direita, em todas as outras situações? Isso não faz sentido nenhum porque ele vai andar para a frente se os 8 sensores tiverem sobre a linha preta ou então quando levantas o robot do chão (também lê tudo escuro, nesta situação). E vai rodar para os lados em todas as situações restantes, quer esteja a ver a linha em qualquer dos sensores e quer não esteja a ver a linha (tudo branco). É esse o significado do "else": todas as outras situações...

Talvez querias corrigir isso. Se já definiste a "position", usa isso através de um "if". Se position > 4000, virar para um lado, se position < 3000 virar para o outro lado e se 3000 < position < 4000, seguir em frente, aí sim.