Problème #ifndef

Bonsoir,

J'avoue ne pas avoir trouvé de réponde dans mes recherches et test et devoir, du coup, m'en remettre à vos lumières.

J'essais de me faire une petite librairie pour me simplifier la tâche ensuite. Hélas, j'ai bien peur que le compilateur ne sache pas travaillé avec mes fichiers.

J'ai commencé par un sketch vide. Le but n'es juste, pour le moment que de charger la librairie.
Ce qui me donne cela:

/* -- INCLUDE -- */
#include <dri.h>


/* -- INITIALISATION -- */
void setup() {

}

/* -- BOUCLE -- */
void loop() {

}

Ensuite, j'ai créer un header, histoire de voir si ça fonctionnais. J'ai mis le strict minimum pour le moment.

#ifndef dri_h
#define dri_h

#if ARDUINO >= 100
#include "Arduino.h"
#else
#include "WProgram.h"
#endif

class DRI {
	public:
		DRI(int pin_on, int pin_pwm);
		void CMD(int sens, int vitesse);
		
	private:
		int _pin_on;
};

#endif

Et bien sûr ça ne compile pas ]:smiley:
Voila la petite erreur que je n'arrive pas à cerné:

Erreur de compilation:
In file included from GCrawler2.ino:2:
C:\Users\Geeks\Dropbox\Electronique\Arduino\sketchbook\libraries\dri0002/dri.h:1:1: error: unterminated #ifndef

En gros, il ne trouve pas de quoi finir ifndef. Ors, sauf si je me suis trompé quelque-part il se termine bien !

Et je tourne en rond. Donc voils, j'ai peut-être mal codé, ou oublier quelque chose. Mais là, je ne crois pas trop. Vos conseils sont donc les bienvenus.

Merci. 8)

Il te manque un #endif

Normalement non.

Si tu regarde j'en ai mis 2. Un pour le if dans ie ifndef et un pour le ifndef. Ou alors il y a un souci avec le compilateur qui en demande plus que nécessaire !

De plus en ajouter un à la fin de résoud pas le problème. ]:smiley:

OMG !
J'ai l'impression que le logiciel, enfin l'IDE, ne prenais pas les bons fichiers ! J'ai du tout supprimer et refaire !

Maintenant, j'ai une nouvelle erreur.

Quand j'écris :

/* -- INCLUDE -- */
#include <Dri2.h>

Dri2 Mot2(6, 9);

/* -- INITIALISATION -- */
void setup() {

}

/* -- BOUCLE -- */
void loop() {

}

Si ma librairie ressemble à cela:

#ifndef Dri2_h
#define Dri2_h

#include "Arduino.h"

class Dri2 {
	public:
		Dri2(int pin_on, int pin_pwm);
		void Action(int dir, int speed);
	private:
		int _pin_on;
};

#endif

Et que j'ai ceci:

#include "Arduino.h"
#include "Dri2.h"

Dri2::Dri2(int pin_on, int pin_pwm) {
	pinMode(pin_on, OUTPUT);
	pinMode(pin_pwm, OUTPUT);
	
	_pin_on = pin_on;
}

void Dri2::Action(int dir, int speed) {
	
	TCCR2A = _BV(COM2A1) | _BV(COM2B1) | _BV(WGM20);
	TCCR2B = _BV(CS22);
	
	if(dir) {
		ORC2A = speed;
		ORC2B = 50;
	}
	else {
		ORC2A = 50;
		ORC2B = speed;
	}

	if(speed != 0) {
		digitalWrite(_pin_on, HIGH);
	}
	else {
		digitalWrite(_pin_on, LOW);
	}
}

Il devrais bien normalement trouvé Dri2 comme type de nom. Et que dalle !

GCrawler:4: error: 'Dri2' does not name a type

Comment se fait-il que ça ne passe pas ?