collapse

* Posts Recentes

Amplificador - Rockboard HA 1 In-Ear por almamater
[Ontem às 19:13]


O que é isto ? por KammutierSpule
[26 de Março de 2024, 19:35]


Bateria - Portátil por almamater
[25 de Março de 2024, 22:14]


Emulador NES em ESP32 por dropes
[13 de Março de 2024, 21:19]


Escolher Osciloscópio por jm_araujo
[06 de Fevereiro de 2024, 23:07]


TP4056 - Dúvida por dropes
[31 de Janeiro de 2024, 14:13]


Leitura de dados por Porta Serie por jm_araujo
[22 de Janeiro de 2024, 14:00]


Distancia Cabo por jm_araujo
[08 de Janeiro de 2024, 16:30]


Meu novo robô por josecarlos
[06 de Janeiro de 2024, 16:46]


Laser Engraver - Alguém tem? por almamater
[16 de Dezembro de 2023, 14:23]

Autor Tópico: Funcionamento e Programação do sensor QTR-8RC  (Lida 10543 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.