J'ai récemment commencé à développer pour Arduino. Au départ, j'ai utilisé l'Arduino IDE mais j'ai vite réalisé qu'il n'était pas à la hauteur. Le développement était considérablement plus lent avec la nécessité de IDE redémarre de temps en temps). J'ai trouvé VS Code avec l'extension Arduino que j'ai appris à aimer, mais j'ai quelques problèmes et je ne sais pas comment le résoudre.
Tout d'abord, le code vs génère des erreurs #include et me demande de mettre à jour IntelliSense. Cependant, il construit/télécharge et fonctionne parfaitement bien, il trouve également les classes, etc. définies dans lesdites inclusions, il semble donc que ce soit un faux positif d'une certaine manière (c'est-à-dire que le chemin est inclus dans les paramètres includePath). La lecture du message d'erreur montre également qu'il a des problèmes pour trouver un en-tête référencé dans Arduino.h appelé "avr/pgmspace.h". Je ne sais pas si ces erreurs sont liées. pgmspace.h est introuvable (il aurait dû être inclus dans le SDK Arduino).
Enfin, en raison de l'erreur #include, tout ce qui est lié à ce fichier d'en-tête particulier ne sera pas mis en surbrillance correctement et est juste du texte gris clair qui est un peu ennuyeux.
Quelqu'un sait comment résoudre ce problème? Je suis sur un Mac btw.
Mise à jour : les bibliothèques supplémentaires n'ont pas besoin d'être installées. IntelliSense peut fonctionner en utilisant uniquement les en-têtes installés par l'application Arduino, mais quelques autres peuvent vous aider. Plus de mises à jour ci-dessous.
Lors de la génération de VSCode, il utilise le SDK. Cependant, IntelliSense ne peut pas lire les fichiers SDK pour fonctionner (pour autant que je sache), ce qui jette ces erreurs ennuyeuses et élimine la plupart des capacités de complétion de code.
includePath
et browse.path
doit être configuré. includePath
n'inclut pas récursivement (mais cette fonctionnalité semble arriver bientôt). browse.path
est récursif, mais l'inclusion de l'emplacement exact des fichiers d'en-tête est dans includePath
est toujours nécessaire pour les fonctionnalités IntelliSense. browse.path
utilisera le Tag Parser pour fournir des outils tels que "l'ampoule" sur laquelle vous pouvez cliquer pour résoudre votre problème includePath
. (Source: Quelle est la différence entre "includePath" et "Browse.path" dans c_cpp_properties.json? )
avr/pgmspace.h
est situé à: /Applications/Arduino.app/Contents/Java/hardware/tools/avr/avr/include/avr/pgmspace.h
. Il est codé dans les bibliothèques comme avr/pgmspace.h
; pour cette raison, nous devons inclure le chemin dans lequel avr
est situé.
"includePath": [
"${workspaceFolder}/libraries",
"/System/Library/Frameworks/Kernel.framework/Versions/A/Headers",
"/Applications/Arduino.app/Contents/Java/libraries",
"/Applications/Arduino.app/Contents/Java/hardware/tools/avr/avr/include",
"/Applications/Arduino.app/Contents/Java/hardware/arduino/avr/variants/standard"
],
"browse": {
"limitSymbolsToIncludedHeaders": false,
"path": [
"/System/Library/Frameworks/Kernel.framework/Versions/A/Headers",
"/Applications/Arduino.app/Contents/Java/"
]
},
"forcedInclude": [
"/Applications/Arduino.app/Contents/Java/hardware/arduino/avr/cores/arduino/Arduino.h"
],
Révisez includePath
pour ressembler à ceci:
"includePath": [
"{$workspaceFolder}/libraries",
"C:/Program Files (x86)/Arduino/hardware/tools/avr/lib/gcc/avr/5.4.0/include",
"C:/Program Files (x86)/Arduino/hardware/arduino/avr/cores/arduino",
"C:/Program Files (x86)/Arduino/hardware/arduino/avr/variants/standard",
"C:/Program Files (x86)/Arduino",
],
Si vous pouvez obtenir une version d'une bibliothèque manquante, vous pouvez probablement l'installer dans votre dossier libraries
de votre projet si votre includePath
inclut "${workspaceFolder}/libraries"
. Assurez-vous d'espacer correctement vos bibliothèques, par exemple libraries/avr/pgmspace.h
. Je n'ai pas testé cette méthode.
Mises à jour:
vscode-arduino
les bibliothèques ne sont pas nécessaires sous Windows 10.Source et autres conseils: Activation d'Arduino Intellisense avec Visual Studio Code
La réponse acceptée n'a pas fonctionné pour moi. Impossible de trouver ou de créer le fichier c_cpp_properties.json. Aussi, je voulais que ce soit global, et pas seulement sur un projet/espace de travail/dossier.
Donc, pour VSCode 1.14 (2019), je viens de naviguer jusqu'à settings.json (le global), et j'ajoute cette section json:
"C_Cpp.default.includePath": [
"C:/Program Files (x86)/Arduino/libraries/**",
"C:/Program Files (x86)/Arduino/hardware/arduino/avr/cores/arduino/**",
"C:/Program Files (x86)/Arduino/hardware/tools/avr/avr/include/**",
"C:/Program Files (x86)/Arduino/hardware/tools/avr/lib/gcc/avr/5.4.0/include/**",
"C:/Program Files (x86)/Arduino/hardware/arduino/avr/variants/standard/**",
"C:/Users/<YOUR USERNAME>/.platformio/packages/framework-arduinoavr/**",
"C:/Users/<YOUR USERNAME>/Documents/Arduino/libraries/**",
"{$workspaceFolder}/libraries/**",
"{$workspaceFolder}/**"
],
"C_Cpp.intelliSenseEngine": "Tag Parser"
Publié une autre réponse avec la procédure entière et tous les détails sur l'approche: Visual Studio Code includePath