TP 10

Initiation à Flowcode et aux algorigrammes

Mise en situation et objectifs du TP

Ce TP a pour but de découvrir le logiciel Flowcode permettant de programmer des microcontrôleurs. Le langage graphique utilisé dans Flowcode est l'algorigramme.

Ce TP est structuré en 3 parties :

PARTIE 1 : DECOUVERTE DE FLOWCODE A TRAVERS DES EXEMPLES

PARTIE 2 : ALGORITHME ET ALGORIGRAMME

PARTIE 3 : APPLICATION

IMPORTANT : à chaque fois que cela sera demandé vous noterez sur votre fiche mémo de Flowcode les différentes remarques constatées durant ce TP dans le but de les ré-utiliser ultérieurement. Le seul document qui vous restera à l'issue de ce TP est votre fiche mémo complétée.

Travail demandé

Lancez le logiciel Flowcode en cliquant sur son icône.

QUESTION : où se trouve l'icône de Flowcode dans le menu démarrer de Windows ?

La réponse se trouve sur la page 2 de la fiche mémo : à consulter

Créez un nouveau projet dans Flowcode en choisissant le microcontroleur PIC 16f88 dans la liste proposée.

Un microcontroleur est un circuit programmable, comportant les entrées et des sorties (organisées en port A et port B). Programmer un microcontroleur revient à définir les conditions d'activation des sorties, en fonction des entrées ou du temps. Dans flowcode la programmation est entièrement graphique et intuitive.

Agrandissez la fenêtre de Flowcode à tout l'écran. Agrandissez également la fenêtre du navigateur à tout l'écran. Désormais, pour passer d'une fenêtre à l'autre, utilisez le raccourcis clavier Alt-Tabulation. Voici où sont situées la touche Alt et la touche Tab (pour "tabulation") sur le clavier :

Plus que jamais un ordinateur s'utilise à 2 mains : une main sur la souris et l'autre pour actionner les raccourcis clavier.

Comment allumer une ou plusieurs LED ?

Ajoutez une barre de LED à votre projet Flowcode puis réalisez l'algorigramme suivant utilisant 4 blocs "Sortie" : chaque bloc "Sortie" écrit une valeur dans le port A sur lequel les LED sont connectées :

QUESTION : Comment atteindre et modifier les propriés d'un bloc ?

La réponse se trouve sur la page 1 de la fiche mémo : à consulter

Pour exécuter votre algorigramme pas à pas afin de bien observer le rôle de chaque bloc, cliquez plusieurs fois sur le bouton "Pas à pas détaillé" tout en observant l'évolution des LED à chaque étape.

Que se passe-t-il si on lance l'exécution du programme en cliquant sur le bouton "Exécuter" ?

Sachant que pour allumer la LED An (avec n compris entre 0 et 7) il faut donner au port A la valeur 2 puissance n, modifiez votre algorigramme pour afficher successivement les LED A4 à A7.

Vous constatez que chaque LED a pour numéro une puissance de 2 :

Le nombre en rouge ci-dessus (le résultat des puissances de 2) est appelé le POIDS de la LED

Par exemple pour allumer la LED A5 il faut mettre 32 dans le port A (32 = 2 puissance 5) comme le montre l'algorigramme suivant :

Et pour allumer les LED A4 et A1 simultanément il faut mettre 18 dans le port A (18 = 16 + 2), etc. :

Le résultat des puissances de 2 correspondant aux LED est appelé le POIDS de la LED.

A retenir : comme indiqué sur la page 1 de la fiche mémo :

Pour allumer une LED il faut mettre le poids de la LED dans le port connecté aux LED avec un bloc "Sortie".

Pour allumer plusieurs LED il faut mettre dans le port la somme de tous les poids.

Vous venez d'apprendre comment allumer des LED, mais l'exécution automatique du programme (par le bouton Exécuter) est trop rapide pour avoir le temps d'observer chaque étape. Nous allons voir maintenant comment insérer des temporisations dans l'algorigramme afin de ralentir son exécution.

