Apprendre à programmer un PIC. Partie II - Boutons et LED



Documents pareils
ARDUINO DOSSIER RESSOURCE POUR LA CLASSE

Chapitre 4 Pierre, papier, ciseaux

Bien commencer avec un LaunchPad MSP430G et un Breadboard

AMICUS 18 (2ème partie) 4) Présentation du logiciel Amicus IDE

1 Introduction C+ + Algorithm e. languag. Algorigramm. machine binaire. 1-1 Chaîne de développement. Séance n 4

La programmation des PIC en C. Les fonctions, les interruptions.

Centrale de surveillance ALS 04

Formulaire pour envoyer un mail

Pluridisciplinarité. Classe de BTS DATR

Application 1- VBA : Test de comportements d'investissements

Clavier Déporté Sans Fil NOTICE RFID SOS

OUVERTURE PAR GSM Code : GSM64

ALIMENTATION PORTABLE 9000 AVEC DEMARRAGE DE SECOURS POUR VOITURE

Initiation à la programmation en Python

ROTOLINE NOTICE DE POSE

Merci d'avoir choisi notre système d'alarme intelligent. Veuillez lire ce manuel avant l'installation afin de la faire fonctionner correctement.

Utiliser Subversion (SVN) avec Tortoise

Apprendre à manipuler le clavier Médiathèque de Bussy Saint-Georges APPRENDRE A MANIPULER LE CLAVIER

Fonctionnement : 2. Branchez le récepteur en utilisant l adaptateur secteur sur lequel est indiqué «récepteur horsealarm».

Easy Lock. Mod. DPN13PG Mod. DPN18PG V.2 LIRE LES INSTRUCTIONS ATTENTIVEMENT AVANT UTILISATION ET LES CONSERVER EN CAS DE BESOIN PAGE 2 PAGE 4 PAGE 8

Utilisation du visualiseur Avermedia

Chapitre 4 : Guide de Mouvement et Masque

Cours d algorithmique pour la classe de 2nde

Manuel d utilisation 26 juin Tâche à effectuer : écrire un algorithme 2

HAM841K CENTRALE D'ALARME POUR SYSTEMES DE SECURITE COMMERCIAUX ET D'HABITATION

Guide d Utilisation :

SP-1101W/SP-2101W Quick Installation Guide

VOS CONTACTS GUIDE D INSTALLATION DE L ADAPTATEUR WIFI POUR ÊTRE EN RELATION AVEC UN CONSEILLER POUR NOUS ÉCRIRE

Installation d'une galerie photos Piwigo sous Microsoft Windows.

Guide abrégé ME301-2

TRUECRYPT SUR CLEF USB ( Par Sébastien Maisse 09/12/2007 )

ET 24 : Modèle de comportement d un système Boucles de programmation avec Labview.

Navigation dans Windows

Guide d'installation de l'amplificateur de signal pour périphériques mobiles Wi-Fi WN1000RP

Manuel d'utilisation du détecteur de fumée

Guide abrégé ME401-2

I GENERALITES SUR LES MESURES

Séquence de découverte de SparkAngels Logiciel d entraide numérique

TRIGONOMETRIE Algorithme : mesure principale

Gestion des utilisateurs : Active Directory

Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if

VIII- Circuits séquentiels. Mémoires

TD Objets distribués n 3 : Windows XP et Visual Studio.NET. Introduction à.net Remoting

Mode d emploi Flip Box

Humidimètre sans contact avec mémoire + Thermomètre IR

Une seule rangée Études/Formation/Permis s affichera lors de la création d un nouveau cas.

Programmation C++ (débutant)/instructions for, while et do...while

Manuel d aide à la pose

Comment développer et intégrer un module à PhpMyLab?

Tutorial et Guide TeamViewer

Notice de paramétrage Version 1.1

Traitement de texte : Quelques rappels de quelques notions de base

Contrôle parental NetAddictFree 8 NetAddictFree 8 - Guide d utilisation

Guide d installation de l Amplificateur Universel Wifi N avec 4 ports réseau

AUTOPORTE III Notice de pose

HA30+ ENSEMBLE ALARME SANS FIL 3 ZONES

PASSAGE A NIVEAU HO/N

LECTEUR D'EMPREINTE DIGITALE SERRURE ÉLECTRONIQUE MOTORISÉE

ScoopFone. Prise en main rapide

Guide d installation de Java et des pilotes de lecture des supports

Système d alarme sans fil GSM / SMS / RFID.

Comment créer votre propre lampes LED

CHAPITRE VIII : Les circuits avec résistances ohmiques

CO-100 MANUEL DE L UTILISATEUR POUR SERRURE SANS FIL

STS SE. FreeRTOS. Programmation réseau WIFI. Programmation réseau. Socket Tcp. FlyPort smart Wi-Fi module

SpeechiTablet Notice d utilisation

