Problème avec la bibliothèque Software Serial

Bonjour / bonsoir à toutes et à tous,

je sollicite votre aide pour résoudre un problème que je rencontre dans mon projet. Étant en train de réaliser un hexapode, il m’est nécessaire d’utiliser la bibliothèque SoftwareSerial, pour pouvoir utiliser les fonctions Serial. J’ai donc importé cette bibliothèque dans les différents fichiers de mon code (que j’ai attaché en pièce jointe) mais, lorsque je lance la compilation avec mon Arduino Mega 2560, je reçois une pléiade d’erreurs qui, semblerait-il, proviennent de la bibliothèque en question (j’ai attaché une capture d’écran avec une bonne partie des erreurs).

La question que je me pose donc est de savoir si ces erreurs proviennent de conflits entre mon code et la bibliothèque, ou bien est-ce la manière d’importer la bibliothèque qui est fausse ?

Merci d’avance pour vos réponses.

DFRHexapod.ino (2.41 KB)

Bonjour,

Le probléme est là :

#include <SoftwareSerial.cpp>

On inclut que les .h des librairies, pas les .cpp sinon boom! :wink:

Bonjour,

merci beaucoup pour ta réponse ! Grâce à ça, bon nombre d'erreurs ont foutu le camp :*

Cependant, ça a donné naissance à une autre erreur dont je ne comprends pas la raison. Voici une partie du code principal (DFRHexapod) :

ServoConsole console;

void setup(){
  Serial.begin(115200); //For printing out data, or debugging.
  Serial2.begin(1000000); // Used for control servos on left side.
  Serial1.begin(1000000);// Used for control servos on right side.
}

