Comment je développe et j'implémente mon code compilé sur une carte Arduino ? La programmation en C/C++ est la manière la plus courante de programmer la carte Arduino.
Le logiciel se divise alors en 2 fonctions le setpup() et une fonction loop() qui est la boucle naturelle de l'application.
Programmation en python, il ne s'agit pasz d'une compilation croisée mais d'une application résidente de la carte arduino qui est en communication avec les instructions python.
http://claude.gueganno.free.fr/arch/polyArduino.pdf
Voilà un bon début et un ensemble de généralités pour bien fixer les idées.
Visual Studio Code permet avec trois extension de programmer en C++ pour Arduino...
Pour moi ça commence Ici :
Devenez-pro-en-electronique-PROGRAMMER SON ARDUINO AVEC VISUAL STUDIO
Arduino gestion des ports COM
Je complique ma configuration de développement en essayant d'installer la chaîne de développement Arduino dans une machine du Cloud.
En jouant avec Arduino vous allez devoir maîtriser les affectation des ports COM aussi je vous conseil la page suivante :
http://www.e-novatic.fr/rediriger-les-ports-com-sous-tse/
|
Redirection des ports COM de l'hôte vers le cloud |
Pour tout savoir sur la commande :
>change port /query
Pour afficher les ports COM et leur caractéristique.
Sur les ports COM de Windows :
Eltima - 2 méthodes pour régler tous les problèmes de ports COM sur Windows 10
Voilà des gens qui maîtrise les ports COM.
Sur l'autorisation des port COM en Remote Desktop :
Modèle d'administration (ordinateurs) - Ne pas autoriser la redirection des ports COM
Il semble bien que ces possibilités de bloquer la redirection des port com date un peu dans le monde Microsoft et que les clefs de registre ne soient plus utilisées :
|
regedit - Ne pas autoriser la redirection de port COM |
Remote Desktop Services - Some USB devices aren't availableOn apprend à mettre la ligne :
usbdevicestoredirect:s: RDPdans le fichier .rdp
Et à modifier la base de registres mais attention ...
Attention : Sous Windows 7, il est bien sûr impossible de rediriger un port COM vers une machine du cloud le degrés de virtualisation du port COM n'étant pas suffisant.
Visual Studio Code pour Arduino
Installation de l'extension PlatformIO IDE pour VSCode :
Pour pouvoir créer mon premier projet, choix de la carte Arduino :
Carte Arduino Mega 2560.
PowerShell vs PlaformIO CLI
Il faut faire attention à exécuter les commandes dans le bon environnement. D'ailleurs je travaille avec une machine sous Windows 7 un peu ancien pour PowerShell, j'ai tenté d'installer l'extension proposée mais impossible "une vraie galère" :
|
Error installing PowerShell extension on Visual Studio Code |
Allez je vous mets le message d'error :
01/03/2021 17:25:51 [NORMAL] - Visual Studio Code v1.53.2 64-bit
01/03/2021 17:25:51 [NORMAL] - PowerShell Extension v2021.2.2
01/03/2021 17:25:51 [NORMAL] - Operating System: Windows 64-bit
01/03/2021 17:25:51 [NORMAL] - Language server starting --
01/03/2021 17:25:51 [NORMAL] - PowerShell executable: C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
01/03/2021 17:25:51 [NORMAL] - PowerShell args: -NoProfile -NonInteractive -ExecutionPolicy Bypass -Command Import-Module 'd:\Users\Braby\.vscode\extensions\ms-vscode.powershell-2021.2.2\modules\PowerShellEditorServices\PowerShellEditorServices.psd1'; Start-EditorServices -HostName 'Visual Studio Code Host' -HostProfileId 'Microsoft.VSCode' -HostVersion '2021.2.2' -AdditionalModules @('PowerShellEditorServices.VSCode') -BundledModulesPath 'd:\Users\Braby\.vscode\extensions\ms-vscode.powershell-2021.2.2\modules' -EnableConsoleRepl -StartupBanner '=====> PowerShell Integrated Console v2021.2.2 <=====
' -LogLevel 'Normal' -LogPath 'd:\Users\Braby\.vscode\extensions\ms-vscode.powershell-2021.2.2\logs\1614615951-32066405-00df-48dd-bd18-8b2f8655bf801614615914391\EditorServices.log' -SessionDetailsPath 'd:\Users\Braby\.vscode\extensions\ms-vscode.powershell-2021.2.2\sessions\PSES-VSCode-4792-598641' -FeatureFlags @()
01/03/2021 17:25:51 [NORMAL] - PowerShell Editor Services args: Import-Module 'd:\Users\Braby\.vscode\extensions\ms-vscode.powershell-2021.2.2\modules\PowerShellEditorServices\PowerShellEditorServices.psd1'; Start-EditorServices -HostName 'Visual Studio Code Host' -HostProfileId 'Microsoft.VSCode' -HostVersion '2021.2.2' -AdditionalModules @('PowerShellEditorServices.VSCode') -BundledModulesPath 'd:\Users\Braby\.vscode\extensions\ms-vscode.powershell-2021.2.2\modules' -EnableConsoleRepl -StartupBanner '=====> PowerShell Integrated Console v2021.2.2 <=====
' -LogLevel 'Normal' -LogPath 'd:\Users\Braby\.vscode\extensions\ms-vscode.powershell-2021.2.2\logs\1614615951-32066405-00df-48dd-bd18-8b2f8655bf801614615914391\EditorServices.log' -SessionDetailsPath 'd:\Users\Braby\.vscode\extensions\ms-vscode.powershell-2021.2.2\sessions\PSES-VSCode-4792-598641' -FeatureFlags @()
01/03/2021 17:25:51 [NORMAL] - powershell.exe started.
01/03/2021 17:25:51 [NORMAL] - Waiting for session file
01/03/2021 17:29:51 [NORMAL] - Timed out waiting for session file to appear.
01/03/2021 17:29:51 [NORMAL] - Language server startup failed.
01/03/2021 17:29:51 [ERROR] - The language service could not be started:
01/03/2021 17:29:51 [ERROR] - Error: Timed out waiting for session file to appear.
Ce n'est pas ce qu'il faut faire !
Dès que vous ouvrez Visual Studio Code sur un projet Arduino il faut ouvrir un Terminal PlatformIO CLI en cliquant sur le tout petit bouton en bas dans le Barre Arduino :
|
Visual Studio Code pour Arduino - Terminal PlatformIO CLI |
Et vous obtenez le bon environnement pour exécuter toutes les commandes PlatformIO :
|
Visual Studio Code pour Arduino - Terminal PlatformIO CLI |
Voilà mon environnement de développement avec VSCode pour Arduino fonctionne est maintenant correctement configurer.
Architecture des chaînes de caractères
C'est une drôle de surprise, vous allez tomber sur :
const
__FlashStringHelper *format
Il y en a qui pour gagner de la place vont vouloir stocker des variables dans la mémoire programme :
|
Architecture Harvard vs Von-Neuman |
Du coup les chaînes sont illisibles, il faut des manipulation pour s'y retrouver.
Il vous faudra consulter la page suivante pour découvrir quels types de mémoires sont utilisés sur les boards arduino :
Arduino faire des Log et des Traces
Moi j'ai attaqué par une fonction que j'aime bien écrire :
void log_print(char const *aFormat, ...)
{
char buffer[256];
va_list args;
va_start(args, aFormat);
vsprintf(buffer, aFormat, args);
va_end(args);
Serial.print(buffer);
};
Cela ne fonctionne pas le format des doubles et des floats ne fonctionne pas avec les fonctions de la lib standard du C++.
J'ai trouvé la fonction
\\.platformio\packages\framework-arduino-avr\cores\arduino\Print.cpp
size_t Print::printFloat(double number, uint8_t digits)
qui permet d'afficher un Float par le port série ...
Pour finalement trouver ce que je cherche à faire :