Arduino : programmer facilement en C++ moderne

Je suis dans une machine virtuelle Debian Jessie sous Mate (sous VMWare 12) et le but est de programmer un Arduino Uno en C++.

Méthode 1 – Sans la library core

  • Installation des soft nécessaires
  • 1 sudo apt-get install gcc-avr binutils-avr gdb-avr avr-libc avrdude

  • Test le port série (à travers le port USB). On voit qu’il faut appartenir au groupe dialout pour pouvoir l’utiliser.
  • 1 2 ls -l /dev/ttyACM* crw-rw—- 1 root dialout 166, 0 mars 27 23:20 /dev/ttyACM0

  • Si besoin, ajouter le user courant au groupe « dialout »
  • 1 sudo usermod -a -G dialout <username>

  • Il faut …

    Lire la suite Arduino : programmer facilement en C++ moderne

  • C++ et assembleur en ligne

    Il suffit d’aller sur le site de Compiler Explorer : http://gcc.godbolt.org/

    Ensuite faut jeter un œil sur la vidéo suivante et ses petites sœurs…

    C++ : Bonnes pratiques à mettre en œuvre d’urgence

    Comme d’autres pages du site, celle-ci va évoluer au cours du temps en fonction de ce que j’aurai lu ou vu. Il ne faut donc pas s’affoler s’il y a des sections vide pour l’instant.

    Introduction

    Je mets ici des liens que je trouve utiles et qui concernent les bonnes pratiques de développement en C++. L’idée est de garder sous la main des « références » dont il est bon de s’inspirer afin de produire du code qui soit « Expressif ». De mon point de vue, « Code Expressif » cela signifie du code qui est agréable à lire (si, …

    Lire la suite C++ : Bonnes pratiques à mettre en œuvre d’urgence

    clang-tidy : mes notes et mes remarques pour bien débuter

    Ne cherchez plus clang-modernize il est dorénavant inclus dans clang-tidy.

    Je suis sous Windows 10, dans une console classique ou une console Powershell. Pour une première invocation, on peut essayer :

    1 clang-tidy raspicam.cpp -checks=* — -std=c++11

    On peut aussi utiliser des expressions régulières pour nommer les fichiers

    clang-tidy test.[ch]pp -checks=* -- -std=c++11

    Pour voir la liste des vérifications faites

    1 clang-tidy raspicam.cpp -list-checks -checks=* — -std=c++11

    On voit alors (en date de Fev 2017) la liste suivante :

    1 2 3 4 5 6 7 8 9 10 11 12 13 …

    Lire la suite clang-tidy : mes notes et mes remarques pour bien débuter

    clang-format – Tous les éléments pour bien débuter

    Je suis sous Windows 10, dans une console classique ou une console Powershell. Pour une première invocation, on peut essayer :

    1 clang-format –style=llvm -dump-config

    Cela permet de lister les paramètres du style LLVM. Il y a d’autres styles « de base » possibles (Google, Chromium, Mozilla etc.). Ensuite on peut sauvegarder la configuration dans un fichier « .clang-format » (fichier caché) ou bien « _clang_format ». Cela permet de partir d’une base puis de la modifier par exemple. Voilà la ligne de commande à invoquer pour générer un fichier caché :

    1 clang-format –style=Mozilla -dump-config > .clang-format

    Enfin, …

    Lire la suite clang-format – Tous les éléments pour bien débuter

    Applications Universelles avec C++WinRT et un projet vide

    Pour comprendre de quoi il s’agit il est préférable d’avoir lu cette page.

    J’imagine ici que j’ai l’intention d’écrire un bout de code qui utilise C++WinRT mais sans interface graphique. Cela peut être le cas si je veux faire un test par exemple. Je souhaite pourtant utiliser un projet Visual Studio pour pouvoir gentiment travailler dans l’environnement de travail (debug par exemple). Que faire? Refaire ce que nous avions fait dans l’article précédent n’est pas entièrement satisfaisant. En effet, déshabiller un projet C++/CX & XAML laisse des ressources sur le disque (les images .png) que l’on utilisera jamais. En …

    Lire la suite Applications Universelles avec C++WinRT et un projet vide

    Le casse-tête Vietnamien : une solution brutale en C++

    Le casse-tête Vietnamien

    Je suis tombé dessus par hasard le weekend dernier. Dans le serpentin ci-dessous, le jeu consiste à remplir les cases vides à l’aide d’un chiffre entre 1 et 9 sans qu’il ne soit répété et de retrouver le résultat (66).

    Note :

    Je suppose dans la suite que les divisions sont des divisions entières.

    Après avoir grattouillé un peu de papier je me suis demandé comment coder ça en C++… Ce que vous allez voir ci-dessous n’est pas ce que l’on peut faire de plus « fin » dans la mesure où le code utilise la force brute mais bon… De …

    Lire la suite Le casse-tête Vietnamien : une solution brutale en C++

    Algorithme de Dijkstra en C++

    Algorithme de Dijkstra en C++

    Introduction

    Je suis toujours sur Codingame et pour l’un des challenges je cherchais un exemple simple d’implémentation de l’algorithme de Dijkstra en C++ sur lequel je pourrais expérimenter etc. Je n’ai pas trouvé ce que je cherchais car soit le code C++ n’utilisait pas la STL, soit le code était très long, soit il n’utilisait pas de priority_queue soit encore le code n’était pas prêt à l’emploi.

    Show me the code

    Bref, voilà le source avec lequel j’ai fait mes propres tests. Le code est complet, relativement court (moins de 80 lignes avec pas mal de commentaires) et autonome (on peut …

    Lire la suite Algorithme de Dijkstra en C++

    Accents et encodage des caractères dans les consoles

    L’autre jour, je sais plus trop pourquoi, j’ai été amené à m’intéresser aux histoires d’accents lors des affichages dans les consoles. Comme je suis toujours en train de lire et d’apprendre le C++11 j’ai essayé de voir comment cela se passait. Comme d’habitude, j’ai trouvé tout et n’importe quoi sur le web et les forums.

    Bon bref, histoire de se remettre les idées en place, voici deux articles à lire absolument :

  • http://www.joelonsoftware.com/articles/Unicode.html
  • http://www.utf8everywhere.org/
  • Ensuite sous Windows 7, en C++, on peut faire un test rapide avec le code suivant. Notez que je ne m’intéresse qu’aux accents et pas aux locales …

    Lire la suite Accents et encodage des caractères dans les consoles

    À propos des RValue References et du Move Semantics

    Je suis toujours en train de « ré-apprendre » le C++ et je fais des tests soit avec XCode (clang) sous Mac OS soit avec MSVC 2012 Express for Desktop lorsque je suis sous Windows 7. J’ai aussi installé récemment Code::Blocks 10.05 (gcc 4.4.1) mais bon, je l’utilise pas trop celui là. Ici je vais surtout faire des tests sous Windows et je vais essayer de transcrire ce que je crois avoir compris du Move Semantics  et des RValues References qui sont deux éléments nouveaux des spécifications de C++ 11.

    Ceci dit, attention… En effet, si vous connaissez déjà le sujet passez votre …

    Lire la suite À propos des RValue References et du Move Semantics