8

Click here to load reader

I. Objectif - stirling.vije.netstirling.vije.net/documentslies/act-flowcode2.pdf · 2AD Activité FlowCode Activité Flowcode.doc Page 3 / 8 2. Activité nº2 : Nous allons créer

Embed Size (px)

Citation preview

Page 1: I. Objectif - stirling.vije.netstirling.vije.net/documentslies/act-flowcode2.pdf · 2AD Activité FlowCode Activité Flowcode.doc Page 3 / 8 2. Activité nº2 : Nous allons créer

2AD

Activité FlowCode

Activité Flowcode.doc Page 1 / 8

I. Objectif On souhaite Programmer un MicroContrôleur 16F88 en Vélocimètre. Ce programme est un peu complexe. Il est nécessaire de clarifier certaines astuces de programmation :

• Etude de la Gestion d’un Afficheur LCD • Etude de la Boucle While. • Les sous-programmes. • Test de la présence du Capteur : Rémanence. • Les Interruptions (facultatif)

II. Gestion de l’afficheur 1. Les Routines de Composants :

L’afficheur LCD est un écran qui contient 2 lignes de 16 caractères. Son contrôle est si complexe qu’il contient lui-même un microcontrôleur intégré.

Pour afficher un « a », il faut mettre la patte B5 à 1, puis lui envoyer la première partie du code de la lettre « a » : « 0110 » sur les pattes B0, B1, B2 et B3. Enfin la seconde partie du code : « 0001 » sur ces mêmes pattes… C’est bien compliqué ! C’est pourquoi FlowCode nous propose des Fonctions Préparées pour gérer l’Afficheur :

Effectuer dans

l’ordre :

2/ Faire glisser cet icône « routine composant dans votre organigram-me

1/ Faire apparaître un LCD

3/ Double sur l’Appel de Routine

4/ Sélectionner le LCD puis la fonction souhaitée.

Exemple : PrintString. Préciser le paramètre à afficher : "a" ou "bonjour" et valider.

Page 2: I. Objectif - stirling.vije.netstirling.vije.net/documentslies/act-flowcode2.pdf · 2AD Activité FlowCode Activité Flowcode.doc Page 3 / 8 2. Activité nº2 : Nous allons créer

2AD

Activité FlowCode

Activité Flowcode.doc Page 2 / 8

2. Activité nº1 :

• Créer la routine « Start ». Elle permet de préparer l’afficheur pour fonctionner.

• Créer la routine « Cursor » avec comme paramètres : 0,0 • Créer la routine « PrintString » pour afficher des caractères.

Mettez comme paramètre "Bonjour" avec les guillemets. • Simuler. • Changer le paramètre de la routine « Cursor » avec 1,0 puis 2,0 puis 2,1. • Simuler à chaque fois.

1. A quoi sert le Premier Chiffre ? ........................................................................ 2. A quoi sert le Deuxième Chiffre ? ........................................................................

III. Les Boucles 1. Principe :

La boucle dans un programme est un morceau de programme qui se répète jusqu’à ce que la condition imposée soit fausse. Cette boucle s’appelle boucle « While » (= Tant que).

On place cette boucle dans l’organigramme grâce à l’icône : Avec un double clic, on accède aux Propriétés : Le Nom de la Boucle, la Condition qui doit être vrai pour exécuter la boucle. Ce test peut être fait au Début ou à la Fin de la boucle.

L’option Compteur permet d’avoir une boucle qui se répète plusieurs fois.

Page 3: I. Objectif - stirling.vije.netstirling.vije.net/documentslies/act-flowcode2.pdf · 2AD Activité FlowCode Activité Flowcode.doc Page 3 / 8 2. Activité nº2 : Nous allons créer

2AD

Activité FlowCode

Activité Flowcode.doc Page 3 / 8

2. Activité nº2 : Nous allons créer un chronomètre de 0 à 1000 :

• D’abord, créer la routine « Start » pour l’afficheur • Créer une case « Calcul » pour mettre T = 0. On doit

définir la variable T comme un octet. • Créer une boucle tant que T < 1000. • Dans cette boucle, afficher T puis une case « Calcul » pour