Contrôle et aiguillage Test de la PreSonus Monitor Station v2

Comment Utiliser les Versions, les Modification, les Comparaisons, Dans les Documents

PREINSCRIPTION EN LIGNE

LES TOUT PREMIERS PAS

Cours 1 : Qu est-ce que la programmation?

Guide d'installation de l'amplificateur de signal Wi-Fi WN1000RP pour périphériques mobiles

ENREGISTREUR DE TEMPERATURE

Vehicle Security System VSS3 - Alarm system remote

LES CAPTEURS CCD/CMOS

SIMPL'VOX. Notice d'utilisation. Transmetteur téléphonique vocal. Version 1.1

Réalisation de cartes vectorielles avec Word

Algorithmique avec Algobox

box Modem Internet et téléphone avec routeur WiFi Mode d'emploi

Adaptateurs réseau CPL 200 Plus (PL200P)

Table des matières. F. Saint-Germain / S. Carasco Document réalisé avec OpenOffice.org Page 1/13

GESTION BOOTLOADER HID

Pourquoi l apprentissage?

Perl Console. Votre compagnon pour développer en Perl. Les Journées du Perl , 17 novembre, Lyon. Alexis Sukrieh

SIRENE SANS FIL SOLAIRE 433MHz 30/80m SSFS = SG-1100T

Table des matières. 1. Description du matériel : Données techniques : Présentation de la serrure :... 4

Manuel d utilisation du modèle

d'utilisation Index Rév. 1.0

Créer un sondage en ligne

SHERLOCK 7. Version du 01/09/09 JAVASCRIPT 1.5

Routeur Wi-Fi N300 (N300R)

Organigramme / Algorigramme Dossier élève 1 SI

Débuter avec PsoC ou PsoC niveau 0

Guide d installation. Adaptateur CPL extension Wi-Fi

Transcription:

Apprendre à programmer un PIC Partie II - Boutons et LED Historique des versions Version 1.0 16.11.2007 oca Table des matières Introduction...2 Faire clignoter une LED... 2 Allumer et éteindre une LED avec deux boutons... 5 Allumer et éteindre une LED avec un bouton ON/OFF... 7 1

