WProgram.h - Problème de compilation

Bonjour à tous,

Je viens d’acheter un shield moteur pour piloter 2 moteurs CC (EF02026 d’Elecfreaks).
Lors de la compilation, j’ai ce message d’erreur :

#include “WProgram”

J’ai fait beaucoup de recherche sur google et je sais que c’est dû à un problème de version obsolète.

J’ai donc essayé comme il était noté sur plusieurs sites de remplacer WProgram par :

#include <Arduino.h>

ça aussi,

#if defined(ARDUINO) && ARDUINO >= 100
#include “Arduino.h”
#else
#include “WProgram.h”
#endif

mais le problème est toujours le même.
Je désespère merci de bien vouloir m’aider

Remplace directement Wprogram.h par Arduino.h cela devrait le faire.
Cela fait belle lurette que l’IDE utilise Arduino.h.

Au passage cela ne compile pas parce que tu as écrit
#include “Arduino.h” → dit au compilateur que le fichier est dans le répertoire courant
au lieu de
#include <Arduino.h> → dit au compilateur d’aller chercher le fichier dans le répertoire dédié aux includes

Sinon je te rappelle ce qu’il y a d’écrit dans le message épinglé “Bienvenue sur le forum…” que tu n’as pas manqué de lire.
Il faut TOUT dire :
Quel OS
Quelle version de l’IDE
Quel matériel → lien vers le matériel

Le code se met entre balise code → icone de gauche “</>”

Quand cela refuse de compiler recopier le résultat de la compilation est plus utile que de donner quelques extraits.

Autre cause possible d’erreur : les programmes qui utilisent encore WProgram.h sont des vieux dinosaures et il y a de fort risques qu’ils ne soient pas compatible avec les dernières versions du compilateur avr-gcc.
Il n’y a rien de systématique : ça peut compiler … ou pas.
Tu trouvera toujours des versions plus à jour en t’aidant d’un moteur de recherche.

Merci pour ta première réponse, pour te donner plus de détails :

OS : windows 10
IDE : arduino 1.6.9
le lien pour le shield moteur : http://www.gotronic.fr/art-shield-moteurs-4-x-0-6-a-ef02026-23482.htm

Carte arduino UNO SN edition
Je n’ai pas précisé aussi, il y a une carte shield grove sur laquelle je branche des capteurs qui fonctionnement très bien, insérée entre l’arduino et le shield moteur : http://www.gotronic.fr/art-module-grove-base-shield-103030000-19068.htm

C’est triste que ce soit juste 2 moteurs cc qui empêche le sketch de fonctionner.

J’ai rectififié
#include “Arduino.h”
en
#include <Arduino.h>
comme tu me l’as dit
Pour info je n’ai jamais inséré Wprogram.h c’est ce mot qui a été généré lors de la compilation.Les “includes” ce sont les librairies ?

Le problème Wprogram ne s’affiche plus mais maintenant il y a un autre problème, j’ai résinstallé Arduino pour le remettre à neuf (on sait jamais) puis j’ai installé la librairie du shield dans le fichier exemples puis librairies (dans les 2 puisque je ne sais pas dans le lequel dossier le mettre)

voici le sketch :

#include <Arduino.h>
#include <AFMotor.h>

AF_DCMotor motor(2, MOTOR12_1KHZ); // moteur2, 64KHz pwm

void setup() {
Serial.begin(9600);
Serial.println(“Test”);

motor.setSpeed(255); // vitesse
}

void loop() {
Serial.print(“tick”);

motor.run(FORWARD); // avance
delay(1000);

Serial.print(“tock”);
motor.run(BACKWARD); // recule
delay(1000);

Serial.print(“tack”);
motor.run(RELEASE); // stop
delay(1000);
}

et voici le message d’erreur ce qui me fait penser que la librairie je ne l’ai pas mis au bon endroit

Arduino : 1.6.9 (Windows 10), Carte : “Arduino/Genuino Uno”