augmenter T de 1. Enfin ajouter une pause de 1 seconde. • Simuler.

Comment s’affichent les nombres sur le LCD ? …………………………………………………………………………………

• Ajouter une Routine « Cursor » pour que le nombre se remette toujours au début. • Changer la pause de 1 seconde en 50 millisecondes.

Le chronomètre fonctionne correctement ? ………………………

• Remplacer la routine « Cursor » par une routine « Clear » pour effacer l’écran. • Simuler.

Quelle est la valeur maximale atteinte par le chronomètre ? ……………

• Double cliquer sur un calcul. Cliquer sur « variable ». Renommer la variable T et choisir l’option « entier ».

• Simuler. Quelle est la valeur finale lorsque le programme a terminé ? ....................... Quelle doit être la condition si je veux que le 1000 s’affiche à la fin ?......................................

Page 4: I. Objectif - stirling.vije.netstirling.vije.net/documentslies/act-flowcode2.pdf · 2AD Activité FlowCode Activité Flowcode.doc Page 3 / 8 2. Activité nº2 : Nous allons créer

2AD

Activité FlowCode

Activité Flowcode.doc Page 4 / 8

IV. Les Sous-programmes 1. Principe :

Pour rendre plus lisible un programme, on peut lui dire d’appeler des sous-programmes. On peut les appeler plusieurs fois. Quand un sous-programme est fini, on revient au programme principal à l’endroit où on l’avait laissé.

Un Sous-programme est aussi appelé MACRO Remarque : Les Routines de composants sont des sous-programmes préparés par FlowCode et

que l’on ne peut pas modifier.

2. Activité nº3 :

• Créer une Nouvelle Macro, et l’appeler : Afficher_Resultat.

• Sélectionner Macro Afficher, puis réduire les fenêtres pour voir vos 2 programmes (principal et Afficher_Resultat)

• Sélectionner tout ce qui est dans la Boucle et Couper (control X) et placer dans Afficher_Resultat (control V)

• Maintenant, dans le programme Principal,

faire glisser l’icône macro dans la boucle. • Dans propriétés, sélectionner la Macro qu’il

doit appeler. • Simuler

Page 5: I. Objectif - stirling.vije.netstirling.vije.net/documentslies/act-flowcode2.pdf · 2AD Activité FlowCode Activité Flowcode.doc Page 3 / 8 2. Activité nº2 : Nous allons créer

2AD

Activité FlowCode

Activité Flowcode.doc Page 5 / 8

V. Test d’une Entrée 1. Principe :

On souhaite que le microcontrôleur détecte le Passage d’un Capteur. On va donc relier ce capteur à une Entrée, par exemple : sur la patte A1.

Quand le capteur n’est pas Présent, il donne 0 Volt. Cette valeur est traduite par un 0 Logique. Quand le capteur est Présent, il donne 5 Volts. Cette valeur est traduite par un 1 Logique. La détection du capteur se fait en 2 Etapes :

1. Le microcontrôleur LIT les valeurs Logiques de l’entrée et la place dans une Variable. C’est la fonction « Input »

2. Ensuite on étudie la Variable, et en fonction de sa valeur, on choisit différentes options.

2. Activité nº4 : On souhaite afficher les

impulsions d’un interrupteur branché sur A1.

• Placer un LCD et un bouton connecté sur A1. • Créer le « Start » pour l’afficheur. • Créer « Calcul » avec Total = 0. • Créer une boucle infinie avec un 1. • Créer « Input » vers la Variable Test, en

précisant bit unique A1. • Vérifier si Test = 1. • Si c’est oui : Augmenter Total de 1, placer le

curseur en 0,0 et Afficher le nombre Total • Simuler en appuyant sur le bouton.

Le comptage est-il correct ? Que se passe-t-il ? ……………………………………………………………………………………………………… …………………………………………………………………………………………………………………………………………………………………………………

Page 6: I. Objectif - stirling.vije.netstirling.vije.net/documentslies/act-flowcode2.pdf · 2AD Activité FlowCode Activité Flowcode.doc Page 3 / 8 2. Activité nº2 : Nous allons créer