Introduction Dans cette partie, nous allons nous familiariser avec la programmation. En utilisant des boutons et des LEDs. Bien sûr, il existe des solutions plus simples que les PIC pour jouer avec des boutons et des LED, mais ceci nous permettra d'assimiler quelques bases avant de passer à des notions plus interessantes des PIC. Faire clignoter une LED Lorsque l'on apprend un langage informatique, On commence souvent par écrire un programme qui consiste a afficher "Hello World". Avec la pluspart des langages comme le C, c'est très simple, mais avec un PIC, afficher "Hello World" n'est pas évident puisque l'on a pas d'écran pour le moment... j'ai bien dit pour le moment ;) Nous allons donc faire plus simple, et commencer par faire clignoter une LED. Voici tout de suite le programme... pin_b0_direction = output pin_b0 = on Passons sur la première ligne "" qui initialise juste deux trois choses pour nous et regardons directement la seconde ligne : pin_b0_direction = output Un PIC possède plusieurs pin, qui peuvent servir d'entrée ou de sortie. Dans ce programme nous allons utiliser un pin nommée "b0" comme une sortie, c'est a dire que nous allons faire varier la tension sur cette pin ce qui allumera notre LED. Nous avons ensuite la ligne : Toutes le instruction qui se trouve entre "" et "" seront executées cycliquement temps que le PIC est sous tension. La ligne suivante est pin_b0 = on qui met une tension (celle d'alimentation) sur la sortie B0 (et donc cela allume la LED. Cette ligne permet d'attendre une seconde sans rein faire... sinon la LED clignoterait trop vite! 2

Apprendre à programmer un PIC On éteint la LED Et on attend à nouveau une seconde avant de recommencer au debut de la boucle... Voici un petit schéma de principe (sans la partie alimentation et sans le clock). Figure 1. Un PIC et une LED sur la pin B0 Le programme peut être testé avec le simulateur "PICShell". afin que PICShell puisse dessiner la LED, Il faut ajouter la ligne ";@led_red pin_b0" qui ne modifie pas le programme, mais qui indique a PICShell qu'une led rouge se trouve sur la pin B0 Il faut également ajouter la ligne suivante : ";@use_virtual_delay" qui indique a PICShell que le temps d'attente est simulé. Sans cette ligne, PICShell n'arrive pas a simuler l'instruction "" assé rapidement. Voici donc le programme complet à tester dans PICShell : ;@use_virtual_delay ;@led_red pin_b0 pin_b0_direction = output pin_b0 = on 3

Partie II - Boutons et LED Et voici une image du resultat, avec la petite led rouge dans le carré en bas à droite. Figure 2. Un PIC et une LED sur la pin B0 4

Allumer et éteindre une LED avec deux boutons Le programme suivant utilise deux boutons et une led. Le premier bouton allume la led. Le deuxième bouton éteint la led. Le premier bouton se trouve sur la pin_c0, configurée come une entrée Le deuxième bouton se trouve sur la pin_c1, configurée come une entrée La led se trouve sur la pin B0 configurée comme une sortie Voici le shéma de principe Figure 3. Deux boutons, un PIC et une LED Et voici le code du programme: ;@led_red pin_b0 ;@mpd but_on pin_c0 ;@mpd but_off pin_c1 pin_b0_direction = output pin_c1_direction = input if pin_c0 == on then pin_b0 = on if pin_c1 == on then Ce programme utilise une nouvelle annotation : ";@mpd". Elle ne change rien au fonctionnement du programme, mais elle indique au simulateur PICShell qu'il y a un bouton à traiter. Attention, il existe plusieurs sorte de bouton... "mpd" veut dire : Momentary Pull Down 5

Un bouton momentané est un bouton qui ne garde pas son état (il revient à sa position initiale lorsque l'on arrète de presser dessus...) Le Pull Down est un système qui comporte un bouton et une résistance, qui va appliquer une tension de 0V lorsque l'on ne presse pas sur le button, et de VCC (5V par ex.) lorsque l'on presse dessus. Voici le schéma d'un "Momentary Pull Down" Figure 4. Le Momentary Pull-Down On utilise l'instruction "if" pour tester si un bouton est pressé. "if pin_c0 == high then" veut dire : "si la pin C0 est "on" alors..." Notre programme pourrait donc être traduit par : si la pin c0 est "on" alors allume la led qui est sur la pin b0 si la pin c1 est "on" alors éteint la led qui est sur la pin b0 6

Apprendre à programmer un PIC Allumer et éteindre une LED avec un bouton ON/OFF Le plus simple est d'utiliser un interrupteur "permanent", comme ceci : Figure 5. Un interrupteur "permanent" de type "Pull-Down" Avec le code suivant : ;@no_debug_all ;@led_red pin_c1 ;@ppd button pin_c0 pin_c1_direction = output if pin_c0==high then pin_c1 = high else pin_c1 = low Que l'on peut même simplifier de la manière suivante, puisque dans ce programme, la pin_c1 et pin_c0 ont toujours le même état (high ou low) ;@no_debug_all ;@led_red pin_c1 ;@ppd button pin_c0 pin_c1_direction = output pin_c1 = pin_c0 Dans ce cas, l'utilisation d'un bouton "permant" simplifie bien les choses... car il garde lui même "méchaniquement" son état. Dans certains cas, les boutons permanents peuvent cependant poser problèmes, Par exemple dans le cas ou l'on voudrait avoir un bouton "reset" qui éteint la led... Voici donc comment faire un ON/OFF avec un bouton momentané, qui lui ne garde pas son état. 7

Partie II - Boutons et LED Figure 6. Un interrupteur "momentané" de type "Pull-Down" ;@no_debug_all ;@led_red pin_c1 ;@mpd button pin_c0 pin_c1_direction = output pin_c1 = low if pin_c0 == high then if pin_c1 == high then pin_c1 = low else pin_c1 = high while pin_c0==high loop On a donc deux tests "if" l'un dans l'autre... le premier test nous permet de savoir si on a pressé sur le bouton, le deuxième test regarde si la led est allumer au moment ou éteinte, de façon à pouvoir inverser son état (l'éteindre si elle était allumer, et l'allumer si elle était éteinte...). On peut également simplifier ce programme, car JAL propose le signe "!" qui permet justement d'inverser un état... ;@no_debug_all ;@led_red pin_c1 ;@mpd button pin_c0 pin_c1_direction = output pin_c1 = low if pin_c0 == high then pin_c1 =! pin_c1 while pin_c0==high loop 8

La ligne "pin_c1 =! pin_c1" sert à mettre la pin c1 dans l'état inverse de son état actuel. Regardons maintenant cette drôle de ligne "while pin_c0==high loop "... Elle sert à attendre que l'on relache le bouton. Si on ne met pas cette ligne, la led va clignoter très vite lorsque l'on laisse le bouton pressé...pire, l'état de led va être difficle à prevoir lorsque l'on relache le bouton...la difficulté, c'est de garder en tête que nous sommes dans une boucle ()... Finalement le mieux, c'est encore d'essayer... Faites un petit test dans PICShell en supprimant cette ligne "while pin_c0==high loop " et vous verrez le problème... On est bien d'accord, l'utilisation d'un bouton momentané est un peu plus compliqué que l'utilisation d'un bouton permanent... mais cela à l'avantage d'avoir "toute la logique au même endroit, dans le PIC.". Dans des programme plus complet, l'utilisation de bouton momentané devient vraiment un plus... 9