void loop(){
   console.Move(legs, 6, 170, 511); //Legs move to 170 for standing up
   console.Move(hips,6, 480, 511); // hips move to 480 for standing up
   console.Move(axisA, 3, 130, 511); // axis group A move to 130. Prepare for walking
   console.Move(axisB, 3, 70, 511); // axis group B move 70. Prepare for walking
   delay(1000); // waits for their moving

Ici, ServoConsole est une classe créée dans la librairie ServoConsole (le fichier ServoConsole.h est importé dans le programme principal). Cependant, lorsque je lance la compilation, l'IDE me dit " 'ServoConsole' does not name a type", alors que la classe est bel et bien déclarée dans la bibliothèque concernée.

class ServoConsole{
	public:	
	      ServoConsole();
		void Move(int IDArray[], int size, int pos, int vel);
	void MoveUp(int IDArray[], int size, int incrPos, int vel);
	void MoveDown(int IDArray[], int size, int decrPos, int vel);
	private:
	CDS5500_2Serials hostServo;
	Hexapod_Servo allServos;
};

Encore une fois, je fais appel à vos connaissances et à votre générosité pour m'aider à me dépanner de cette situation. :stuck_out_tongue_closed_eyes:

Est-ce qu’il y a plusieurs fichier ino dans ton projet ?
L’include est bien fait avant toute utilisation de ServoConsole ?

Le texte complet de l’erreur sera bien pratique :wink:

*DFRHexapod est le seul fichier INO de mon projet. Les autres sont soit des header, soit des fichiers C++.

*Comme tous les include, celui-ci est fait au tout début du code.

#include <CDS5500_2Serials.h>
#include <Hexapod_Servo.h>
#include <ServoConsole.h>
#include <SoftwareSerial.h>

// Below are the ID arrays of servos. You must set the IDs of the servo according
//to the documents : 
//IDs of the servos of the left front leg: 0, 1, 2 (inner, middle, outer)
//IDs of the servos of the left middle leg: 10, 11, 12(inner, middle, outer)
//IDs of the servos of the left back leg: 20, 21, 22 (inner, middle, outer)
//IDs of the servos of the right back leg: 30, 31, 32(inner, middle, outer)
//IDs of the servos of the right middle leg: 40, 41, 42 (inner, middle, outer)
//IDs of the servos of the right front leg: 50, 51, 52(inner, middle, outer)
int axisA[] = {0, 20, 40};
int axisB[] = {10, 30, 50};
int hipA[] = {1, 21, 41};
int hipB[] = {11, 31, 51};
int legA[] = {2, 22, 32};
int legB[] = {12, 32, 52};
int axis[] = {0, 10, 20, 30, 40, 50};
int hips[] = {1, 11, 21, 31, 41, 51};
int legs[] = {2, 12, 22, 32 ,42, 52};
// servo controller 
ServoConsole console;

void setup(){
  Serial.begin(115200); //For printing out data, or debugging.
  Serial2.begin(1000000); // Used for control servos on left side.
  Serial1.begin(1000000);// Used for control servos on right side.
}

*Concernant l’erreur, j’ai mis en pièce jointe un screen du détail.

Merci encore pour ton aide :3

Fait voir le contenu complet de ServoConsole.h ?
C'est un fichier situé dans le dossier librairies de l'ide ou dans le dossier du projet ?

Voici le contenu de ServoConsole.h :

#ifndef ServoConsole_h
#define ServoConsole_h
#include "Arduino.h"
#include "CDS5500_2Serials.h"
#include "Hexapod_Servo.h"
#include <SoftwareSerial.h>

class ServoConsole{
	public:	
	      ServoConsole();
		void Move(int IDArray[], int size, int pos, int vel);
	void MoveUp(int IDArray[], int size, int incrPos, int vel);
	void MoveDown(int IDArray[], int size, int decrPos, int vel);
	private:
	CDS5500_2Serials hostServo;
	Hexapod_Servo allServos;
};
#endif



//	Hexapod_Servo servo0(0, false, 0, 361, 641);
//	Hexapod_Servo servo1(1, false, 1, 161, 861);
//	Hexapod_Servo servo2(2, true, 2, 1011, 311);
//	Hexapod_Servo servo3(10, false, 0, 361, 561);
//	Hexapod_Servo servo4(11, false, 1, 161, 861);
//	Hexapod_Servo servo5(12, true, 2, 1011, 311);
//	Hexapod_Servo servo6(20, false, 0, 411, 611);
//	Hexapod_Servo servo7(21, false, 1, 161, 861);
//	Hexapod_Servo servo8(22, true, 2, 1011, 311);
//	Hexapod_Servo servo9(30, true, 0, 621, 421);
//	Hexapod_Servo servo10(31, true, 1, 861, 161);
//	Hexapod_Servo servo11(32, false, 2, 11, 711);
//	Hexapod_Servo servo12(40, true, 0, 611, 461);
//	Hexapod_Servo servo13(41, true, 1, 861, 161);
//	Hexapod_Servo servo14(42, false, 2, 41, 741);
//	Hexapod_Servo servo15(50, true, 0, 631, 351);
//	Hexapod_Servo servo16(51, true, 1, 861, 161);
//	Hexapod_Servo servo17(52, false, 2, 11, 711);

//	allServos[0] = Hexapod_Servo(0, false, 0, 361, 641);	
//	allServos[0] = servo0;
//	allServos[1] = servo1;
//	allServos[2] = servo2;
//	allServos[3] = servo3;	
//	allServos[4] = servo4;
//	allServos[5] = servo5;	
//	allServos[6] = servo6;	
//	allServos[7] = servo7;
//	allServos[8] = servo8;
//	allServos[9] = servo9;
//	allServos[10] = servo10;
//	allServos[11] = servo11;
//	allServos[12] = servo12;
//	allServos[13] = servo13;
//	allServos[14] = servo14;
//	allServos[15] = servo15;
//	allServos[16] = servo16;
//	allServos[17] = servo17;

Concernant son origine, il n’est pas présent directement dans l’IDE (c’est-à-dire que l’on peut importer à partir des bibliothèques pré-installées). Il provient de l’entreprise d’où vient le kit, qui met à disposition sur son site l’algorithme de base du déplacement et les trois librairies nécessaires (ces sept fichiers constituent mon projet).

Ben là franchement je sèche ... essaye de retaper la ligne dans le doute.