Dans ce cours on va voir comment régler la plupart des problèmes de compilation. Ce sont des problèmes venant du programme Arduino en lui-même : problème de syntaxe, ou bien problème de librairie…
Si vous avez déjà essayé beaucoup de solution sans succès sur d’autre site internet, on vous conseille de regarder notre section sur Arduino Ide Editor.
Il faut faire la différence entre les problèmes de compilation et les problèmes de téléversement. Dans ce cours nous traitons seulement les problèmes de compilation. Les problèmes de compilation sont dus au programme : c’est qu’il y a une erreur à l’intérieur des lignes de code ou de la librairie. Alors que les problèmes de téléversement proviennent lors du téléchargement du programme sur la carte.
Dans arduino ide, appuyez sur le bouton compilation sur la page de votre programme. Si celui-ci indique une erreur, alors vous êtes dans le bon cours. Si aucune erreur ne s’affiche, c’est surement un problème de téléversement. Vous pouvez alors voir notre cours sur ce sujet : https://arduinofactory.fr/probleme-televersement-arduino-toutes-les-solutions/
Ceci est un problème de compilation assez fréquent. En effet, il se peut que notre programme n’ait pas besoin d’un void setup ou void loop pour fonctionner. On peut voir ici que le void setup a été supprimé :
Voici l’erreur que l’on obtient avec ce programme en le compilant :
On peut voir que le programme ne fonctionne pas car il manque le void setup. En effet pour n’importe quel programme Arduino que vous allez écrire, il doit y avoir le void loop et le void setup même s’ils sont vides.
Voici un exemple d’un oubli de caractère. En effet, il peut être très fréquent d’oublier un caractère comme un point-virgule dans votre programme :
Ici on peut voir que l’on a volontairement oublié un point-virgule sur la ligne pinMode(L1,OUTPUT), et en compilant le programme, le logiciel nous indique qu’il manque un caractère avant de fermer la balise. On voit donc que l’on est déjà bien aidé par le logiciel.
De plus voici l’erreur que l’on obtient :
On peut voir que le logiciel nous indique qu’il manque un point-virgule. Il est donc assez facile de se rendre compte de notre erreur en lisant ce que nous indique le logiciel Arduino. Cela vaut pour un oublie de tout type de caractère.
Les librairies sont des éléments indispensables sur Arduino : Elles permettent de simplifier l’utilisation des composants grâce à des fonctions préprogrammés.
Néanmoins les librairies peuvent être de vraies sources de tracas si elles sont mal installées, obsolète…
Dans ce cours nous allons voir une partie des erreurs que l’on peut obtenir avec une librairie.
Une erreur qui arrive quand on est pressé est d’oublier d’installer la librairie utilisée dans le programme que l’on veut compiler. Voici le type d’erreur que l’on obtient :
Avec ceci surligné en rouge qui est la ligne de la librairie non installée :
Il existe dans arduino Ide un manageur de librairie qui vous permet de mettre à jour vos librairies et d’en installer des nouvelles.
Pour pouvoir télécharger la librairie qui vous manque, vous pouvez taper le nom du composant que vous utilisez dans votre programme afin de ne plus avoir l’erreur.
Pour cela vous devez télécharger la librairie en format Zip.
Puis sur Arduino, en allant dans Croquis, vous pouvez ajouter votre librairie en zip :
Il se peut que vous ayez installé par erreur deux fois la même librairie et que donc le logiciel Arduino ide soit perdu.
Voici les différentes erreurs que vous pourriez obtenir :
multiple definition of `__vector_7′
ouC:\Program Files (x86)\Arduino\libraries\Adafruit_Circuit_Playground\utility\Adafruit_CPlay_Mic.cpp: In member function ‘int Adafruit_CPlay_Mic::peak(uint16_t)’: C:\Program Files (x86)\Arduino\libraries\Adafruit_Circuit_Playground\utility\Adafruit_CPlay_Mic.cpp:28:37: error: ‘analogPinToChannel’ was not declared in this scope channel = analogPinToChannel(4); // Pin A4 to ADC channel C:\Program Files (x86)\Arduino\libraries\Adafruit_Circuit_Playground\utility\Adafruit_CPlay_Mic.cpp: In member function ‘void Adafruit_CPlay_Mic::capture(int16_t*, uint8_t)’: C:\Program Files (x86)\Arduino\libraries\Adafruit_Circuit_Playground\utility\Adafruit_CPlay_Mic.cpp:89:37: error: ‘analogPinToChannel’ was not declared in this scope channel = analogPinToChannel(4); // Pin A4 to ADC channel’
Pour régler ce souci vous devez aller dans le dossier qui contient toute vos bibliothèques et supprimer le doublon.
Pour cela vous devez aller dans Document, puis le dossier Arduino et librairies.
Voici la liste des librairies. Vous pouvez supprimer les doublons.
Voici un exemple de librairie obsolète : On peut voir ici qu’il y a des fichiers plus supportés par Arduino ide après la version 1.0. La Libraire doit donc être mise à jour.
In file included from capture_relai.cpp:1: D:\arduino\arduino-1.0\libraries\VirtualWire/VirtualWire.h:14:20: error: wiring.h: No such file or directory In file included from capture_relai.cpp:1: D:\arduino\arduino-1.0\libraries\VirtualWire/VirtualWire.h:59: error: variable or field ‘vw_set_tx_pin’ declared void D:\arduino\arduino-1.0\libraries\VirtualWire/VirtualWire.h:59: error: ‘uint8_t’ was not declared in this scope D:\arduino\arduino-1.0\libraries\VirtualWire/VirtualWire.h:63: error: variable or field ‘vw_set_rx_pin’ declared void D:\arduino\arduino-1.0\libraries\VirtualWire/VirtualWire.h:63: error: ‘uint8_t’ was not declared in this scope D:\arduino\arduino-1.0\libraries\VirtualWire/VirtualWire.h:67: error: variable or field ‘vw_set_ptt_pin’ declared void D:\arduino\arduino-1.0\libraries\VirtualWire/VirtualWire.h:67: error: ‘uint8_t’ was not declared in this scope D:\arduino\arduino-1.0\libraries\VirtualWire/VirtualWire.h:71: error: variable or field ‘vw_set_ptt_inverted’ declared void D:\arduino\arduino-1.0\libraries\VirtualWire/VirtualWire.h:71: error: ‘uint8_t’ was not declared in this scope D:\arduino\arduino-1.0\libraries\VirtualWire/VirtualWire.h:76: error: variable or field ‘vw_setup’ declared void D:\arduino\arduino-1.0\libraries\VirtualWire/VirtualWire.h:76: error: ‘uint16_t’ was not declared in this scope D:\arduino\arduino-1.0\libraries\VirtualWire/VirtualWire.h:95: error: ‘uint8_t’ does not name a type D:\arduino\arduino-1.0\libraries\VirtualWire/VirtualWire.h:101: error: ‘uint8_t’ does not name a type D:\arduino\arduino-1.0\libraries\VirtualWire/VirtualWire.h:104: error: ‘uint8_t’ does not name a type D:\arduino\arduino-1.0\libraries\VirtualWire/VirtualWire.h:109: error: ‘uint8_t’ does not name a type capture_relai.cpp: In function ‘void setup()’: capture_relai:12: error: ‘vw_set_ptt_inverted’ was not declared in this scope capture_relai:13: error: ‘vw_setup’ was not declared in this scope capture_relai:14: error: ‘vw_set_tx_pin’ was not declared in this scope capture_relai.cpp: In function ‘void loop()’: capture_relai:23: error: cannot convert ‘float’ to ‘const char*’ in initialization capture_relai:25: error: ‘vw_send’ was not declared in this scope
Il est possible que la librairie que vous utilisiez soit obsolète par rapport à la version d’Arduino IDE utilisée, surtout si vous avez fait la mise à jour d’Arduino IDE mais pas des librairies.
Pour régler ce souci, vous devez aller dans sketch puis manage librairies :
Changer ensuite dans type pour avoir les librairies déjà installées et vous pourrez voir si vous devez les mettre à jour :
On peut voir ici que la librairie Bridge peut être mise à jour en cliquant sur udapte.
Si toute fois vous avez du mal à installer une librairie ou bien que vous vouliez vous en passer, sachez qu’elle n’est pas obligatoire !
Pour cela vous devez ajouter au code les lignes dont vous avez besoin dans votre code.
Voici un exemple que l’on a fait dans le cours moteur pas à pas ou l’on remplace la librairie :
#include
const int stepsPerRevolution = 2048; // A modifier pour qu'il corresponde au nombre de pas par tour
const int pasParMinute = 15; // La plage réglable du pas à pas est de 0 à 17
Stepper myStepper(stepsPerRevolution, 8, 10, 9, 11); // initialisation des pins stepper moteur
void setup() {
myStepper.setSpeed(pasParMinute) ;
}
void loop() {
myStepper.step(stepsPerRevolution) ; // dans une direction
delay(500);
myStepper.step(-stepsPerRevolution) ; // dans l’autre direction
delay(500);
}
Par : (On déclare les pins que l’on va utiliser sur la carte arduino pour faire fonctionner le moteur pas à pas) :
#include
#define IN1 8
#define IN2 9
#define IN3 10
#define IN4 11
Et : (On déclare les variables pour le sens du moteur, le nombre de pas)
#include
int Steps = 0;
boolean Direction = true;
unsigned long last_time;
unsigned long currentMillis ;
int steps_left=4095;
long time;
Enfin: (On declare les pins en sortie pour pouvoir les commander)
#include
pinMode(IN1, OUTPUT);
pinMode(IN2, OUTPUT);
pinMode(IN3, OUTPUT);
pinMode(IN4, OUTPUT);
Voici un exemple de comment vous passez de la librairie stepper.h. Pour en savoir plus sur cette librairie cliquer ici.
Un autre problème qui peut survenir est que votre antivirus bloque l’accès au dossier dont arduino Ide à besoin pour compiler. On va donc vous afficher un problème de droits (d’accès aux fichiers & dossiers) comme on peut le voir ici :
#include
“Arduino : 1.8.0 (Windows 10), Carte : “Arduino/Genuino Uno” c:\users\julien\desktop\arduino\arduino-1.8.0\hardware\tools\avr\bin../lib/gcc/avr/4.9.2/../../../../avr/bin/ar.exe: unable to rename ‘core\core.a’; reason: Permission denied exit status 1 Erreur de compilation pour la carte Arduino/Genuino Uno Ce rapport pourrait être plus détaillé avec l’option “Afficher les résultats détaillés de la compilation” activée dans Fichier -> Préférences.”
Pour régler cette erreur, on va vous proposer plusieurs solutions :
Il se peut que celui bloque l’accès à vos fichiers lorsque Arduino Ide essaie de compiler. Pour cela essayer de le désactiver ou bien de faire une exception pour ce logiciel.
En effet, il se peut qu’il y ait des problèmes dans les permissions qui ont été données au dossier. Pour cela on vous conseils de réinstaller votre Ide. De plus il se peut qu’il y ait des soucis dans le compilateur que vous avez installés.
Si néanmoins le problème, on vous conseille de passer à la section suivante sur l’éditeur Arduino Ide en ligne.
Si jamais les problèmes sur votre Ide n’ont pas été résolue, on a trouvé une solution en ligne qui pourrait régler votre souci. En effet, le logiciel Arduino Ide étant installé sur des machines différentes, il se peut qu’il ne fonctionne pas forcément bien partout. C’est pour cela que si vous avez du mal à compiler un programme vous pouvez utiliser l’éditeur Arduino Ide en ligne.
Cet éditeur vous propose toutes les options que celui que vous avez téléchargé, mais comme il est hébergé sur le site Arduino vous n’aurez pas de problème de compatibilité.
Voici le lien pour s’y connecter : Arduino Editor Ide
Une fois votre compte crée, voici ce que l’on obtient :
On vous propose tout d’abord d’importer le programme que vous voulez compiler. Il faudra l’exporter depuis Arduino Ide en zip et en y ajoutant un dossier « Libraries » en y mettant les librairies que vous voulez importer :
Si vous cliquez sur yes voici le programme une fois importé :
On voit ici le code que vous avez importé. En haut il y a le bouton sauvegarder et vérifier. Ceci va vous permettre de compiler votre programme en ligne.
Vous pouvez ajouter d’autre librairie manuellement en cliquant sur Libraries :
Une liste de librairie déjà installée sera indiqué et si vous ne trouvez pas celle que vous souhaitez vous pouvez l’installer avec le Library Manager :
Vous pouvez aussi choisir votre carte pour téléverser le programme, mais pour cela vous devrez télécharger le mini logiciel suivant :
Ce logiciel permettra de faire la liaison entre la carte Arduino et l’éditeur en ligne. Vous pouvez retrouver ce logiciel à cette adresse.
Une fois le logiciel téléchargé, il vous faut suivre les étapes :
Après avoir accepté le règlement, on va vous demandez si vous souhaitez utiliser le logiciel sur un autre navigateur web que vous utilisez actuellement :
Une fois le logiciel installé, nous pouvons revenir à l’interface d’Arduino Ide Editor pour téléverser votre programme.
J’espère que ce cours vous aidez à régler vos problèmes de compilation. Il est difficile de régler tous les soucis de compilation, c’est pour cela que l’on a souhaitez vous présenter le logiciel Arduino Ide Editor qui est une solution valable pour les problèmes de compilation actuels et du futur.
N’hésitez pas à regarder notre cours sur les problèmes de téléversement si vous obtenez un problème de téléversement à la suite de votre problème de compilation.
Un problème de compilation est une erreur dans votre programme alors qu'une erreur de téléverment est un problème lors de la transmission de votre programme sur la carte.
Sur Arduino Ide,si vous cliquez sur le bouton compilation et que vous avez des lignes en rouge dans la console c'est un problème de compilation. Si ceci apparait seulement en cliquant sur le bouton téléverser alros c'est un problème entre le programme et la carte Arduino.
Si vous avez des problèmes de compialtion, cela peut-être un oublie d'un caractère tels qu'un point virgule par exemple