Ignorer la navigation

III. Clignotement d'une Led

3.1. Version 1

Cahier des charges :

  • objectif du programme : on veut faire clignoter la led 0 du port B (B0) à la fréquence de 1 Hz
  • pour éteindre la led on affectera 0 à la sortie B0, pour l'allumer on affectera 1 à cette même sortie B0.
  • le programme contiendra une boucle 'tant que' dont l'arrêt dépendra d'une entrée (lorsque l'entrée sera à 1, la boucle s'arrêtera donc le programme s'arrêtera sinon le programme tournera sans s'arrêter).
  • Cette entrée sera A0 du port A et simulée par un interrupteur (switch).
  • Cette entrée A0 sera associée à la variable 'arret' que vous allez créer et pouvoir ensuite réutiliser dans le test de votre boucle.

 

Quand on veut débugger un programme il est parfois utile d'avoir des outils appropriés. C'est le cas de Flowcode qui propose notamment d'exécuter le programme pas à pas (menu 'Exécuter' ou touche F8). On peut aussi y associer un tableau dynamique des variables du programme (on visualise ainsi l'état des variables en temps réel).

Quand un programme ne fonctionne pas correctement c'est souvent le meilleurs moyen de comprendre pourquoi!

 

Essayez votre programme et quand tout fonctionne faites valider par le professeur







3.2. Version 2

On se propose d'améliorer un peu ce programme :

  • Ajout d'une variable 'led' (type 'octet'). C'est cette variable que l'on va affecter à la sortie B0 (cette affectation ne doit avoir lieu qu'une seule fois).
  • Pour changer la valeur de cette variable 'led', on utilisera la fonction NOT dans un bloc de calcul. Les blocs de calculs permettent de manipuler les variables (affectation, calculs, …). Un exemple ci-contre de bloc de calcul utilisé en tête de programme pour l'initialisation des variables. Ces blocs de calcul peuvent contenir des fonctions mathématiques et logiques déjà programmées.

       

Pour choisir une fonction déjà existante : exemple avec la fonction 'float2int():

1 : choisir 'fonction' en double-cliquant sur le bloc calcul de votre programme
2 : choisir le type de fonction (l'exemple donné ci-après concerne la transformation d'un float en integer)
3 : syntaxe d'utilisation de la fonction (on remplace les variables exemples <…..> par nos propres variables)
4 : On valide l'utilisation de la fonction

 

syntaxe de la fonction NOT:   ma_variable = NOT ma_variable1    (les variables sont de type octet donc sur 8 bits)

résultat: la variable 'ma_variable' est l'inverse de la variable 'ma_variable1'

exemples: si ma_variable1=0 (0000000) alors ma_variable sera égal à 255 (11111111)

                 si ma_variable1=19 (00010011) alors ma_variable sera égale à 11101100 (c'est à dire 236)

Essayez votre programme (réalisé avec la fonction NOT) et, quand tout fonctionne, faites valider par le professeur





3.3. Version 3

On se propose d'améliorer encore un peu ce programme :

Le temps d'attente va être réglable et dépendra de la variable 'temps'. Celle-ci sera lue sur l'entrée analogique ADC1

Méthode :
  • Installer d'abord le potentiomètre (ADC) dans la partie 'panneau' du logiciel.
  • Il faut ajouter un sous programme spécial pour gérer l'entrée analogique associée au potentiomètre : ajouter le bloc 'routine composant' puis double-cliquez dessus :

Choisir 'Lire_comme_Tension' et choisir comme retour la variable 'temps' (qu'il faut créer en Flottant)


Essayez votre programme et quand tout fonctionne faites valider par le professeur