Fermez votre projet sans l'enregistrer (Fichier + Fermer) puis créez un nouveau projet (Fichier + Nouveau) toujours basé sur le PIC 16f88.

Comment insérer des temporisation ?

Pour faire une temporisation dans le programme il faut insérer des blocs "Pause" dans l'algorigramme. Déplacez la souris sur les différents blocs proposé par Flowcode jusqu'à repérer le bloc "Pause" (le nom des blocs est donné dans une info-bulle).

Réalisez l'algorigramme suivant puis lancez son exécuton en utilisant le bouton "Exécuter" :

QUESTION : Comment modifier la valeur d'une temporisation ?

Cette fois le programme fait une pause de 1 seconde entre chaque bloc "Sortie", ce qui nous laisse le temps d'observer l'évolution des LED en mode automatique (bouton "Exécuter").

Modifiez votre algorigramme afin d'allumer successivement chacune des 8 LED A0 à A7 pendant une durée de 500 ms chacune.

Vous venez d'apprendre comment réaliser une temporisation dans votre programme. Mais vous pouvez constater que le cycle n'est exécuter qu'une seule fois. Pour relancer le cycle il faut relancer l'exécution du programme.

Comment répéter plusieurs fois un même cycle de fonctionnement ?

Pour répéter plusieurs fois un lot d'instructions, il faut placer les différents blocs à répéter dans une boucle. Ajoutez une barre de LED connectée sur le port A dans votre projet, repérez le bloc nommé "Boucle", réalisez l'algorigramme suivant puis lancez son exécution en cliquant sur le bouton "Exécuter".

Arrêtez la simulation par le bouton "Stop" puis relancez-la en mode pas-à-pas pour observer étape par étape l'exécution de plusieurs cycles et le fonctionnement de la boucle.

Remarque à ajouter sur la page 1 de la fiche mémo de Flowcode afin de ne plus se poser la question :

QUESTION : comment répéter un programme en continu ?

REPONSE : il faut l'insérer dans une BOUCLE "Tant que 1"

Vous savez désormais :

comment allumer des LED

comment créer des temporisations

comment utiliser une boucle continue afin que le programme ne s'arrête jamais

Vous allez découvrir dans les paragraphes suivants comment utiliser des interrupteurs et prendre en compte leur état dans votre algorigramme.

Comment lire l'état des interrupteurs actionnés par l'utilisateur ?

Le but de tout système automatique est d'actionner ses sorties (en allumant des LED par exemple) en fonction soit d'un cycle automatique (décrit par une série de temporiations comme précédemment) soit en fonction de l'état d'interrupteurs actionnés par l'utilisateur. Vous allez maintenant apprendre comment lire l'état des interrupteurs.

Ajoutez à votre projet une barre de LED verte connectée au port A et une barre de bouton poussoir horizontale connectée au port B :

Remarques :

Les propriétés permettent par exemple de modifier la couleur des LED, le type des interrupteurs (bistable ou monostable), ou encore de choisir l'orientation (vertical ou horizontal) des composants

La connexion permet de connecter les LED ou les interrupteurs au port A ou au port B du microcontrôleur

Si à la place de A7 à A0 (ou B7 à B0) il y a écrit NC sur les LED ou les interrupteurs, cliquer sur "Connexions ..." puis choisissez le port dans "Connecter au port :"

NC signifie Non Connecté, c'est-à-dire ni connecté au port A ni connecté au port B du microcontrôleur

Pour supprimer un composant du projet il ne faut pas cliquer sur le bouton en forme de croix : il faut cliquer sur Supprimer dans le menu "Supprimer/Connexions/Propriétés"

Remarque à ajouter sur la page 1 de la fiche mémo de Flowcode afin de ne plus se poser la question :

QUESTION : comment modifier les propriétés ou la connexion des LED ou des interrupteurs ?

REPONSE : en cliquant sur son bouton "Supprimer/Connexion/Propriétés"

Remarque à ajouter sur la page 1 de la fiche mémo de Flowcode afin de ne plus se poser la question :

