Librairie qui disparait

Hello.
Je viens pour poser une question: est-il normal que j'ai ce message:
fatal error: PCD8544.h: No such file or directory

Alors que .... je n'ai touché à rien entre 2 compilations ????????????????????

Ca fonctionnait jusqu'à présent, j'en ai pour preuve mon lcd qui fonctionne avec le programmme televersé il y a quelques dizaines de minutes (oui je cherche depuis environ 1h30 que j'ai ce souci ....)

IDE redémarré, pc rebooté .... idem, ce fichu message d'erreur qui me rend dingue !

La librairie est bien installée dans arduino\librairies, il y a bien le fichier PCD8544.h dedans...

Mais je vois pas pourquoi ça déconne, vu que ça compilait AVANT ....

An idea ??

Salut Ninnin,

cela m'est déja arrivé, pour que ceci REfonctionne, désinstalle ton 'IDE Arduino' ensuite réinstalle le et remet toute les Librairies

Voili voilou

(-:

Salut & bonne chance KISS

Hello.
Merci, fait à l’instant.
Mais…

In file included from core.h:8:0,
from core.cpp:1:
menu.h:5:21: fatal error: PCD8544.h: No such file or directory
#include <PCD8544.h>
^
compilation terminated.
Erreur lors de la compilation.

:confused: :confused: :confused: :confused:

Il faut aussi redémarrer l'IDE pour que les librairies installées soient vues.

Déjà fait au bas mot une bonne cinquantaine de fois.

J’ouvre le fichier d’exemple dans la librairie, ça compile ok.
J’ai tout effacé dans mon projet, il reste le main.ino, menu.cpp et menu.h

main.ino

#include "menu.h"

void setup() {
}

void loop() {
}

menu.h

#ifndef __MENU_H__
#define __MENU_H__
#include <PCD8544.h>
#endif

menu.cpp

#include "menu.h"

A devenir taré sérieux…

L’erreur :

menu.h:3:21: fatal error: PCD8544.h: No such file or directory
#include <PCD8544.h>
^
compilation terminated.
Erreur lors de la compilation.

va voir dans ton repertoire lirairies si tu n'as pas une erreur dans le nom
et si tu as bien viré le "master" s'il y en avait un

Majuscules / minuscules mélangées dans les noms de fichiers ?

Merci pour vos réponses

Tout essayé meme sans le -master, majuscule /minuscules vérifiés aussi mais c'est sous windows, ça ne pose souci que sous linux ça non ?

Quoi qu'il en soit, je n'ai rien touché aux librairies, l'erreur est arrivée d'un coup, sans même aucun changement dans le code -_-'

à ce stade, un petit rite vaudou n'est peut-être pas complètement à écarter.

Fais attention à ne pas tâcher ton clavier avec du sang de poulet.

J'ai pas de poulet :-/
Quoi que j'ai bien une dinde ..........

*** PAS TAPER *** :smiley:

dans ton code, as tu effacé et retapé la ligne

Oui, bien sur !
J’ai même effacé puis remis la librairie avec l’import de l’IDE (elle apparait dans l’IDE)

Ca me remet #include <PCD8544.h> mais même erreur à la compil.

Après avoir copieusement insulté le logiciel, mis quelques coups de pieds au pc, ça refonctionne -_-"""""

J'y comprends rien :cry:

J'essaye de reproduire le bug parce que là j'aimerai comprendre !

Re.
Bon du coup je tente un code et marche pas.... Je suis fatigué là pffff....

void Menu::drawNumber(byte x, byte y, byte nbCount, signed int dec, float number) {
	//this->lcd.drawBitmap(bmp_decimalPoint, 8, 2);
	this->lcd.setCursor(x,y);
	for (signed int n = nbCount-1; n>=0; --n) {
		float coef = pow((float)10.00,(float)n);
		lcd.print(coef); lcd.print (" ");
		Serial.print(n); Serial.print("="); Serial.println((float)coef);
		char buffer[25];
		Serial.print(floatToString(buffer, a, 5));
	}

Sortie série :

6=999999.68
5=99999.98
4=10000.00
3=1000.00
2=100.00
1=10.00
0=1.00

Au lieu de
6=1000000.00
5=100000.00
4=10000.00
3=1000.00
2=100.00
1=10.00
0=1.00

Hello !
J'ai réussi à reproduire le bug des librairies, enfin .... presque....

Si je n'inclue pas le fichier PCD.h dans le fichier .ino mais que je le laisse uniquement dans le fichier menu.h ça ne compile pas; mais si je le rajoute dans le fichier.ino (et dans le menu.h bien sur vu que c'est lui qui l'utilise) là ça compile.

Si c’est bien cela ce n’est pas un bug ou alors un bug dans l’interface chaise-clavier :slight_smile: .

Que fait l’IDE ?
Tu lui fourni un fichier *.ino et l’IDE le transforme en un fichier *.cpp classique, le seul que le compilateur peu traiter, notamment l’IDE ajoute toutes les pré-définitions des fonctions, la fonction main() qui comporte la boucle infinie etc…

Que fait le compilateur ?
il compile individuellement tous les fichiers *.c ou *.cpp ( le fichier *.ino transformé en *.cpp par l’IDE et les fichiers *.c ou *.cpp des différentes librairies) et créé des fichiers objets.
Ces fichiers objets sont ensuite liés (linker) pour faire le programme.

Pour que le compilateur puisse travailler il faut dans chaque fichier *.c lui dire expressément quelles fonctions vont être utilisées : il faut être complet sur les inclusions de fichier *.h.

Exemple blink
Fichier blink.ino

/*
  Blink
  Turns on an LED on for one second, then off for one second, repeatedly.
 
  This example code is in the public domain.
 */
 
// Pin 13 has an LED connected on most Arduino boards.
// give it a name:
int led = 13;

// the setup routine runs once when you press reset:
void setup() {                
  // initialize the digital pin as an output.
  pinMode(led, OUTPUT);     
}

// the loop routine runs over and over again forever:
void loop() {
  digitalWrite(led, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(1000);               // wait for a second
  digitalWrite(led, LOW);    // turn the LED off by making the voltage LOW
  delay(1000);               // wait for a second
}

Dans le répertoire temporaire où l’IDE écrit ses fichiers intermédiaire on trouve un blink.cpp

#line 1 "Blink.ino"
/*
  Blink
  Turns on an LED on for one second, then off for one second, repeatedly.
 
  This example code is in the public domain.
 */
 
// Pin 13 has an LED connected on most Arduino boards.
// give it a name:
#include "Arduino.h"
void setup();
void loop();
#line 10
int led = 13;

// the setup routine runs once when you press reset:
void setup() {                
  // initialize the digital pin as an output.
  pinMode(led, OUTPUT);     
}

// the loop routine runs over and over again forever:
void loop() {
  digitalWrite(led, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(1000);               // wait for a second
  digitalWrite(led, LOW);    // turn the LED off by making the voltage LOW
  delay(1000);               // wait for a second
}

et dans le core on trouve le fichier générique : main.cpp

#include <Arduino.h>

int main(void)
{
	init();
	setup();    
	for (;;) {
		loop();	
	}       
	return 0;
}

Je sais cela, c'est pour ça que j'ai ecrit sur la première ligne "enfin .... presque...."
:slight_smile: