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: Beta - Plataforma de Teste  (Lida 54542 vezes)

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

Offline zeneves

  • Mini Robot
  • *
  • Mensagens: 86
Re: Beta - Plataforma de Teste
« Responder #105 em: 02 de Abril de 2011, 01:11 »
tenho o codigo dos dois sensores no post anterior ....ok?

Offline preytender

  • Mini Robot
  • *
  • Mensagens: 148
Re: Beta - Plataforma de Teste
« Responder #106 em: 02 de Abril de 2011, 01:15 »
eu sei mas sempre que tento fazer copy e paste fica tudo seguido e depois tenho que separar as linhas  :o

ajudava se metesses como anexo pode ser num ficheiro txt.

Offline zeneves

  • Mini Robot
  • *
  • Mensagens: 86
Re: Beta - Plataforma de Teste
« Responder #107 em: 02 de Abril de 2011, 01:19 »
nao ta a dar para enviar  :-\

Offline preytender

  • Mini Robot
  • *
  • Mensagens: 148
Re: Beta - Plataforma de Teste
« Responder #108 em: 02 de Abril de 2011, 01:27 »

Offline senso

  • Global Moderator
  • Mini Robot
  • *****
  • Mensagens: 9.733
  • Helpdesk do sitio
Re: Beta - Plataforma de Teste
« Responder #109 em: 02 de Abril de 2011, 01:29 »
Podiam tratar dessas coisas por PM.
Avr fanboy

Offline zeneves

  • Mini Robot
  • *
  • Mensagens: 86
Re: Beta - Plataforma de Teste
« Responder #110 em: 02 de Abril de 2011, 01:30 »
PM?

Offline preytender

  • Mini Robot
  • *
  • Mensagens: 148
Re: Beta - Plataforma de Teste
« Responder #111 em: 02 de Abril de 2011, 01:33 »
Tens razão senso, nao me lembrei disso ... 

Na realidade tambem ja tive problemas a fazer upload, vou inventar qq coisa e depois coloco aqui.

Offline zeneves

  • Mini Robot
  • *
  • Mensagens: 86
Re: Beta - Plataforma de Teste
« Responder #112 em: 02 de Abril de 2011, 01:39 »
ok ;)

Offline preytender

  • Mini Robot
  • *
  • Mensagens: 148
Re: Beta - Plataforma de Teste
« Responder #113 em: 02 de Abril de 2011, 02:07 »
Tenta isto:

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
int IRpin = 0;      // analog pin for reading the IR sensor

PololuQTRSensorsRC qtr((unsigned char[]) {2,7}, 2);


void setup(){

Serial.begin(9600);
pinMode(motor1Pin1, OUTPUT);   
pinMode(motor1Pin2, OUTPUT);   
pinMode(motor2Pin1, OUTPUT);   
pinMode(motor2Pin2, OUTPUT);

//Vamos Calibrar aqui os sensores
int i;
for (i = 0; i < 250; i++) {
  qtr.calibrate();
  delay(20);   
}

}




void loop() {

// A ideia é bater num objecto mas nunca sair da area delimitada por isso vou dar prioridade ao controlo dos sensores qtr

//Ler Valor dos sensores
unsigned int vSensors[2];
int iPosition = qtr.readLine(vSensors);

// Verificar se algum dos sensores encontrou a linha preta
if (vSensors[0]>900 || vSensors[1]>900) {
 
  if (vSensors[0]>900) {
     // Linha detectada pelo sensor 1 coloca aqui o codigo para virar para o outro lado
    digitalWrite(motor1Pin1, LOW);
    digitalWrite(motor1Pin2, HIGH);
   
    digitalWrite(motor2Pin1, HIGH);
    digitalWrite(motor2Pin2, LOW);
    delay (3500);

} else {
    // Linha detectada pelo sensor 8 coloca aqui o codigo para virar para o outro lado   
    digitalWrite(motor1Pin1, HIGH);
    digitalWrite(motor1Pin2, LOW);
 
    digitalWrite(motor2Pin1, HIGH);
    digitalWrite(motor2Pin2, LOW);
    delay (3500);
}
 
} else {
  // Aqui nao fazer nada com os motores e passar esta decisao ao sensor IR
  sensorIR();
}

//Debug QTR
Serial.print("QTR Sensor:");
Serial.print(vSensors[0]);   Serial.print("  ");
Serial.print(vSensors[1]);   Serial.print("  ");
Serial.print("  Position:");
Serial.println(iPosition);

}



