collapse

* Posts Recentes

Emulador NES em ESP32 por jm_araujo
[Hoje às 18:12]


Circuito Microfone que funcione por almamater
[27 de Abril de 2024, 17:14]


Arame de Estendal por almamater
[18 de Abril de 2024, 16:16]


O que é isto ? por SerraCabo
[12 de Abril de 2024, 14:20]


Amplificador - Rockboard HA 1 In-Ear por almamater
[11 de Abril de 2024, 20:46]


Meu novo robô por josecarlos
[29 de Março de 2024, 18:30]


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


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]

Autor Tópico: Beta - Plataforma de Teste  (Lida 41261 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.