Bienvenue aux nouveaux arrivants sur FantasPic !

- Pensez à lire les règles durant votre visite, il n'y en a pas beaucoup, mais encore faut-il les respecter .
- N’hésitez pas à faire des remarques et/ou suggestions sur le Forum, dans le but de l'améliorer et de rendre vos prochaines visites plus agréables.
- Vous pouvez regarder votre "panneau de l'utilisateur" afin de configurer vos préférences.
- Un passage par "l'utilisation du forum" est recommandé pour connaître les fonctionnalités du forum.

--- L’équipe FantasPic ---
Commentez, partagez et proposez des Tutos en langage C !
Allumer et faire clignoter une led
Jérémy
Administrateur du site
Administrateur du site
Messages : 2722
Âge : 44
Enregistré en : juillet 2015
Localisation : Dans le sud
Contact :

#1 Message par Jérémy » sam. 8 août 2015 23:45

Bonjour à tous,

Alors voila je me jette dans l’arène.

Il existe des dizaines d’exemples de code pour faire clignoter une led. Mais celui-la me permettra de me faire la main ! ;)

Ce tuto est à base de commentaires très détaillés,pour bien se rendre compte, à quoi sert et ce que fait exactement chaque lignes.
Bien évidemment, il vous sera aussi nécessaire d'aller glané quelques infos sur la toile, pour compléter mes propos.

Image



Configuration :

- PIC18F45K22
- IDE : MikroC Pro for PIC Version 6.6.2
- Compilateur : Mikro prog suite fo PIC V 2.32
- Plaque Easy PIC V7





Allez ! on passe au sujet :
Faire clignoter une led branchée sur la broche RB0 du PIC .
On va la faire clignoté toute les secondes , sans une énorme précision, car ici ce n'est pas utile. ( enfin pour le moment).

Voila le code que je vous propose.

Code : Tout sélectionner

void main() {           // ceci contiendra notre programme, c'est la fonction principale(main) et elle est obligatoire.
                        // D'autres Fonctions  arriveront au fil des Tutos.

//#################################     CONFIGURATION    #########################################
ANSELB = 0;             // Configure les broches du PORTB en digital (contrairement à analogique) état haut=1 , état bas=0
                        // En numérique la valeur 1, c'est à dire un état haut correspond a Vcc et 0 : état bas à la masse

PORTB = 0;              // Afin d'éviter les surprises il est préférable de définir la valeur du PORT B à 0 avant de le mettre en sortie.
                        // En effet en  passant le PORT B en sortie , la valeur de ses broches vont être initialisé et leurs états aléatoire.

TRISB = 0;              // TRIS pour tri-state= 3 États . Entrée / sortie/ en l'air .
                        // Configure tout le PORTB comme sortie en affectant la valeur 0 (contrairement à entrée = 1)

 //#################################     Boucle infinie    #########################################

while(1){               // Ici c'est une boucle sans fin , c'est à dire que le programme tourne en boucle à l'infini  car la condition est toujours vraie

                        // on nomme la broche ou est branchée la led ici la broche RB0.
     PORTB.B0 = 1 ;     // En écrivant PORTC.B1 par exemple on allumerait la broche 1 du PORT C si une led était branchée dessus.
                        // perso je m'en souvient en me disant : Je veux la Broche 1 (B pour broche) donc B1, au final ça donne PORTC.B1

                        // Comme je suis débutant,j'ai activé toute les bibliothèques à la création du projet . C'est fortement conseillé pour les novices .cela ne prends pas de mémoire supplémentaire mais , met plus de temps à compiler.
     delay_ms (1000);   // La fonction delay_ms , fait une pause de X millisecondes , ici en l’occurrence de 1000ms donc 1 seconde à la fréquence de 4Mhz pour l'horloge.
                        // Cependant attention avec les pauses, car pendant la pause le µC ne peut rien faire d'autre que d'attendre ( sauf interruption on y viendra )

     PORTB.B0 = 0 ;         // Ici après avoir fait une pause quand la led était allumé, et ben, on l’éteint , on passe la broche à zéro

     delay_ms (1000);   // puis on refais une pause de 1 seconde

 }                      // Nous arrivons à la parenthèse de la boucle infini, donc on repart au début et ainsi de suite .


Voila pour un premier exemple.

Quelques astuces soit dit en passant :

- les // signifient des commentaires et ne sont pas compilés , donc ne tiennent pas de place mémoire , un conseil abusez-en dans vos programmes.
- On peut faire des paragraphes entier en commentaires avec les balises /* votre texte ici */ , même en sautant des lignes si vous voulez.
- Ici je nomme la broche ou est branchée la led RB0, il y a d'autres façon appelée cette broche que nous verrons ultérieurement.

http://www.dailymotion.com/video/x30zdcp
C'est en faisant des erreurs, que l'on apprend le mieux !!!

Tuto N°1 , Faire clignoter une led
Gérard
Avatar de l’utilisateur
Expert
Expert
Messages : 1640
Âge : 65
Enregistré en : septembre 2015
Localisation : Alsace - Haut-Rhin

#2 Message par Gérard » dim. 13 sept. 2015 14:44

Faudrait pas écrire PORTB.B0 = 0 dans la boucle ?
Le 18/04/19 je suis devenu papy de jumeaux, le 01/09/23 une petite cousine des jumeaux est née.

Tuto N°1 , Faire clignoter une led
Jérémy
Administrateur du site
Administrateur du site
Messages : 2722
Âge : 44
Enregistré en : juillet 2015
Localisation : Dans le sud
Contact :

#3 Message par Jérémy » dim. 13 sept. 2015 14:48

Ben si !!!

Merci !! Bizarre pourtant je m'étais jurer de charger physiquement chaque programme publié, afin de ne pas publié quelques chose qui ne fonctionne pas.

Je comptais ce weekend revoir mes tutos un par un . Mais avec le changements d'architecture du Fofo, j'ai dû changé mes plans. :roll:

L'erreur est corrigée !
C'est en faisant des erreurs, que l'on apprend le mieux !!!


Retourner vers « Langage C »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 3 invités