2AD

Activité FlowCode

Activité Flowcode.doc Page 6 / 8

3. Conclusion : Le programme exécute la boucle très vite. Donc si le capteur passe

lentement, le programme le détecte plusieurs fois.

Pour éviter ce problème, il existe plusieurs solutions :

1. Quand le capteur est détecté, on fait une pause pour ne pas le détecter 2 fois. Mais il faut donc connaître le temps de passage du capteur.

2. Faire d’abord un test qui vérifie que le capteur n’est pas présent. C'est-à-dire « input » puis « test = 0 ? ». Si Test vaut 0, on teste ensuite si le capteur est présent. C'est-à-dire « input » puis « Test =1 ? » Inconvénient : La grande boucle ne va pas s’exécuter de manière régulière.

3. Créer une autre variable appelée Autorisation. Faire « input » dans test.

Si Test = 0 alors Autorisation = 1. Si Test = 1 alors 2 possibilités : • Si Autorisation = 1, augmenter le Total et

remettre Autorisation = 0. • Si Autorisation = 0 ne rien faire.

Cette dernière solution est plus compliquée mais elle a l’avantage

d’exécuter la grande boucle avec le même Rythme ≈ 1 ms. Si je l’exécute 1000 fois, j’aurai testé le capteur pendant 1 seconde.

Page 7: I. Objectif - stirling.vije.netstirling.vije.net/documentslies/act-flowcode2.pdf · 2AD Activité FlowCode Activité Flowcode.doc Page 3 / 8 2. Activité nº2 : Nous allons créer

2AD

Activité FlowCode

Activité Flowcode.doc Page 7 / 8

VI. Vélocimètre On Souhaite Mesurer la Vitesse d’une Roue. Nous avons placé 6 encoches sur cette roue. Le programme doit compter les Encoches pendant 1 seconde. Donc il faut préparer une Boucle de 0 à 1000 avec une pause de 1 ms à l’intérieur.

Dans cette boucle appelée Période, on teste le capteur avec la 3ème

solution de la page précédente.

La Liste des Variables Nécessaires et leur Type : Certaines sont des Entiers car elles dépassent les 255. Voici leur utilisation : Test : Variable qui reçoit l’état du capteur dans « input » et que l’on teste. Periode : Variable qui commence à 30 et qui diminue 1 à chaque fin de la boucle de période. Les

30 boucles doivent durer 1 seconde. Si ce n’est pas le cas, modifier la valeur 30.

Total : Variable que l’on augmente à chaque fois qu’une encoche passe. Elle est en Tour/min. Comment l’augmenter : Il y a 6 encoches. Donc si dans 1 seconde je détecte 6 encoches,

la roue a fait 1 tour en 1 seconde, soit 60 tours/min. Pour que Total soit égal à 60 quand passent 6 encoches, il faut donc l’augmenter de 10 à chaque encoche. Total = Total + 10

Autorisation : Variable que l’on met à 1 si on détecte qu’il n’y a pas d’encoche. Elle autorise l’augmentation du Total si elle vaut 1.

Astuce :

Pour le bouton poussoir, aller dans connexion puis Touche Clavier : Demander à ce que le bouton A1 réponde avec la touche 0 du clavier. C’est plus facile ensuite pour la simulation.

La page suivante vous aide à créer ce gros programme.

APPELER LE PROFESSEUR SI VOTRE PROGRAMME FONCTIONNE

Page 8: I. Objectif - stirling.vije.netstirling.vije.net/documentslies/act-flowcode2.pdf · 2AD Activité FlowCode Activité Flowcode.doc Page 3 / 8 2. Activité nº2 : Nous allons créer

2AD

Activité FlowCode

Activité Flowcode.doc Page 8 / 8

Imprimer la chaîne suivante : " Tours/min L.F.M.DESIGN" Juste avant le "T" :

Mettre 6 espaces Juste avant le "L" :

Mettre 27 espaces

Total = Total +10

periode = periode - 1

La Simulation est Lente : Une boucle jusqu’à 30, 40 ou 50 doit suffire pour 1 seconde

Le vrai 16F88 est très Rapide : On choisira periode = 924