collapse

* Posts Recentes

+ LASERs por dropes
[Ontem às 16:01]


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: programacao do robo  (Lida 17618 vezes)

0 Membros e 2 Visitantes estão a ver este tópico.

Offline metRo_

  • Administrator
  • Mini Robot
  • *****
  • Mensagens: 3.753
Re:programacao do robo
« Responder #30 em: 08 de Maio de 2009, 14:59 »
Tu continuas a chamar
Código: [Seleccione]
motor_stop(); sem a ter declarado em nenhum lugar.

Offline andnobre

  • Mini Robot
  • *
  • Mensagens: 402
Re:programacao do robo
« Responder #31 em: 08 de Maio de 2009, 15:05 »
mas ja tentei declarar int motor_stop(); e nada continua a dar erro.

Offline metRo_

  • Administrator
  • Mini Robot
  • *****
  • Mensagens: 3.753
Re:programacao do robo
« Responder #32 em: 08 de Maio de 2009, 17:02 »
faz algo de genero:

void motor_stop(){
//Aqui inseres o que quer que a função faça.
};

Offline andnobre

  • Mini Robot
  • *
  • Mensagens: 402
Re:programacao do robo
« Responder #33 em: 13 de Maio de 2009, 17:11 »
este é o novo erro.
coloquei a outra variavel a zero para ficar quieto acho que fiz bem.
error: function 'int motor_front()' is initialized like a variable

Offline guibot

  • Mini Robot
  • *
  • Mensagens: 651
    • Guibot
Re:programacao do robo
« Responder #34 em: 13 de Maio de 2009, 19:17 »
por alguma razão não tens as funções de controle dos motores no teu código, tenta assim:

Código: [Seleccione]
// ---------------------------------------------------------------------------- ServoTimer2
// importar a livraria Servo
#include <Servo.h>
Servo servo;    // declarar uma instancia da livraria, neste caso chama-se "servo"
int servoPin = 9;    //


// ---------------------------------------------------------------------------- Metro
// importar a livraria Metro, esta livraria permite criar temporizadores
// http://www.arduino.cc/playground/Code/Metro
#include <Metro.h>
int duration = 300;   // duração do temporizador em milisegundos
Metro mede_distancia = Metro(duration);    // declarar instância


// ---------------------------------------------------------------------------- SENSOR SHARP
int sensorPin = 2;     // pin onde o sensor SHARP está ligado
int sensorValue = 0;   // variável que vai conter o valor de leitura do sensor
int esquerda, direita, frente; // variáveis que vão conter os valores de leitura do sensor



// ---------------------------------------------------------------------------- VARIÁVEIS DE CONTROLE
// definição de uma distância segura, valores abaixo significa que está perto de um obstáculo
int distanciaSegura = 150;



// ---------------------------------------------------------------------------  Motores
int motor_left[] = {5, 6};
int motor_right[] = {9, 10};



// ---------------------------------------------------------------------------- Setup
// função chamada quando o Arduino é inicializado
void setup() {
  Serial.begin(9600);
  // declarar em que pin está o servo
  servo.attach(servoPin);
 
  // Setup motores
  int i;
  for(i = 0; i < 2; i++){
    pinMode(motor_left[i], OUTPUT);
    pinMode(motor_right[i], OUTPUT);
  }
}


// ---------------------------------------------------------------------------- Loop
// função chamada infinitamente após o setup()
void loop() {

  // mede distancia de X em X tempo
  if (mede_distancia.check() == 1) {
    olhaFrente();
  }
 
  // se a distância em frente for menor do que a distância segura previeamente definida
  // decidi para onde ir
  if (frente < distanciaSegura) drive_forward();
  else decidirDireccao();
 
}


// ---------------------------------------------------------------------------- Decide direcção
void decidirDireccao() {

  motor_stop();
  olhaEsquerda();
  delay(250);
  motor_stop();
  olhaDireita();
  delay(250);
 
  if (esquerda < direita) turn_left();
  else turn_right();
 

}

// ---------------------------------------------------------------------------- Radar

void olhaEsquerda() {
   // olha para a esquerda e mede distância
   servo.write(140);
   delay(500);
   readIR();
   esquerda = sensorValue;
}

void olhaDireita() {
   // olha para a direita e mede distância
   servo.write(40);
   delay(500);     
   readIR();
   direita = sensorValue;
}

void olhaFrente() {
   // olha para a direita e mede distância
   servo.write(90);
   delay(500);     
   readIR();
   frente = sensorValue;
}


// ---------------------------------------------------------------------------- Leitura do sensor SHARP
int readIR() {
  return sensorValue = analogRead(sensorPin);
  //Serial.println(sensorValue);
}


// --------------------------------------------------------------------------- Navegação

void motor_stop(){
  digitalWrite(motor_left[0], LOW);
  digitalWrite(motor_left[1], LOW);
 
  digitalWrite(motor_right[0], LOW);
  digitalWrite(motor_right[1], LOW);
  delay(25);
}

void drive_forward(){
  digitalWrite(motor_left[0], HIGH);
  digitalWrite(motor_left[1], LOW);
 
  digitalWrite(motor_right[0], HIGH);
  digitalWrite(motor_right[1], LOW);
}

void drive_backward(){
  digitalWrite(motor_left[0], LOW);
  digitalWrite(motor_left[1], HIGH);
 
  digitalWrite(motor_right[0], LOW);
  digitalWrite(motor_right[1], HIGH);
}

void turn_left(){
  digitalWrite(motor_left[0], LOW);
  digitalWrite(motor_left[1], HIGH);
 
  digitalWrite(motor_right[0], HIGH);
  digitalWrite(motor_right[1], LOW);
}

void turn_right(){
  digitalWrite(motor_left[0], HIGH);
  digitalWrite(motor_left[1], LOW);
 
  digitalWrite(motor_right[0], LOW);
  digitalWrite(motor_right[1], HIGH);   
}
« Última modificação: 13 de Maio de 2009, 19:19 por guibot »