Construire une plaquette de développement (Pinguino – partie 4/4)

logo-pinguino4Previously on Pinguino …

Partie 1 : Présentation

Partie 2 : Hardware

Partie 3 : Software

> Partie 4 : Hello World

Maintenant que nous avons notre plaquette de développement Pinguino et tous les outils installés, il est temps de se lancer 

Disclaimer : (pour les personnes déjà à l’aise en programmation)

Vous vous êtes perdus ?? Je blague, fermez juste les yeux lorsque j’enfonce des portes ouvertes ou si je vais trop loin dans la vulgarisation !

Hello World, c’est quoi ?

[2] commitstrip.com, très bon blog bd !

Hello world (traduit littéralement en français par « bonjour le monde ») sont les mots traditionnellement écrits par un programme informatique simple dont le but est de faire la démonstration rapide d’un langage de programmation (par exemple à but pédagogique) ou le test d’un compilateur.

[…]

Dans plusieurs systèmes embarqués, le texte peut être envoyé sur une ou deux lignes d’un afficheur LCD (ou dans d’autres systèmes, une simple DEL peut se substituer à un hello world).

Source: [1] Hello World, Wikipedia .

Un commentaire sur la définition de Wikipedia avant de commencer. Je ne suis pas entièrement d’accord avec la deuxième partie. Allumer une LED (ou DEL) ne se substitue pas à un Hello World. Je dirais plutôt qu’allumer une LED est le Hello World du logiciel embarqué. Le logiciel embarqué est à la frontière de l’informatique et de l’électronique et cela n’a pas vraiment de sens d’afficher Hello World dans une console lorsque l’on fait de l’informatique embarqué. Et en général lorsqu’on débute un nouveau projet sur une cible que l’on ne connait pas, on commence toujours par allumer une LED ou piloter une sortie TOR. Cela permet de valider la chaîne complète, depuis le programme jusqu’au matériel.

Fin de la parenthèse

Compléter la plaquette Pinguino

Donc avant de commencer, il faut se procurer une LED et une résistance de 470 ohms. A brancher sur une sortie libre de la plaquette Pinguino.

Je choisis arbitrairement la PIN 11 du Pinguino (Figure 1) :

Figure 1 Hello World, PIN 11

Attention à ne pas confondre le label de la pin (PIN 11 sur la Figure 1) de la pin physique du composant qui est la pin 12. Ce détail a une importance par la suite.

Relier le Pinguino au port USB du PC puis lancer l’IDE Pinguino.

Premier programme

Cliquer sur l’icône New File ou (Ctrl + n). Un modèle de fichier (template) s’ouvre :

/*-----------------------------------------------------
Author:  --<>
Date: 20/Oct/2013
Description:

-----------------------------------------------------*/

void setup() {
// put your setup code here, to run once:

}

void loop() {
// put your main code here, to run repeatedly:

}

Le fichier commence par un entête placé entre les balises /* et */ communes à beaucoup de langages de programmation. Ceci constitue un commentaire. Le // est une variante. Le commentaire débute après la balise et se termine en fin de la ligne.

Après l’entête on trouve deux définitions de fonctions :

  • setup comme l’indique sont commentaire est lancée une fois au démarrage du logiciel ;
  • loop boucle indéfiniment, ce qui signifie qu’elle sera exécutée tant que la cible sera alimentée.

Le mot-clef void signifie littéralement « vide » et signifie que les deux fonctions ne retournent pas de résultat. Les parenthèses vides signifient que ces deux fonctions n’ont pas de paramètres. Les accolades constituent un bloc. Chacune des instructions placées entre les accolades seront exécutées les unes à la suite des autres lors de l’appel de la fonction.

Maintenant il s’agit de compléter les blancs car ce programme ne fait rien !

Heureusement, le langage Pinguino apporte une abstraction supplémentaire par rapport à une programmation en C ou en assembleur du composant, ce qui va ici nous simplifier la tâche. En contrepartie cela éloigne un peu plus le développeur de la réalité de la programmation sur cible.

Ainsi pour allumer notre LED, on repère l’étiquette (ou label) associé à la pin physique. Ici il s’agit de PIN 11. C’est le numéro qui nous intéresse donc 11. Ensuite il faut :

Configurer la pin 11 comme étant une sortie, à l’aide du mot-clef OUTPUT :

pinMode(11,OUTPUT);

Mettre un ‘1’ logique sur cette sortie, à l’aide du mot-clef HIGH. Le 1 logique revient à appliquer une tension Vpp _ soit 5V _ en sortie :

digitalWrite(11,HIGH);

Ces instructions n’ont pas besoin d’êtres exécutées en boucle, donc on les place dans la fonction setup.

Voici le programme complet :

/*-----------------------------------------------------
Author:  KB
Date: 20/Oct/2013
Description: Allumer le feu !

-----------------------------------------------------*/

void setup() {
// put your setup code here, to run once:
pinMode(11,OUTPUT);
digitalWrite(11,HIGH);
}

void loop() {
// put your main code here, to run repeatedly:

}

Remarque : le point virgule doit terminer chaque instruction à la manière de nombreux langages de programmation.

On va maintenant compiler le code dans l’IDE en utilisant l’icône dédiée.

La console affiche les résultats de compilations et les erreurs éventuellement rencontrées :

Board:    Pinguino 2550

Proc:    18f2550

File:    C:\PinguinoX.3\.temp\Newfile0.pde

compilation done

code size: 2596 / 24575 bytes (10% used)

0.625 seconds process time

Vérifier que la plaquette est correctement reliée au port USB, reseter le micro et uploader le programme compilé à l’aide de l’icône dédiée. Si le programme est correctement uploadé, la console affiche :

Pinguino found

16384 bytes free (16 KB)

Pinguino bootloader v2.12

Writing …

Newfile0.hex successfully uploaded

Sinon le message suivant apparaît :

Pinguino not found

Is your device connected and/or in bootloader mode ?

Les causes peuvent êtres diverses :

  • Bootloader absent ;
  • Pinguino mal raccordé au pc ;
  • Problème de driver windows (Pinguino, libusb) ;
  • Le Pinguino est sorti du mode bootloader, recommencer l’opération après un reset.

Le résultat (Figure 3) :

Figure 3 Hello World Pinguino 🙂

Pour aller plus loin

J’avais prévu d’en parler dans ce billet mais je me suis rendu compte que j’avais quelques trucs à dire en fait. Pour ne pas complexifier inutilement ce tutorial, qui s’adresse aux débutants, j’ai décidé de poursuivre dans un prochain billet. Il sera question de faire clignoter une LED, de faire un Hello World comme on le ferait sur un projet en C et de décrypter un petit peu la bibliothèque Pinguino.

Ainsi se termine cette série de 4 billets sur le développement d’une plaquette Pinguino.

Références :

[1] Hello World, Wikipedia ;

[2] commitstrip.com.

Publicités