collapse

* Posts Recentes

Arame de Estendal por almamater
[Ontem às 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]


Emulador NES em ESP32 por dropes
[10 de Abril de 2024, 15:30]


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]


Distancia Cabo por jm_araujo
[08 de Janeiro de 2024, 16:30]

Autor Tópico: programacao do robo  (Lida 10998 vezes)

0 Membros e 1 Visitante 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 »