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 ---
- 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 ---
Allumer une LED avec un Bouton Poussoir
-
Jérémy
Administrateur du site- Messages : 2725
- Âge : 45
- Enregistré en : juillet 2015
- Localisation : Dans le sud
- Contact :
Bonjour à tous,
Après ce premier Tuto en guise d'échauffement, je vous propose de compliquer un tout petit peu la chose .
Il existe, encore une fois, des centaines d'exemples sur la toile. Ce Tutoriel est en rapport avec le premier sur les commentaires, et reste dans une suite logique d'apprentissage en douceur, mais avec les bases nécessaire. Si vous n'avez pas les bases et avez besoin d'explications n’hésitez pas à poster un message dans le forum correspondant.
Configuration :
-IDE : MikroC Pro for PIC Version 6.6.2
-Compilateur : Mikro prog suite fo PIC V 2.32
-Plaque Easy PIC V7
L'objectif :
Allumer une LED quand on appuie sur un Bouton poussoir (ou l'inverse, éteindre une led quand on appuie sur un BP) .
Conseils :
- Dans ce Tutoriel, il n'ai pas question de rebond sur le BP, tout simplement car l'action à faire est en rapport avec le temps d'appui sur le BP et pas le fait de détecter un appui. Si vous ne savez vas pas ce qu'est un rebond, regardez donc le tuto à ce sujet !
- Le = ou == est très souvent une source d'erreur. Le double == est utilisé à titre de comparaison, savoir si les deux valeurs sont pareils ou njon. Tandis que un seul =affecte une valeur.
http://www.dailymotion.com/video/x31ar72
Après ce premier Tuto en guise d'échauffement, je vous propose de compliquer un tout petit peu la chose .
Il existe, encore une fois, des centaines d'exemples sur la toile. Ce Tutoriel est en rapport avec le premier sur les commentaires, et reste dans une suite logique d'apprentissage en douceur, mais avec les bases nécessaire. Si vous n'avez pas les bases et avez besoin d'explications n’hésitez pas à poster un message dans le forum correspondant.
Configuration :
-IDE : MikroC Pro for PIC Version 6.6.2
-Compilateur : Mikro prog suite fo PIC V 2.32
-Plaque Easy PIC V7
L'objectif :
Allumer une LED quand on appuie sur un Bouton poussoir (ou l'inverse, éteindre une led quand on appuie sur un BP) .
Code : Tout sélectionner
void main() { // ceci contiendra notre programme, c'est la fonction principale(main) et elle est obligatoire.
//################################# CONFIGURATION #########################################
ANSELB = 0; // Configure les broches du PORTB en digital (contrairement à analogique) état haut=1 , état bas=0 .
ANSELC = 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, on définit les valeurs du PORTB et PORTC à 0 avant de le mettre en sortie.
PORTC = 0; // En effet en passant le PORT B en sortie , la valeur de ses broches vont être initialisé et leurs états seront aléatoires.
// Autre méthode pour configurer les I/O ( Input/Output ou entrée/sortie)
TRISB = 0b00000000; // En écrivant "0b" on déclare que l'on va écrire en binaire. Chaque chiffres correspondra à une broche du PORT en question.
TRISC = 0b00001111; // Ainsi on configure les broches indépendamment les unes des autres.Configure tout le PORTB comme sortie en affectant la valeur 0 .
// Configure les broches 1,2,3,4 du PORTC comme entrée en affectant la valeur 1 .
//################################# Boucle infinie #########################################
while(1) // Ici c'est notre boucle sans fin.
{
// Introduction d'une condition "if" ( "si" en français)
if (PORTC.B0 == 1) // SI la broche 0 du PORTC vaut 1 , càd à l’état haut, ou Vcc alors on exécute ce qui suit, Sinon on passe au ELSE.
// Ici donc on regarde si notre BP est appuyé ou non . s'il est appuyé la valeur sera de 1(Vcc) sinon de 0 (masse).
PORTB.B0 = 1 ; // On met la Broche 0 du PORTB à 1. Ce qui aura pour effet d'allumer la led , comme 1 = Vcc
else // Ici on retrouve notre "SINON" , càd l'action a exécuter si la condition n'est pas remplie.
{
PORTB.B0 = 0 ; // Si la condition du départ n'est pas remplie donc que le PORTC.B0 n'est pas égale a 1 , donc que le BP n'est pas appuyé
} // Alors on met la Broche 0 du PORTB à 0 , donc à la masse , donc la LED est éteinte .
//----------------------------------------------------------------------------------------------------------------------------
if (PORTC.B1 == 1) // Ici la même chose à l'envers, sur un autre BP et une autre LED. Si le BP sur Broche 1 du PORTC est égale à 1.
// Alors on éteint la LED sur la Broche 1 du PORT B
{PORTB.B1 = 0 ;} // Ici vous pouvez remarquez qu'il y a des {} qui entoure la commande. En fait si il n'y a qu'une seule ligne dans le "IF" , on peut ne pas les mettre .
// Mais toutefois je vous conseille de garder le réflexe de les mettre out le temps.
else
{PORTB.B1 = 1 ;} // Sinon on l'allume. Donc quand le BP ne sera pas appuyé, la led LED sera allumée.
} // Nous arrivons à la parenthèse de la boucle infini, donc on repart au début et ainsi de suite .
} // Fin de notre fonction principale
Conseils :
- Dans ce Tutoriel, il n'ai pas question de rebond sur le BP, tout simplement car l'action à faire est en rapport avec le temps d'appui sur le BP et pas le fait de détecter un appui. Si vous ne savez vas pas ce qu'est un rebond, regardez donc le tuto à ce sujet !
- Le = ou == est très souvent une source d'erreur. Le double == est utilisé à titre de comparaison, savoir si les deux valeurs sont pareils ou njon. Tandis que un seul =affecte une valeur.
http://www.dailymotion.com/video/x31ar72
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Tuto N°2, allumer une LED avec un Boutton Poussoir
Tuto N°2, allumer une LED avec un Boutton Poussoir
Tuto N°2, allumer une LED avec un Boutton Poussoir
Tuto N°2, allumer une LED avec un Boutton Poussoir
-
Jérémy
Administrateur du site- Messages : 2725
- Âge : 45
- Enregistré en : juillet 2015
- Localisation : Dans le sud
- Contact :
Grrrr mon tuto n'est donc pas au point.
En MikroC la syntaxe est "PORTC.B1" . Le PORTC désignant le PORT en question . et le "B" le numéro de la Broche ! B pour Broche moyen mnémotechnique .
Je crois qu'avec MPLAB la syntaxe est légèrement différente . Si je dis pas de bêtises il faudrait ecrire "F1" en lieu et place de "B1"
En MikroC la syntaxe est "PORTC.B1" . Le PORTC désignant le PORT en question . et le "B" le numéro de la Broche ! B pour Broche moyen mnémotechnique .
Je crois qu'avec MPLAB la syntaxe est légèrement différente . Si je dis pas de bêtises il faudrait ecrire "F1" en lieu et place de "B1"
Allumer une LED avec un Boutton Poussoir
Allumer une LED avec un Boutton Poussoir
-
Jérémy
Administrateur du site- Messages : 2725
- Âge : 45
- Enregistré en : juillet 2015
- Localisation : Dans le sud
- Contact :
Bonjour PEDRO et Bienvenue sur fantasPic.fr
D’après ma maigre expérience (encore), la ou le code varie le plus d'un compilateur à l'autre, c'est bien sur l'appelle des ces broches.
J'ai testé ta ligne de code avec MikroC elle ne fonctionne pas.
Peut être parlais tu pour MPLAB ?
D’après ma maigre expérience (encore), la ou le code varie le plus d'un compilateur à l'autre, c'est bien sur l'appelle des ces broches.
J'ai testé ta ligne de code avec MikroC elle ne fonctionne pas.
Peut être parlais tu pour MPLAB ?
Allumer une LED avec un Boutton Poussoir
bonjour
sous MPLABX XC8
A+
Code : Tout sélectionner
/* Pins connect? sur le LCD */
#define RW PORTCbits.RC6 /* PORT pour RW */
#define RS PORTCbits.RC5 /* PORT pour RS */
#define E PORTCbits.RC4 /* PORT pour E */
sous MPLABX XC8
A+
Allumer une LED avec un Boutton Poussoir
La syntaxe est sensiblement la même d'un compilo à l'autre, sous MikroC on peut utiliser plusieurs façons de faire, cela est du à la compatibilité ascendante avec les écritures employées sur les versions ultérieures.
Pour savoir exactement quoi utiliser il suffit d'aller voir dans le fichier des définitions du compilateur (pour MikroC c'est le répertoire defs, ensuite il faut ouvrir le .c correspondant par exemple PIC18K66K80.c et de chercher la ou les déclarations associées).
Faire bien attention dans la nuance déclarative de PORTA par exemple avec LATA, les 2 ne sont pas équivalents, le premier sert à lire un port le second à écrire sur le port.
On y trouve:
ou
il est également possible de déclarer une écriture personnelle:
Pour savoir exactement quoi utiliser il suffit d'aller voir dans le fichier des définitions du compilateur (pour MikroC c'est le répertoire defs, ensuite il faut ouvrir le .c correspondant par exemple PIC18K66K80.c et de chercher la ou les déclarations associées).
Faire bien attention dans la nuance déclarative de PORTA par exemple avec LATA, les 2 ne sont pas équivalents, le premier sert à lire un port le second à écrire sur le port.
On y trouve:
Code : Tout sélectionner
sbit LATA0_bit at LATA.B0; // on peut donc écrire indiféremment LATA0_bit ou LATA.B0
ou
Code : Tout sélectionner
// Alternative bit function
const register unsigned short int RA0_PORTA = 0;
sbit RA0_PORTA_bit at PORTA.B0; // On peut écrire soit RA0_PORTA_bit ou PORTA.B0
il est également possible de déclarer une écriture personnelle:
Code : Tout sélectionner
sbit PORTA0_Write at LATA.B0
sbit PORTA0_Read at PORTA.B0
Qui est en ligne
Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 106 invités