collapse

* Posts Recentes

+ LASERs por dropes
[16 de Julho de 2025, 12:38]


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]


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 56210 vezes)

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

Offline preytender

  • Mini Robot
  • *
  • Mensagens: 148
Re: Beta - Plataforma de Teste
« Responder #90 em: 28 de Março de 2011, 21:59 »
Poix... tal como ja te tinha dito quanto mais perto melhores sao as leituras.

Acho que durante o dia num sitio bem iluminado e com luz natural as coisas funcionam melhor.
Tenta arranjar o melhor numero possivel para te indicar com alguma margem de seguranca se esta ou nao em cima da linha.

Offline zeneves

  • Mini Robot
  • *
  • Mensagens: 86
Re: Beta - Plataforma de Teste
« Responder #91 em: 28 de Março de 2011, 22:01 »
pois ta certo bgd
depois post aki o resultado    ;D

Offline zeneves

  • Mini Robot
  • *
  • Mensagens: 86
Re: Beta - Plataforma de Teste
« Responder #92 em: 01 de Abril de 2011, 19:40 »
boas tenho uma dusvida como e que posso juntar em simultaneo o cofigo de um IRsharp e um qtrc....?

tenho o objectivo de kuando detect um objecto va atras dele com IR...mas tb para que ele n saia de um certo sitio com o qtr


codigo do irsharp

Código: [Seleccione]
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




void setup() {
  Serial.begin(9600);
  // Definir os pinos outputs:
  pinMode(motor1Pin1, OUTPUT);
  pinMode(motor1Pin2, OUTPUT);
  pinMode(motor2Pin1, OUTPUT);
  pinMode(motor2Pin2, OUTPUT);   // start the serial port
}

void loop() {
  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);
 }
  }
 
 



codigo do qtr

Código: [Seleccione]
#include <PololuQTRSensors.h>

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

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

void setup(){

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

void loop() {

if (bCalibrate==0) {   
  int i;
  for (i = 0; i < 250; i++) {
    qtr.calibrate();
    delay(20);   
  }
  bCalibrate=1;
  }

//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 nenhum sensor encontra a linha por isso podes andar em frente ou fazer outra coisa.
    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 (80);

}


delay(20);

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


}

todo o codigo foi testado
cumpz
« Última modificação: 01 de Abril de 2011, 19:59 por zeneves »

Offline metRo_

  • Administrator
  • Mini Robot
  • *****
  • Mensagens: 3.753
Re: Beta - Plataforma de Teste
« Responder #93 em: 01 de Abril de 2011, 20:24 »
Explica melhor o que queres fazer?!

Basicamente vais ter que ter duas coisas a correr em simultâneo mas em que uma é corrida por exemplo a cada 100ms e outra a 1000ms, vais ter que seleccionar qual é o processo que necessita de acontecer mais rápido, para implementar isto existem já alguns tópicos aqui, pesquisa por posts do Njay que se não me engano são dele.

Offline zeneves

  • Mini Robot
  • *
  • Mensagens: 86
Re: Beta - Plataforma de Teste
« Responder #94 em: 01 de Abril de 2011, 20:26 »
eu quero k o robo va de encontro com um object mas ou mesmo tempo k n sai d um certo sitio..

Offline metRo_

  • Administrator
  • Mini Robot
  • *****
  • Mensagens: 3.753
Re: Beta - Plataforma de Teste
« Responder #95 em: 01 de Abril de 2011, 20:31 »
eu quero k o robo va de encontro com um object mas ou mesmo tempo k n sai d um certo sitio..

esse certo sitio é delimitado porque?!

Offline zeneves

  • Mini Robot
  • *
  • Mensagens: 86
Re: Beta - Plataforma de Teste
« Responder #96 em: 01 de Abril de 2011, 20:37 »
por uma linha preta k o sensor detecta-

Offline metRo_

  • Administrator
  • Mini Robot
  • *****
  • Mensagens: 3.753
Re: Beta - Plataforma de Teste
« Responder #97 em: 01 de Abril de 2011, 20:41 »
1) mas uma linha fina ou algo grosso?! O robot é rápido ou lento?!
2) Como é feito o seguimento?!

As perguntas podem parecer chatas mas mais já ver que fazem muito sentido.

Offline zeneves

  • Mini Robot
  • *
  • Mensagens: 86
Re: Beta - Plataforma de Teste
« Responder #98 em: 01 de Abril de 2011, 20:57 »
as limhas tem cerca d 3cm, e o robo n anda muito dpressa...ate porque ele so com o codigo do qtr ele detecta bem a linha

Offline zeneves

  • Mini Robot
  • *
  • Mensagens: 86
Re: Beta - Plataforma de Teste
« Responder #99 em: 01 de Abril de 2011, 21:45 »
come sera ? nao estpu a conseguir -.-

Offline senso

  • Global Moderator
  • Mini Robot
  • *****
  • Mensagens: 9.733
  • Helpdesk do sitio
Re: Beta - Plataforma de Teste
« Responder #100 em: 01 de Abril de 2011, 22:18 »
É juntar a leitura do IR que é um simples analogRead, e enquanto esse valor for menor que um valor pré-definido andas em frente e continuas a ler o qtr, se o qtr ler preto dá meia volta ou coisa assim.
Avr fanboy

Offline metRo_

  • Administrator
  • Mini Robot
  • *****
  • Mensagens: 3.753
Re: Beta - Plataforma de Teste
« Responder #101 em: 01 de Abril de 2011, 22:48 »
Eu ia tentar explicar de outra maneira mas se calhar ia complicar um bom bocado :s Basicamente era o facto de queres fazer duas coisas, imagina que uma coisas tem tipo mais importância que a outra então basicamente o que ia dizer era para executares mais vezes a que tem mais importância e a cada x vezes executavas a outra mas o que tu queres é só as duas a funcionar :S

Offline zeneves

  • Mini Robot
  • *
  • Mensagens: 86
Re: Beta - Plataforma de Teste
« Responder #102 em: 02 de Abril de 2011, 00:56 »
sera k nao de para fazer
?

Offline senso

  • Global Moderator
  • Mini Robot
  • *****
  • Mensagens: 9.733
  • Helpdesk do sitio
Re: Beta - Plataforma de Teste
« Responder #103 em: 02 de Abril de 2011, 00:58 »
Claro que dá, o que tu queres é um sumo bot, ir contra um objecto e ficar dentro da linha preta, feito assim tipo um milhão de vezes, metes mini sumo bot arduino no google.
Avr fanboy

Offline preytender

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

De momento estou um bocado ocupado porque tenho que acabar uma coisa para o traballho.
Se quiseres anexa o codigo que ja tens num post, posso tentar juntar os dois para veres se funciona.
Abraço.