QUESTION : que faire s'il y a écrit NC sur des LED ou des interrupteurs ?

REPONSE : NC signifie Non Connecté. Aller dans Connexions puis choisir un port (A ou B)

QUESTION : comment supprimer des LED ou des interrupteurs du projet ?

La réponse se trouve sur la page 2 de la fiche mémo : à consulter

Sur la page 2 de la fiche mémo de Flowcode surlignez en fluo le terme suivant dans la 6ème réponse :

Ne pas cliquer sur le bouton croix !

Réalisez l'algorigramme suivant qui mémorise l'état du port B dans une variable N (variable de type octet à créer), puis qui écrit la valeur de N dans le port A. Lancez son exécution en cliquant sur "Exécuter" puis testez-le en cliquant sur les boutons poussoirs B0 à B7 :

QUESTION : comment créer une nouvelle variable ?

La réponse se trouve sur la page 2 de la fiche mémo : à consulter

Modifiez le type d'interrupteurs en les rendant bistables (type Bascule dans les Propriétés des interrupteus), puis testez à nouveau votre algorigramme (en cliquant sur "Exécuter") en actionnant cette fois plusieurs boutons simultanément :

Afin d'observer l'évolution de la variable N testez maintenant votre algorigramme en mode pas-à-pas (en cliquant sur "Pas-à-pas détaillé").

Remarque à ajouter sur la page 2 de la fiche mémo de Flowcode afin de ne plus se poser la question :

QUESTION : comment observer la valeur des variables pendant l'exécution du programme ?

REPONSE : les variables ne sont affichées dans la fenêtre "Variables" que pendant l'exécution en mode pas-à-pas

Comment tester la valeur d'une variable et orienter l'exécution vers une branche ou une autre ?

Pour tester l'état d'une variable il faut utiliser un bloc "Décision". En fonction du résultat du test, le bloc décision orientera la suite de l'algorigramme vers une direction parmi 2. Dans un bloc "Décision" le test est toujours sous forme d'une question dont la réponse est soit OUI soit NON.

QUESTION : comment tester la valeur d'une variable ?

La réponse se trouve sur la page 1 de la fiche mémo : à consulter

En modifiant votre projet réalisez l'algorigramme suivant qui allume les LED si la valeur de N renvoyée par les interrupteurs est supérieure à 21, mais qui éteind les LED si N<21 :

Remarque sur les tests :

