Retour à la page précédente

Commun

M. GUITARD

M.ROTY M. THIERIOT

Simulons l'allumage des feux d'un carrefour avec Quick Basic!


La page a été mise à jour le 

 Introduction

L'objectif de ce TP est créer un programme en quick basic afin de contrôler le fonctionnement des feux d'un carrefour.

 

Prérequis

Simulons l'allumage d'un carrefour avec ELWIN

QuickBasic et port parallèle

 

Utilitaire

Lancement de QuickBasic

 

Compte-rendu

  Imprimer le programme final et rédiger un commentaire explicatif de ce programme reprenant toutes les informations collectées au cours des différentes étapes.


Plan

1 - Comment commander les feux avec Quick Basic?

2 - Créons notre premier cycle d'allumage !

3 - Programmons un fonctionnement continu !

4 - Comment distinguer le jour et la nuit ?

5 - Un carrefour qui fonctionne de jour comme de nuit

 

Rédacteur : CG + JM

Retour au sommaire général

 
 
 

-

Retour en haut de la page

1 - Comment commander les feux avec Quick Basic ?

Travail à faire

Aides à la programmation

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.

Alimente le module DEL en +15V, 0V, -15 V puis connecte ce module à ton ordinateur.

Connecte le module feux tricolore sur le module DEL.

  En se servant d'Elwin, éventuellement, dresse 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 ou du QuickBasic (voir ci-contre).

 

Retour en haut de la pageParagraphe suivant

 

-

Retour en haut de la page

2 - Créons notre premier cycle d'allumage !

 

Travail à faire

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

 

Retour en haut de la pageParagraphe suivant

 

-

Retour en haut de la page

3 - Programmons un fonctionnement continu !

Créer un programme qui va faire fonctionner les feux du carrefour en continu. Pour cela, choisir le type de boucle qui semble le mieux convenir :

Aides à la programmation

Boucle FOR-NEXT
Elle permet de répéter une série d'actions un nombre déterminé de fois.
Boucle DO-LOOP-UNTIL
Elle permet de répéter une série d'actions un nombre illimité de fois jusqu'à ce qu'une condition soit remplie.

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

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

 

Retour en haut de la pageParagraphe suivant

 

-

Retour en haut de la page

4 - Comment distinguer le jour et la nuit ?

 

Travail à faire

Aides à la programmation

Le module carrefour comporte une photorésistance qui permet de détecter le jour ou la nuit. 
Il faut rappeler que les feux de certains carrefours clignotent tous à l'orange la nuit.

Remarque :
Cette photorésistance commande l'état d'une des broches du port parallèle (la broche "busy"). Cette broche fait partie d'une série de 8 broches (codant un octet) dont l'adresse est 379.

La commande quick basic INP (&h379) est une variable qui prend la valeur décimale de l'octet qui code les 8 broches dont l'adresse est 379.
Cette valeur dépend donc de l'état de la photorésistance.

La commande PRINT INP(&H379) affiche à l'écran (PRINT) la valeur décimale de l'octet lu (INP abréviation de input) sur les broches situées à l'adresse 379 (&H379).

  Quelle est la valeur de l'octet 379 pour le jour ? pour la nuit ? Note ces valeurs elles vont te resservir.

 

Retour en haut de la pageParagraphe suivant

 

-

Retour en haut de la page

5 - Un carrefour qui fonctionne de jour comme de nuit

 

Travail à faire

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é détecté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

Rappel : Imprime le programme final et rédige un commentaire explicatif de ce programme.


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

Exemple :

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 en haut de la page