LusoRobótica - Robótica em Português

Sistemas específicos => Arduino / AVR => Tópico iniciado por: pedrocas98 em 19 de Dezembro de 2013, 01:53

Título: problema com o codigo do arduino
Enviado por: pedrocas98 em 19 de Dezembro de 2013, 01:53
Boas, eu sou iniciante nisto da programação do arduino e precisava de ajuda de alguém que percebesse do assunto.
Eu estou a realizar um projeto simples que vi aqui http://www.instructables.com/id/Line-following-Robot-with-Arduino/ (http://www.instructables.com/id/Line-following-Robot-with-Arduino/) que é basicamente um robô que segue uma linha preta.

Mas na introdução do código no arduino obtenho este erro:


Código: [Seleccione]
In file included from QTRRC_Line_Follow.pde:2:
C:\Users\Me\Documents\Arduino\libraries\PololuQTRSensors/engine.h:5:22: error: WProgram.h: No such file or directory
In file included from QTRRC_Line_Follow.pde:2:
C:\Users\Me\Documents\Arduino\libraries\PololuQTRSensors/engine.h: In function 'void engineSetup()':
C:\Users\Me\Documents\Arduino\libraries\PololuQTRSensors/engine.h:23: error: 'OUTPUT' was not declared in this scope
C:\Users\Me\Documents\Arduino\libraries\PololuQTRSensors/engine.h:23: error: 'pinMode' was not declared in this scope
C:\Users\Me\Documents\Arduino\libraries\PololuQTRSensors/engine.h: In function 'void motor(int, int)':
C:\Users\Me\Documents\Arduino\libraries\PololuQTRSensors/engine.h:33: error: 'HIGH' was not declared in this scope
C:\Users\Me\Documents\Arduino\libraries\PololuQTRSensors/engine.h:41: error: 'LOW' was not declared in this scope
C:\Users\Me\Documents\Arduino\libraries\PololuQTRSensors/engine.h:45: error: 'analogWrite' was not declared in this scope
C:\Users\Me\Documents\Arduino\libraries\PololuQTRSensors/engine.h:46: error: 'digitalWrite' was not declared in this scope
In file included from QTRRC_Line_Follow.pde:4:
C:\Users\Me\Documents\Arduino\libraries\PololuQTRSensors/navigation.h: In function 'void calibrate(PololuQTRSensorsRC*)':
C:\Users\Me\Documents\Arduino\libraries\PololuQTRSensors/navigation.h:21: error: 'delay' was not declared in this scope

gostaria que me ajudassem a resolver isso.

[color=red]link da library[/color] »» [url=https://www.box.com/s/c26rsnfenj1ifd2gtyvg]https://www.box.com/s/c26rsnfenj1ifd2gtyvg[/url]

[color=red]*Visualizar o link do projeto para se obter uma ideia do que estou a falar*[/color]

[color=red]código do arduino:[/color]

#include "config.h"
#include "engine.h"
#include "PololuQTRSensors.h"
#include "navigation.h"
PololuQTRSensorsRC qtr((unsigned char[]) {2,4,5,6,7,8,9,10}, NUM_OF_SENSORS);

void setup(){
#ifdef DEBUG
  Serial.begin(9600);
#endif
  engineSetup();
  calibrate(&qtr);
  delay(2000);

  motor(MotorA,FORWARD_MAX);
  motor(MotorB,FORWARD_MAX);
}

void loop(){
  int pos = readLine(&qtr);

if (pos != LINE_LOST){

    if (pos == EDGE_RIGHT){
      motor(MotorA,REVERSE_MAX);
      motor(MotorB,FORWARD_MAX);
    }else if (pos == EDGE_LEFT){
      motor(MotorA,FORWARD_MAX);
      motor(MotorB,REVERSE_MAX);
    }else{

      int error = pos - MIDDLE_POS;
      int m1Speed = FORWARD_MAX;
      int m2Speed = FORWARD_MAX;

      if (error < 0)
m1Speed = map(error,-MIDDLE_POS,0,REVERSE_MAX,FORWARD_MAX);
      else
m2Speed = map(error,0,MIDDLE_POS,FORWARD_MAX,REVERSE_MAX);

#ifdef DEBUG
      Serial.print(error);   Serial.print(" ");
      Serial.print(m1Speed); Serial.print(" "); Serial.println(m2Speed);
#endif

      motor(MotorA,m1Speed);
      motor(MotorB,m2Speed);
    }
  }
}

obrigado, espero acabar isto rapidamente.  ;D
Título: Re: problema com o codigo do arduino
Enviado por: fergas em 19 de Dezembro de 2013, 10:02
Acho que tens duas soluções: usas uma versão mais antiga do arduino, abaixo da 1.0 (por exemplo a 0023), ou então vais às bibliotecas do projecto que descarregaste, procuras em todas pela linha  #include "WProgram.h" que estará no inicio das bibliotecas e onde a encontrares substituis por #include "Arduino.h"  como indicado aqui (http://forum.arduino.cc/index.php/topic,97455.0.html).