Automatisation de
l'allumage |
Objectif : Progresser en programmation et voir l’utilité de la mesure physique issue d’un capteur.
Pre-requis :
Principe : Pour simuler l'allumage des feux tricolores d'un carrefour, on va ici utiliser un vrai langage de programmation, le QuickBasic. Plus encore, on utilisera la capteur de lumière pour "programmer" un mode jour et un mode lumière.
Plan :
1 : | Comment commander les feux ? |
2 : | Créons notre premier cycle ! |
3 : | Programmons le fonctionnement des feux ! |
4 : | Comment distinguer le jour et la nuit afin d'envisager un fonctionnement différent ? |
5 : | Il est de temps de réaliser le programme permettant l'automatisation totale des feux ! |
Expériences |
Aides à la programmation |
Alimenter le module DEL en +15V, 0V, -15 V puis connecte ce module à ton ordinateur. Connecter le module feux tricolore sur le module DEL. En se servant du QuickBasic, dresser la liste des nombres décimaux (et de leur conversion binaire) qui vont être utiles pour commander des feux tels qu'ils fonctionnent en France. Remarque : L'allumage des feux est commandé par 8 broches du port parallèle. Il est alors possible de commander l'état de ces 8 broches à l'aide du logiciel ELWIN mais aussi du QuickBasic (voir ci-contre). |
Avec le QuickBasic, quand tu écris une ligne de programme
" OUT &h378,27 ", les 8
broches du port parallèle prennent respectivement les états 0 0 0 1 1 0
1 1 qui est la conversion en binaire de 27. Si on décompose l'ordre donné à l'ordinateur :
|
Expériences |
Aides à la programmation |
Créer un programme qui va faire fonctionner les feux du carrefour sur un cycle : Les voitures pourront passer une fois sur la 1ère rue, une fois sur la deuxième rue. N'oublie pas d'enregistrer ton programme sous le non cyclfeux.bas par exemple. |
Un tel programme nécessite l'utilisation d'un ordre du
type SLEEP (3). |
Expériences |
Aides à la programmation |
Créer un programme qui va faire fonctionner les feux du carrefour en continu. Pour répéter plusieurs fois la même opération, les langages de programmation utilise des boucles : Choisir le type de boucle qui semble le mieux convenir. - 1er exemple de boucle : Ce genre de boucle appelé boucle FOR-NEXT permet de répéter une série d'action un nombre déterminé de fois. Essayer le programme suivant :
- 2ème exemple de boucle : Ce genre de boucle appelée boucle jusqu'à permet de répéter une série d'action un nombre illimité de fois jusqu'à ce qu'une condition soit remplie. Essayer le programme suivant :
Ne pas oublier pas d'enregistrer ton nouveau programme sous le non feuxjour.bas par exemple ! |
CLS : efface l'écran. FOR n=1 to 5 annonce le début de la boucle, la valeur initiale de n et la valeur finale de n pour laquelle il faudra sortir de cette boucle. NEXT n augmente la valeur de n d'une unité à chaque tour de boucle si bien que n prend successivement les valeurs 1, 2, 3, 4, 5 pour laquelle le programme sort de la boucle.
DO annonce le début de la boucle. LOOP UNTIL ordonne de répéter les opérations précédentes jusqu'à ce qu'une condition soit remplie. INKEY$<> ""
la condition est qu'il y ait une touche du clavier enfoncée (INKEY$) qui
soit différente(<> donc supérieure ou inférieure) de rien (il n'y
a rien entre le guillemets). |
Expériences |
Aides à la programmation |
Le module carrefour comporte une photorésistance qui permet de détecter le jour ou la nuit. A quoi cela peut-il servir ? Le rappeler. Cette photorésistance commande l'état d'une des broches du port parallèle. Cette broche fait partie d'une série de 8 broches (codant un octet) dont l'adresse est 379. Quelle est la valeur pour le jour ? pour la nuit ? Note ces valeurs elles vont te resservir. |
La commande quick basic INP (&h379) effectue une lecture de l'état de l'octet qui code ces 8 broches dont celle reliée à la photorésistance. La commande PRINT INP(&H379) l'ordinateur affiche alors à l'écran (PRINT) la valeur décimale de l'octet qu'il a lu (INP abréviation de input) sur les broches situées à l'adresse 379 (&H379). |
Expériences |
Aides à la programmation |
Le module carrefour comporte une photorésistance qui permet de détecter le jour ou la nuit. A quoi cela peut-il servir ? Le rappeler. Cette photorésistance commande l'état d'une des broches du port parallèle. Cette broche fait partie d'une série de 8 broches (codant un octet) dont l'adresse est 379. Quelle est la valeur pour le jour ? pour la nuit ? Note ces valeurs elles vont te resservir. |
La commande quick basic INP (&h379) effectue une lecture de l'état de l'octet qui code ces 8 broches dont celle reliée à la photorésistance. La commande PRINT INP(&H379) l'ordinateur affiche alors à l'écran (PRINT) la valeur décimale de l'octet qu'il a lu (INP abréviation de input) sur les broches situées à l'adresse 379 (&H379). |
Expériences |
Aides à la programmation |
Il te reste maintenant à créer un programme où les feux fonctionnent en continu et passent automatiquement du mode jour au mode nuit selon la luminosité captée par la photorésistance. Pour cela, tu auras sans doute besoin d'utiliser une
commande permettant de mettre des conditions.
Ne pas oublier d'enregistrer ton nouveau programme sous le non feuxauto.bas par exemple |
Commande IF … THEN … ELSE … END IF Essayer ce programme pour comprendre, normalement il se passe d'explication...
|