I. Objectif Activité FlowCode 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 : 1/ Faire apparaître un LCD 3/ Double sur l Appel de Routine 2/ Faire glisser cet icône «routine composant dans votre organigramme 4/ Sélectionner le LCD puis la fonction souhaitée. Exemple : PrintString. Préciser le paramètre à afficher : "a" ou "bonjour" et valider. Activité Flowcode.doc Page 1 / 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. Activité Flowcode.doc Page 2 / 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?... Activité Flowcode.doc Page 3 / 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 Activité Flowcode.doc Page 4 / 8
Activité FlowCode 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? Activité Flowcode.doc Page 5 / 8
Activité FlowCode 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. Activité Flowcode.doc Page 6 / 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 Activité Flowcode.doc Page 7 / 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 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 Total = Total +10 periode = periode - 1 Activité Flowcode.doc Page 8 / 8