C:\Program Files (x86)\Arduino\arduino-builder -dump-prefs -logger=machine -hardware “C:\Program Files (x86)\Arduino\hardware” -tools “C:\Program Files (x86)\Arduino\tools-builder” -tools “C:\Program Files (x86)\Arduino\hardware\tools\avr” -built-in-libraries “C:\Program Files (x86)\Arduino\libraries” -libraries “C:\Program Files (x86)\Arduino\examples\libraries” -fqbn=arduino:avr:uno -ide-version=10609 -build-path “C:\Users\Arnaud\AppData\Local\Temp\builda85ecd806af2677afc28cb7c1055d39e.tmp” -warnings=all -prefs=build.warn_data_percentage=75 -verbose “G:\IMU_10DOF-master (1)\IMU_10DOF-master\examples\moteur\moteur.ino”
open C:\Program Files (x86)\Arduino\examples\libraries: Le fichier spécifié est introuvable.

Error compiling for board Arduino/Genuino Uno.

Ce ne serait pas du à des problèmes administrateurs ? à chaque fois que je veux copier un fichier sur le dossier arduino il fait que j’indique à chaque fois que je suis bien l’administrateur pour que le fichier se copie. Désolé le truc </> pour insérer le code ça marche pas donc je mets le sketch en bleu et l’erreur en vert. Je ne comprends pas non plus pourquoi il va voir la librairie “IMU_10DOF-master” dans le disque G alors que c’est une librairie pour un capteur qui n’est même pas branché.

J’espère que j’ai été assez clair, n’hésite pas à me poser d’autres question si tu en as besoin. Si tu peux toujours m’aider, merci d’avance :slight_smile:

Windows : connais absolument pas → Linux Debian
IDE 1.6.9 → foutoir depuis la 1.6.6, beaucoup de plaintes sur les forum surtout avec win10.
Conseil charge une 1.6.5 tu aura moins de problème. C’est ce que fait la majorité ici.

Un fichier include n’est pas une librairie bibliothèque.
Le langage utilisé avec les micro avr est du langage C et/ou Cpp tout ce qu’il y a de standard.

Pour connaître le rôle des fichiers *.h inclus il faut que tu ailles sur des sites comme OpenClassRoom pour apprendre les bases du C/Cpp.
Si tu consulte le site indiqué tu comprendra pourquoi un fichier C ou Cpp est souvent accompagné par un fichier *.h (appelé aussi fichier d’en-tête → H comme Header)

Le fonctionnement de toutes les IDEs est grosso modo le même : il existe des répertoires précis où sont rangés les fichiers de bibliothèques.

Avec l’IDE arduino deux cas se présentent :

  1. Tu utilises une bibliothèque fournie avec l’IDE
    inclure le fichier *.h avec des < > indique à l’IDE qu’il faut utiliser le fichier *.cpp ou *.c associé.

  2. Tu utilises une bibliothèque extérieure à l’IDE:
    Il faut que tu installes le répertoire contenant la bibliothèque dans le sous répertoire “libraries” du répertoire où sont enregistré tous tes fichier ino. C’était “schetchbook” maintenant c’est “arduino”
    Le fichier *.h sera toujours à inclure avec des < > puisque c’est un endroit connu par l’IDE.

Cas général : on ne parle plus de bibliothèque mais de découper le programme en plusieurs fichiers.
C’est parfaitement possible toujours en utilisant dans le même répertoire que le fichier *.ino des fichiers *.c ou *.cpp accompagnés de leurs fichiers *.h.
Dans ce cas il faudra inclure le fichier .h avec des apostrophes ".h" . Au vu des apostrophes l’IDE comprendra qu’elle trouvera le fichier dans le répertoire courant.

Dernier point :
Tu n’as visiblement pas lu les messages épinglés en tête de forum : le code se place entre balises code → l’icône à droite “</>”.
Il n’y a que toi qui peut éditer tes messages →
Bien éditer son post pour les nuls

Ok je vais voir ça, je te tiens au courant

Bonjour,

ça y est ça fonctionne,

J'ai installé une ancienne version d'Arduino comme tu me l'avais dit. J'ai remplacé #include"Wprogram.h" dans le fichier .cpp de la librairie AFMotor par #include"Arduino.h"... et c'est bon.

Merci beaucoup pour ton aide et à la prochaine