Go Down

Topic: Ajudem-nos por favor!!! (Read 2019 times) previous topic - next topic

Furkas

Eu e o meu grupo de área de projecto construimos um robot de busca e salvamento com dois servos e um sensor de pista ligados a um arduino. o objectivo é que siga a linha preta numa superficie branca. superficie que tem um corte na linha (que consideramos como sendo uma vitima) sendo que quando deixa de detectar a linha pára. No fundo queremos que o robot siga a linha. O nosso maior problema é a programação do robot, já tentamos inumeros programas para programar o nosso arduino (axe 121 arduino). Sera que alguem que perceba de programação nos podia enviar um programa? temos que ter o programa até terça-feira. Por favor, ajudem-nos :'(

Radames

qual o sensor esta utilizando para detectar a linha preta?
já produziu algum código para isso? post aqui para nós todos podermos te ajudar,
os sensores que estão captando a linha esta funcionando?


até

amando96

Pois, estar a fazer o vosso trabalho todo é um bocado... coiso

Mas ajudar a melhorar o código que já têm, é outra coisa.

Furkas

temos um axe121 (este aqui: http://aliatron.com/loja/catalog/product_info.php?cPath=30_152&products_id=312&osCsid=gtb3)

So nos falta mesmo o programa. Temos que ter para a apresentação de quarta.
O sensor está a funcionar perfeitamente, tal como todas as outras componetes. so estamos com dificuldade a programa-lo. tentamos por um programa mas nao funciona.
Era optimo se nos podessem ajudar.

Obrigado pela ajuda

Furkas

temos este código mas nao fuinciona muito bem. o robot nao se guia pela linha e andas às voltas.

//InICIO


// Sweep
// by BARRAGAN <http://barraganstudio.com>


#include <Servo.h>


Servo DIR;
Servo ESQ;  // create servo object to control a servo
               // a maximum of eight servo objects can be created

int pos = 0;    // variable to store the servo position

void setup()
{
 DIR.attach(10);  // attaches the servo on pin 9 to the servo object
 ESQ.attach(11);  // attaches the servo on pin 9 to the servo object
}

void frente(int t)
{
   DIR.write(10);              // DIR FRENTE
   ESQ.write(170);              // tell servo to go to position in variable 'pos'
   delay(t);                       // waits 15ms for the servo to reach the position
}


void rodaAH(int t)
{
   DIR.write(10);              // DIR FRENTE
   ESQ.write(10);              // tell servo to go to position in variable 'pos'
   delay(t);                       // waits 15ms for the servo to reach the position
}
void rodaH(int t)
{
   DIR.write(170);              // DIR FRENTE
   ESQ.write(170);              // tell servo to go to position in variable 'pos'
   delay(t);                       // waits 15ms for the servo to reach the position
}


void atras(int t)
{
   DIR.write(170);              // DIR FRENTE
   ESQ.write(10);              // tell servo to go to position in variable 'pos'
   delay(t);                       // waits 15ms for the servo to reach the position
}


void parar(int t)
{
 DIR.write(65);
 ESQ.write(63);
 delay(t);
}


void loop()
{

rodaH(1000);
parar(1000);
atras(1000);
parar(1000);


}


//FIM

Obrigado pela vossa ajuda

Radames

certo,
quais são os pinos onde vcs conectaram o axe121?
Não vi nenhuma definição de pinMode( , INPUT) para os sinais do módulo axe121,

pelo código teste do pdf do seu módulo
http://www.rev-ed.co.uk/docs/axe121.pdf
existem três saidas do módulo axe121, se a saida input1 for HIGH então o robo deve ir para frente se a saida input2 for HIGH entao virar para esquerda, se a saida input6 for HIGH entao virar para direita.

Vocês precisam verificar isso, quais os pinos do arduino vcs conectaram o axe 121?

já olharam o pdf dele?


Furkas

ligamos os tres pinos no analogico do nosso arduino. nas entradas 2,3,4


amando96

Então basta lerem cada sensor, e fazerem uma acção dependednte dos valores lidos.

Furkas

pois. Mas como percebemos muito pouco de programação, não sabemos faze-lo.
Esse é o nosso grande problema:S

Radames

certo , mas pelo que vi pelo datasheet a leitura desse bits é digital, mas de qualquer maneira esta ok..
No setup acrescente
Code: [Select]


pinMode(16,INPUT); //utilizar  a porta analogica 2 como input digital
pinMode(17,INPUT); //utilizar  a porta analogica 3 como input digital
pinMode(18,INPUT); //utilizar  a porta analogica 4 como input digital




dentro do loop verificar os bits



Code: [Select]


if( digitalRead(16) ){

 frente();

}else if (digitalRead(17)){

 esquerda();

}else if( digitalRead(18)){

 direita();

}else{

 parar()

}



você precisa verificar, quais são os input1, input2 e input 6, mas é só olhar o datasheet.....

boa sorte

amando96

#10
May 23, 2010, 11:13 pm Last Edit: May 23, 2010, 11:13 pm by amando96 Reason: 1
O IDE tem um exemplo de código que faz isso para Uma só entrada adc(aliás, tem exemplos dos básicos todos), muito facilmente adaptam para 3.

é igual a este:
Code: [Select]
/*
 Analog input, serial output

Reads an analog input pin, prints the results to the serial monitor.

The circuit:

* potentiometer connected to analog pin 0.
Center pin of the potentiometer goes to the analog pin.
  side pins of the potentiometer go to +5V and ground

created over and over again
by Tom Igoe and everyone who's ever used Arduino

*/

void setup() {
 Serial.begin(9600);
}

void loop() {
 // read the analog input into a variable:
  int analogValue = analogRead(0);
  // print the result:
  Serial.println(analogValue);
  // wait 10 milliseconds for the analog-to-digital converter
  // to settle after the last reading:
  delay(10);
}


Furkas

Muito Obrigado pela ajuda.
Vou exprimentar a fazer isso amanha com o meu grupo

Obrigado ;)


Radames

outra pergunta,
vc esta utilizando servos para movimentação frotal?
existe um motor com tração para movimentação frente trás?

Furkas

Nos pusemos uns servos com rotação frontal e contínua. Para facilitar depois a programação.
Mas nao ajudou muito xD

Go Up
 


Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

Arduino
via Egeo 16
Torino, 10131
Italy