Retour menu


resanim.gif (9777 octets)

Automatisation de l'allumage
 des feux d'un carrefour

Résistance

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 !

 

 

 


1 : Comment commander les 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.
Bien noter que 0 0 0 1 1 0 1 1 correspond à une information contenue dans un octet. On indique alors dans la commande sa conversion en décimal.

Si on décompose l'ordre donné à l'ordinateur :

  • OUT : mettre la sortie

  • &h378: situé à l'adresse 378

  • 27 : dans l'état correspondant à la conversion binaire de 27.

Retour

 

 

 

 


2 : Créons notre premier cycle !

 

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).
Un tel ordre inséré après une ligne de programme demande à l'ordinateur d'attendre 3 secondes avant de passer à la ligne suivante.
Essaye d'autres durée ! Qu'est-ce qui n'est pas possible ?

Retour

 

 

 


3 : Programmons le fonctionnement des feux !

 

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 :

CLS
FOR n=1 to 5
PRINT "BONJOUR"
PRINT "CA VA ?"
NEXT n

- 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 :

CLS
DO
PRINT "BONJOUR"
PRINT "CA VA ?"
LOOP UNTIL INKEY$ <> ""

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).
Il suffit donc d'appuyer sur n'importe quelle touche pour sortir de la boucle.

Retour

 

 

 

 

 


4 : Comment distinguer le jour et la nuit afin d'envisager un fonctionnement différent ?

 

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).

Retour

 

 

 

 

 


5 : Il est de temps de réaliser le programme permettant l'automatisation totale des feux !

 

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).

Retour

 

 

 

 

 


5 : Il est de temps de réaliser le programme permettant l'automatisation totale des feux !

 

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.
A toi d'appliquer ce genre de condition au carrefour.

 

 

 

Ne pas oublier d'enregistrer ton nouveau programme sous le non feuxauto.bas par exemple

Commande IFTHENELSEEND IF
(en français) si … alors … sinon … fin de la partie conditionnelle.

Essayer ce programme pour comprendre, normalement il se passe d'explication...

CLS
INPUT " code ? ",c
IF c= 0 THEN
PRINT " bonjour "
PRINT " tu as le bon code "
ELSE
PRINT "attention "
PRINT "Ce code est faux "
END IF

Retour