Les tests sont appliqués sur deux valeurs numériques dans le but de détecter une égalité, une différence, ou encore dans le but d'effectuer une comparaison (supérieur ou inférieur à). En fonction du résultat du test (réponse OUI ou réponse NON à la question posée), l'algorigramme sera orienté vers une des deux branches possibles (branches notées Oui et Non sur l'algorigramme). Voici un résumé des différents tests utilisables dans un bloc "Décision" (en forme de losange) sous Flowcode :

Condition à tester | Syntaxe dans un bloc Décision

A est-il égal à B ?

A=B

A est-il différent de B ?

A<>B

A est-il strictement supérieur à B ?

A>B

A est-il strictement inférieur à B ?

A<B

A est-il supérieur ou égal à B ?

A>=B

A est-il inférieur ou égal à B ?

A<=B

Remarque : il est parfaitement possible d'utiliser plusieurs blocs décision à la suite dans le même algorigramme. Par exemple l'algorigramme suivant teste un à un chacun des interrupteurs connectés sur le port B, et allume certaines LED du port A en fonction de l'interrupteur qui est fermé :

En vous inspirant de la remarque précédente, validez maintenant une solution pour la problématique suivante en utilisant plusieurs blocs "Décision" :

Configurez les interrupteurs en interrupteurs monostables (c'est-à-dire en "bouton poussoir") afin qu'un seul interrupteur ne soit fermé à la fois. Puis en utilisant plusieurs blocs "Décision" dans votre algorigramme, proposez puis validez une solution répondant à la problématique suivante :

si les 8 boutons poussoirs sont tous relâchés alors les 8 LED sont allumés
si le bouton poussoir Bn est enfoncé alors la LED An est la seule éteinte (les 7 autres sont allumés).

Il vous est demandé ici de :

réaliser un algorigramme dont la structure globale ressemble à l'algorigramme précédent, c'est-à-dire contenant plusieurs blocs décision imbriqués

déterminer le nombre de blocs décision à utiliser

déterminer la valeur à mettre dans le port A pour allumer dans chaque cas les LED corespondant à la problématique

Comment réaliser des calculs simples sur les variable ?

Il est souvent utile de réaliser de petits calculs sur des variables, comme par exemple N=N+1, N=2*a+3, etc. Dans Flowcode, c'est avec un bloc "Calcul" qu'on pourra affecter à une variable le résultat d'une opération. Réalisez puis testez l'algorigramme suivant utilisant un bloc "Calcul" :

Avez-vous reconnu la problématique à laquelle cet algorigramme simple répond ?

A retenir : l'emploi d'un bloc "Calcul" contenant la bonne formule mathématique peut souvent remplacer un algorigramme complexe utilisant un grand nombre de blocs "Décision".

Remarque sur les blocs calcul :

Le bloc calcul permet d'effectuer des opérations simple sur les variables. La limite des blocs calculs vient du fait que les variables créées dans Flowcode ne peuvent contenir que des nombres entiers : Flowcode ne connait pas les nombres réels. Voici un résumé des différents opérateurs utilisables dans un bloc "Calcul" sous Flowcode :

Exemple d'opération à réaliser | Syntaxe dans un bloc Calcul

A prend la valeur 14

A=14

A prend la valeur de 3 fois B

A=3*B

A prend la valeur de la division entière de B par 2

A=B/2

A est incrémenté d'une unité

A=A+1

A prend pour valeur la différence entre B et C

A=B-C

Mettre le résultat de 7*B-2 dans la variable A

A=7*B-2

Remarque à ajouter sur la page 1 de la fiche mémo de Flowcode afin de ne plus se poser la question :

QUESTION : comment affecter à une variable le résultat d'un calcul ?

REPONSE : en utilisant un bloc "Calcul" sachant que Flowcode ne gère que des nombres entiers

PARTIE 2 : ALGORITHME ET ALGORIGRAMME

Qu'est-ce qu'un algorithme ? c’est un ensemble de règles opératoires rigoureuses, ordonnant à un processeur d’exécuter dans un ordre déterminé un nombre fini d’opérations élémentaires ; il oblige à une programmation structurée.

Qu'est-ce qu'un algorigramme ? c’est une représentation graphique de l’algorithme. Pour le construire, on utilise des symboles normalisés. La représentation graphique des programmes réalisés dans le logiciel Flowcode sont des algorigrammes :

Exemple d'algorithme

Parmi les algorithmes connus que vous utilisez il y a la résolution de l'équation du second degrés a.x²+x.b+c=0

Le problème : trouver les deux racines réelles x1 et x2 de l'équation a.x²+x.b+c=0

L'algorithme à suivre est alors le suivant :

1 - Calculer le discriminent delta = b²-4.a.c

2 - Si delta > 0 alors les racines réelles sont x1=(-b-racine(delta))/(2.a) et x2=(-b+racine(delta))/(2.a)

2 - Si delta = 0 alors la racine double est x=-b/(2.a)

3 - Si delta < 0 alors il n'y a pas de racines réelles

Ceci est un algorithme
Remarquez que cet algorithme a été écrit comme une série de phrases claires, compréhensibles par tous, et sans utiliser de langage de programmation.

Et voici l'algorigramme correspondant à l'algorithme de résolution de l'équation du second degrés :

Ceci est un algorigramme

Remarquez qu'un algorigramme possède toujours un début et une fin. De plus il utilise des symboles graphiques (opérations, tests, etc.) clairs bien précis ayant chacun une signification. Un algorigramme s'adresse à tout le monde, y compris ce qui n'en ont jamais vu. Toute personne voyant l'algorigramme ci-dessus comprendra sa signification immédiatement et sans avoir besoin d'apprentissage. Ah ! Si le prof de math nous avait donné l'algorigramme de l'équation du second degrés plutôt que de nous l'expliquer oralement on aurait tous compris du premier coup !

Les différents symboles présents dans un algorigramme

Résumé des différents symboles utilisés dans un algorigramme

Voici le symbole dans Flowcode de chacun des éléments composant un algorigramme :

Symbole d'une Entrée

Symbole d'une Sortie

Symbole d'une Temporisation

Symbole d'un Test

Symbole d'une Opération

Symbole d'une Macro

Symbole d'une Boucle

A retenir : un algorigramme permet de représenter simplement sous forme graphique un algorithme qui peut être complexe.

La lecture de l'algorigramme ne necessite aucun apprentissage.

PARTIE 3 : APPLICATION

Réalisez maintenant dans Flowcode chacune des 10 activités suivantes, en proposant et en validant (c'est-à-dire en testant par vous même et en modifiant en cas de dysfonctionnement) un algorigramme fonctionnel pour chaque cas.

Activité 1

On désire réaliser un feu tricolore de carrefour pour réguler la circulation des voitures.

Le carrefour est composé de 2 voies, chaque voie ayant un feu tricolore.

Votre programme devra donc commander 6 LED comme sur la copie d'écran suivante :

- les 2 LED rouges seront connectées aux bits A1 et A0 du port A

- les 2 LED jaunes (feux oranges) seront connectées aux bits A3 et A2 du port A

- les 2 LED vertes seront connectées aux bits A5 et A4 du port A

En cliquant sur les propriétés et la connexion des LED vous pouvez choisir aussi bien leur couleur, leur nombre, ainsi que les bits du port A sur lesquels elles sont connectées :

Le séquencement des feux tricolores doit être le suivant (les temps sont volontairement diminué par rapport à des feux tricolores réels afin d'accélérer la simulation) :

Etape

Feu 1

Feu 2

Durée de l'étape

A1
rouge

A3
orange

A5
vert

A0
rouge

A2
orange

A4
vert

Etape 1

1

0

0

1

0

0

300 ms

Etape 2

0

0

1

1

0

0

500 ms

Etape 3

0

1

0

1

0

0

200 ms

Etape 4

1

0

0

1

0

0

300 ms

Etape 5

1

0

0

0

0

1

500 ms

Etape 6

1

0

0

0

1

0

200 ms

Etape 7

Retour à l'étape 1

Rappel du poids de chacune des 8 LED A0 à A7 :

Proposer puis valider dans Flowcode un programme réalisant ce séquencement. "Valider" une solution signifie tester toutes les possibilités et faire la preuve que votre solution fonctionne correctement.

Activité 2

Fermez tous les fichiers ouverts dans Flowcode (menu Fichier + Fermer) en enregistrant l'activité précédente dans un fichier portant son nom.

Créez un nouveau fichier (menu Fichier + Nouveau) dans Flowcode (basé sur le microcontrôleur 16F88). Ajoutez-y une barre de LED connectée au port A et des boutons poussoirs connectés au port B :

Proposez un algorigramme réalisant l'algorithme suivant. Testez-le et modifiez-le jusqu'à obtenir le fonctionnement demandé :

REPETER
SI   bouton B0 appuyé ALORS
Allumer LED A0
SINON
Allumer LED A1
FIN-SI
TOUJOURS

Activité 3

Fermez tous les fichiers ouverts dans Flowcode (menu Fichier + Fermer) en enregistrant l'activité précédente dans un fichier portant son nom puis créez un nouveau projet (menu Fichier + Nouveau) dans Flowcode (basé sur le microcontrôleur 16F88).

Dans cette activité vous allez faire clignoter la LED A0 à différentes fréquences.

Ajoutez à votre projet une barre de LED connectée au port A et des boutons poussoirs connectés au port B.

Proposez un algorigramme réalisant l'algorithme suivant. Testez-le et modifiez-le jusqu'à obtenir le fonctionnement demandé :

REPETER
SI   bouton B0 appuyé ALORS
Faire clignoter LED A0 avec une fréquence de 8 Hz (8 fois par seconde)
SINON
Faire clignoter LED A0 avec une fréquence de 2 Hz (2 fois par seconde)
FIN-SI
TOUJOURS

Remarque : pour faire clignoter une LED il faut alterner un allumage et une extection de la LED dans une boucle. Le temps d'allumage et le temps d'extinction de la LED étant donné par 2 temporisations distinctes. L'algorigramme suivant par exemple allume la LED A0 pendant 125 ms puis l'éteind pendant 125 ms :

Si cet algorigramme est placé dans une boucle, alors la LED clignote. Comme sa période est de 250 ms, elle clignotera 4 fois par seconde : on dit que sa fréquence est de 4 Hz, ce qui signifie "4 fois par seconde".

Activité 4

Fermez tous les fichiers ouverts dans Flowcode (menu Fichier + Fermer) en enregistrant l'activité précédente dans un fichier portant son nom puis créez un nouveau projet (menu Fichier + Nouveau) dans Flowcode (basé sur le microcontrôleur 16F88).

Dans cette activité vous allez réaliser un chenillard bi-directionnel.

Ajoutez une barre de LED connectée au port A et des boutons poussoirs connectés au port B.

Proposez un algorigramme réalisant l'algorithme suivant dans lequel chaque LED doit rester allumer pendant 200 ms. A tout moment, une LED et une seule doit être allumée, les 7 autres doivent être éteintes. Testez-le et modifiez-le jusqu'à obtenir le fonctionnement demandé :

REPETER
SI   bouton B0 appuyé ALORS
Allumer les LED les unes après les autres dans l'ordre A0 à A7
SINON
Allumer les LED les unes après les autres dans l'ordre A7 à A0
FIN-SI
TOUJOURS

Rappel du poids de chacune des 8 LED A0 à A7 :

Activité 5

Fermez tous les fichiers ouverts dans Flowcode (menu Fichier + Fermer) en enregistrant l'activité précédente dans un fichier portant son nom puis créez un nouveau projet (menu Fichier + Nouveau) dans Flowcode (basé sur le microcontrôleur 16F88).

Dans cette activité vous allez réaliser une fonction logique OU.

Ajoutez une barre de LED connectée au port A et des boutons poussoirs connectés au port B.

Proposez un algorigramme réalisant l'algorithme suivant dans lequel la LED A0 doit s'allumer en fonction d'une condition logique OU sur les boutons B0 et B1. Testez-le et modifiez-le jusqu'à obtenir le fonctionnement demandé :

REPETER
SI B0 appuyé OU B1 appuyé ALORS

Allumer LED A0

SINON

Eteindre LED A0

FIN SI

TOUJOURS

Activité 6

Fermez tous les fichiers ouverts dans Flowcode (menu Fichier + Fermer) en enregistrant l'activité précédente dans un fichier portant son nom puis créez un nouveau projet (menu Fichier + Nouveau) dans Flowcode (basé sur le microcontrôleur 16F88).

Dans cette activité vous allez réaliser une fonction logique ET.

Ajoutez une barre de LED connectée au port A et des boutons poussoirs connectés au port B.

Proposez un algorigramme réalisant l'algorithme suivant dans lequel la LED A0 doit s'allumer en fonction d'une condition logique ET sur les boutons B0 et B1. Testez-le et modifiez-le jusqu'à obtenir le fonctionnement demandé :

REPETER
SI B0 appuyé ET B1 appuyé ALORS

Allumer LED A0

SINON

Eteindre LED A0

FIN SI

TOUJOURS

Activité 7

Fermez tous les fichiers ouverts dans Flowcode (menu Fichier + Fermer) en enregistrant l'activité précédente dans un fichier portant son nom puis créez un nouveau projet (menu Fichier + Nouveau) dans Flowcode (basé sur le microcontrôleur 16F88).

Dans cette activité vous allez réaliser une fonction logique OU-Exclusif.

Ajoutez une barre de LED connectée au port A et des boutons poussoirs connectés au port B.

Proposez un algorigramme réalisant l'algorithme suivant dans lequel la LED A0 doit s'allumer en fonction d'une condition logique OU-Exclusif sur les boutons B0 et B1. Testez-le et modifiez-le jusqu'à obtenir le fonctionnement demandé :

REPETER
SI un et un seul bouton est appuyé entre B0 et B1 ALORS

Allumer LED A0

SINON

Eteindre LED A0

FIN SI

TOUJOURS

Activité 8

Dans cette activité vous allez découvrir l'utilisation des afficheurs et des macros dans Flowcode. Les macros sont des sous-programmes permettant de réaliser des actions complexes comme par exemple l'affichage d'une chaîne de caractère sur l'afficheur LCD.

Fermez tous les fichiers ouverts dans Flowcode. Créez un nouveau fichier dans Flowcode (basé sur le microcontrôleur 16F88). Ajoutez-y un afficheur LCD puis réalisez l'algorigramme suivant utilisant seulement 2 bloc "Routine de composant" :

Le premier bloc appelle la macro Init liée à l'afficheur LCD

Le second bloc appelle la macro Ecrit Chaîne liée à l'afficheur LCD

ATTENTION : les macros propres à un composant (comme l'afficheur LCD) sont accessibles à partir d'un bloc Routine de composant dans l'algorigramme (et non un bloc Macro)

Testez l'algorigramme précédent affichent "Vive Flowcode !" contenant seulement 2 bloc Routine de composant en fixe sur l'afficher LCD.

Voici le rôle des principale macros permettant d'utiliser l'afficheur LCD :

Nom de la macro
dans Flowcode

Rôle de la macro

Init

initialise l'afficheur LCD avant de l'utiliser

Efface

Efface l'afficheur LCD

Curseur

Positionne le curseur sur une case précise (ligne et colonne) avant l'affichage du message

Ecrit_Chaîne

Affiche une chaîne de caractère sur l'afficheiur LCD

Ecrit_Num

Affiche la valeur numérique d'une variable sur l'afficheur LCD

Remarque : comme indiqué sur la page 2 de la fiche mémo, dans Flowcode les chaînes de caractères sont délimitée entre deux caractères double quote.

exemple : "Ceci est une chaîne de caractères"

Testez l'exemple suivant qui montre comment faire défiler du texte sur l'afficheur LCD en utilisant la macro Curseur liée à l'afficheur (la variable N qui est à créer est de type OCTET) :

En vous inspirant de l'exemple précédent validez maintenant une solution pour la problématique suivante en utilisant un afficheur LCD et ses différentes macros :

Validez une solution permettant de faire défiler le message "Vive le Génie Electrique !" de droite à gauche sur la première ligne de l'afficheur LCD.

Une fois fonctionnel, complétez votre algorigramme afin d'afficher (en plus du message défilant qui reste toujours sur la première ligne) votre nom en fixe sur la seconde ligne de l'afficheur.

Activité 9

Fermez tous les fichiers ouverts dans Flowcode. Créez un nouveau fichier dans Flowcode (basé sur le microcontrôleur 16F88). Ajoutez-y un afficheur 7 segments (composant LED7Seg1) et des boutons poussoirs connectés au port A.

En utilisant les macros de l'afficheur 7 segments, essayez d'afficher des chiffres sur l'afficheur 7 segments.

Validez ensuite un algorigramme réalisant l'algorithme suivant. Testez-le et modifiez-le jusqu'à obtenir le fonctionnement demandé :

REPETER
SI   bouton A7 appuyé ALORS
L'afficheur compte de 0 à 9 avec une temporisation de 500 ms
SINON
L'afficheur décompte de 9 à 0 avec une temporisation de 500 ms
FIN-SI
TOUJOURS

Activité 10

Fermez tous les fichiers ouverts dans Flowcode. Créez un nouveau fichier dans Flowcode (basé sur le microcontrôleur 16F88). Ajoutez-y un quadruple afficheur 7 segments (composant LED7Seg4).

La syntaxe de la macro MontreChiffre associée à l'afficheur 7 segments LED7Seg4 est la suivante : chiffre,valeur, point décimal

chiffre : il vaut 0, 1, 2 ou 3 selon que l'on veut allumer le chiffre de poids faible, le chiffre de rang 2, de rang 3, ou le chiffre de poids fort.

valeur : il s'agit de la valeur à afficher (de 0 à 9)

point décimal : il vaut 0 ou 1 et permet d'afficher ou non la "virgule" à droite du chiffre sélectionné sur l'afficheur.

Exemples :

Pour afficher 4 sur le poids faible (à droite) sans point décimal on entrera 0,4,0 dans la macro MontreChiffre

Pour afficher 6 sur le poids fort (à gauche) avec un point décimal on entrera 3,6,1 dans la macro MontreChiffre

En utilisant la macro MontreChiffre de l'afficheur 7 segments, réalisez un algorigramme réalisant l'algorithme suivant. Testez-le et modifiez-le jusqu'à obtenir le fonctionnement demandé :

REPETER

L'afficheur compte de 0 à 9 avec une temporisation de 500 ms puis recommence

TOUJOURS

Modifier votre algorigramme afin qu'il corresponde maintenant à l'algorithme suivant. Testez-le et modifiez-le jusqu'à obtenir le fonctionnement demandé :

REPETER

L'afficheur compte de 0 à 20 avec une temporisation de 500 ms puis recommence

TOUJOURS

Problème : la macro MontreChiffre ne peut afficher qu'un seul chiffre à la fois sur l'afficheur. Comment afficher un nombre (composé de plusieurs chiffres) dans ces conditions ? Par exemple comment afficher le nombre 435 composé de trois chiffres ?

Solution : la solution consiste à afficher "très vite" chacun des chiffres pour donner l'illusion que tous les chiffres sont affichés en même temps. Cette technique s'appelle le multiplexage.

Exemple : l'algorigramme suivant affiche un nombre sur 2 chiffres par multiplexage. Dans cet algorigramme :

du point de vue du compteur les unités sont parfaitement distinctes des dizaines

la variable u représente les unités

la variable d représente les dizaines

le premier bloc Routine de composant affiche les unités sur le chiffre de rang 0 de l'afficheur

le second bloc Routine de composant affiche les dizaines sur le chiffre de rang 1 de l'afficheur

il n'y a aucune temporisation dans cet algorigramme : seule la Boucle 30 fois permet de ralentir le compteur

la Boucle 30 fois actualise en permanence l'afficheur pour donner l'illusion qu'il reste fixe, et ce que les variables u et d aient changées de valeur ou pas

Affichage multiplexé

Remarque : il arrive parfois que FlowCode considère le clavier comme un clavier QWERTY et non AZERTY, alors que pour Windows le clavier est bien configuré en AZERTY.

Dans ce cas, il est impossible d'écrire des caractère accentués (ce qui n'est pas grave), et les caractères spéciaux (tel que * - < > par exemple) sont disponibles en repérant l'emplacement de leur touche sur l'image suivante qui montre à la fois la disposition d'un clavier AZERTY et d'un clavier QWERTY :

Dans le cas où vous ne disposez pas de l'image d'un clavier QWERTY (le jour du bac par exemple ...) vous pouvez taper vos expressions arithmétiques et logiques dans le bloc note de Windows puis les transférer sous FlowCode par un simple copier/coller.

Enfin, un simple redémarrage de FlowCode peut résoudre le problème et le faire rebasculer en clavier AZERTY.

Remarque à ajouter sur la page 2 de la fiche mémo de Flowcode si vous avez rencontré ce problème :

QUESTION : que faire si FlowCode considère le clavier comme un QWERTY ?

REPONSE : il faut fermer Flowcode puis le relancer, ou bien taper les équations dans le bloc note de Windows

Retrouvez d'autres TP sur le site ressource

www.gecif.net