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
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
#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