void sensorIR() {
 
  //Ler Distancia 
  float volts = analogRead(IRpin)*0.0048828125;   // value from sensor * (5/1024) - if running 3.3.volts then change 5 to 3.3
  float distance = 65*pow(volts, -1.10);          // worked out from graph 65 = theretical distance / (1/Volts)S - luckylarry.co.uk
  Serial.println(distance);                       // print the distance
  delay(100);                                     // arbitary wait time.
 
 
if (distance<55) {
 
    digitalWrite(motor1Pin1, HIGH);  // Este pino HIGH, em conjunto com o de baixo LOW
    digitalWrite(motor1Pin2, LOW);   // Fazem com que o motor da direita ande em frente
 
    digitalWrite(motor2Pin1, HIGH);   // Este pino LOW, em conjunto com o de baixo HIGH
    digitalWrite(motor2Pin2, LOW);  // Fazem com que o motor da esquerda ande em frente
    delay (1800);                    // Tempo que vai ficar a fazer esta função
 
}
else
 {
 
    digitalWrite(motor1Pin1, HIGH);  // Este pino HIGH, em conjunto com o de baixo LOW
    digitalWrite(motor1Pin2, LOW);   // Fazem com que o motor da direita ande em frente
 
    digitalWrite(motor2Pin1, LOW);   // Este pino LOW, em conjunto com o de baixo HIGH
    digitalWrite(motor2Pin2, HIGH);  // Fazem com que o motor da esquerda ande em frente
   
    delay (3500);                    // Tempo que vai ficar a fazer esta função
 
    digitalWrite(motor1Pin1, HIGH);
    digitalWrite(motor1Pin2, LOW);
 
    digitalWrite(motor2Pin1, HIGH);
    digitalWrite(motor2Pin2, LOW);
    delay (3000);
   
    digitalWrite(motor1Pin1, LOW);
    digitalWrite(motor1Pin2, HIGH);
 
    digitalWrite(motor2Pin1, HIGH);
    digitalWrite(motor2Pin2, LOW);
    delay (3500);
 
    digitalWrite(motor1Pin1, LOW);
    digitalWrite(motor1Pin2, HIGH);
 
    digitalWrite(motor2Pin1, LOW);
    digitalWrite(motor2Pin2, HIGH);
    delay (2500);
 }
}
 



Penso que podes melhorar bastante a funcao de seguir o objecto.
Tenta minimizar o uso da instrução delay de forma a tornar os ciclos mais rapidos, desta forma validas o qtr mais vezes e evitas sair da zona.

 
Tenta e diz o que deu  ;D
Abraço.

Offline zeneves

  • Mini Robot
  • *
  • Mensagens: 86
Re: Beta - Plataforma de Teste
« Responder #114 em: 02 de Abril de 2011, 02:16 »
vou testar.. depois digo algo

Offline zeneves

  • Mini Robot
  • *
  • Mensagens: 86
Re: Beta - Plataforma de Teste
« Responder #115 em: 02 de Abril de 2011, 14:26 »
testei mas parece k o robo n ta a seguir muito brm o qtr parece k de vez enquando detecta a linha e de vex enquando nao...

Offline preytender

  • Mini Robot
  • *
  • Mensagens: 148
Re: Beta - Plataforma de Teste
« Responder #116 em: 02 de Abril de 2011, 14:55 »
Pois, imaginei que isso pudesse acontecer  :-\

O problema e que o codigo fica muito tempo na funcao sensorIR por causa dos delays e nao testa o sensor QTR.

Podes tentar duas coisas:

1. reduzir o tempo de delay na funcao sensorIR
2. inverter a logica, no loop colocas o codigo da funcao sensorIR e crias uma funcao sensorQTR. deves chamar a funcao sensorQTR o maximo de vezes possivel.


Offline zeneves

  • Mini Robot
  • *
  • Mensagens: 86
Re: Beta - Plataforma de Teste
« Responder #117 em: 02 de Abril de 2011, 14:56 »
pois pk o IR funciona sempre o qtr e que nao

Offline senso

  • Global Moderator
  • Mini Robot
  • *****
  • Mensagens: 9.733
  • Helpdesk do sitio
Re: Beta - Plataforma de Teste
« Responder #118 em: 02 de Abril de 2011, 15:16 »
É tirar esses delays todos..
Avr fanboy

Offline zeneves

  • Mini Robot
  • *
  • Mensagens: 86
Re: Beta - Plataforma de Teste
« Responder #119 em: 02 de Abril de 2011, 15:17 »
se eu os retirar o fara?