Faire clignoter une LED

Les schéma de câblage


On réutilise le même schéma que pour l'allumage d'une LED pour le moment

Le programme

  1. #include <16f876A.h>
  2. #use delay(clock=20000000)
  3. #fuses HS, NOWDT, NOPUT, NOPROTECT, NOBROWNOUT, NOLVP, NOCPD
  4. #define LED pin_b1
  5.  
  6. void main()
  7. {
  8.         while(1) //boucle infini
  9.         {
  10.                 output_toggle(LED); //inversion de l'état
  11.                 delay_ms(100);
  12.         }
  13. }

Explications

- Pour les lignes 1 à 7 rien ne change par rapport à l'exemple précédent.

- Ligne 8: une boucle infini, elle exécutera son contenu à l'infini, le seul moyen de l'arrêter est de couper l'alimentation du PIC.

- Ligne 10: la fonction output_toggle() inverse l'état logique de la sortie LED

- Ligne 11: une tempo de 100ms entre chaque inversion d'état logique (ce qui permet de vérifier le clignotement à l'Å“il nu)

Le programme ferra donc clignoté la LED tout les 100ms à l'infini.

Autre solution en utilisant les interruptions

Astuce

Une petite astuce lorsque l'on manque d'E/S sur son PIC, il est possible d'utiliser 2 LED sur la même sortie. Voici un exemple:

(R1(1) est une alimentation de 5v)
- Pour allumer la LED D1 il suffit de mettre la sortie B1 à l'état logique haut

- Pour allumer la LED D2 c'est l'inverse, B1 à l'état bas

- Pour allumer les 2 LED en même temps, il suffit d'utiliser le programme juste au dessus et de réduire le temps d'inversement à un niveau ou l'œil humain n'est plus capable de percevoir le clignotement.

- Et pour éteindre les 2: on utilise la fonction output_float() qui met la sortie en haute impédance

Voila pour l'astuce =)

Le dossier

Je met à vôtre disposition un dossier compresser avec:

- Le fichier source en .C

- Tout les fichiers généré lors de la compilation (notamment le .hex utile à la simulation ou pour envoyer dans le PIC)

- Le fichier de schéma fait sur proteus

- La même capture d'écran qu'au dessus (pour le schéma de câblage)

toggle2LED.rar

Sugi


© robot-amateur.com - Tous droits réservés. Reproduction interdite sans autorisation.