Dans cette activité vous allez apprendre à programmer le

Transcription

Dans cette activité vous allez apprendre à programmer le
TECHNOLOGIE
TP Programmation 1
TP H
3ème …
Page 1 sur 30
Nom : ………………………………… Prénom : …………………………
Date……/………/…….
Objectifs : Prise en main de la programmation en langage Basic
Dans cette activité vous allez apprendre à programmer le microcontrôleur BasicStamp
module USB (BS-USB).
Le travail se fera en équipe, établir un roulement pour le travail de chacun des
membres du groupe (diagramme de gantt), ainsi qu’une fiche de suivi du projet pour toutes les
activités. N’oubliez pas de prendre des notes et des photos afin de réaliser les différents
articles sur l’avancée du projet sur le site du collège.
Comment faire ?
- Télécharger et installer le logiciel BASIC Stamp Editor :
http://www.parallax.com/Portals/0/Downloads/sw/bs/win/Setup-StampEditor-v2.5.2.exe
- A l’aide des différents circuits électroniques réalisés au TP G, câbler le
Basic Stamp (pages 2/30 à 7/30).
- Essayer les 5 exemples de programmes (pages 12/30 à 17/30) à l’aide
du tutoriel BASIC Stamp Editor (pages 8/30 & 9/30). Pour de plus
amples informations vous pouvez consulter la syntaxe du Basic pages
18/30 à 30/30).
TECHNOLOGIE
TP Programmation 1
TP H
3ème …
Page 2 sur 30
Date……/………/…….
Nom : ………………………………… Prénom : …………………………
Branchement du module BS-USB sur la carte électronique de commande :
P0
-
P1
-
P2
-
P3
-
-
+5V
P7
-
P6
-
P5
-
P4
-
Branchements des capteurs :
Capteur de lumière LDR sur le port PO du BS-USB:
N’oubliez pas de câbler le – (fils noir).
TECHNOLOGIE
TP Programmation 1
TP H
3ème …
Page 3 sur 30
Nom : ………………………………… Prénom : …………………………
Date……/………/…….
Interrupteurs micro switch sur les ports P1 et P2 du BS-USB :
N’oubliez pas de câbler les – (fils
noirs).
Remarque : Branchez les fils rouges au
+5V de la carte de commande
+5V
Branchements des actionneurs :
Buzzer sur le port P7 du BS-USB :
N’oubliez pas de câbler le – (fils noir).
TECHNOLOGIE
TP Programmation 1
TP H
3ème …
Page 4 sur 30
Nom : ………………………………… Prénom : …………………………
Date……/………/…….
Del sur le port P6 du BS-USB :
N’oubliez pas de câbler le – (fils noir).
Carte commande servomoteurs sur les ports P4 et P5 du BS-USB :
N’oubliez pas de câbler le – (fils noir).
TECHNOLOGIE
TP Programmation 1
TP H
3ème …
Page 5 sur 30
Nom : ………………………………… Prénom : …………………………
Date……/………/…….
Servomoteurs sur la carte commande servomoteurs :
Attention au sens (- à droite)
Branchements des alimentations :
Alimentation de la carte commande servomoteurs :
Branchez le +6V et
le – sur la carte d’alimentation.
TECHNOLOGIE
TP Programmation 1
TP H
3ème …
Page 6 sur 30
Nom : ………………………………… Prénom : …………………………
Date……/………/…….
Alimentation de la carte commande module BS-USB :
0V
0V
+5V
+5V
Alimentation de la carte puissance avec la batterie 6V :
+6V
0V
TECHNOLOGIE
TP Programmation 1
TP H
3ème …
Page 7 sur 30
Date……/………/…….
Nom : ………………………………… Prénom : …………………………
Vue d’ensemble du câblage :
Récapitulatif : affectation des ports du BS-USB
Ports configurés en
entrées
Ports configurés en
sorties
P0 : LDR
P4 : Servomoteur gauche
P1 : MS droit
P5 : Servomoteur droit
P2 : MS gauche
P6 : Del
P3 : Non utilisé
P7 : Buzzer
TECHNOLOGIE
TP Programmation 1
TP H
3ème …
Page 8 sur 30
Nom : ………………………………… Prénom : …………………………
Date……/………/…….
Tutoriel logiciel Basic Stamp Editor :

Branchez le BS-USB à un port USB de l’ordinateur à l’aide du cordon USB :

Lancez le logiciel Basic Stamp Editor :

Choisir le Stamp Mode BS1 :

Choisir le langage Basic 1.0 :
TECHNOLOGIE
TP Programmation 1
TP H
3ème …
Page 9 sur 30
Nom : ………………………………… Prénom : …………………………
Date……/………/…….
 Saisir votre programme dans la fenêtre principale :
 Transférez votre programme au microcontrôleur BS-USB :

Votre microcontrôleur est prêt à être testé : le débrancher de l’ordinateur, mettre le
robot sous tension et vérifiez votre programme.

N’oubliez pas d’enregistrer votre programme régulièrement.
TECHNOLOGIE
TP Programmation 1
TP H
3ème …
Page 10 sur 30
Nom : ………………………………… Prénom : …………………………
Date……/………/…….
Langage BASIC
Pour programmer votre robot, vous allez devoir utiliser un langage de programmation appelé BASIC. Voici une
description de ce langage.
Principe de programmation
Un programme en BASIC est une suite d'instructions en anglais que le compilateur traduit en langage
machine pour le microcontrôleur afin qu'il effectue certaines opérations.


Le compilateur BASIC exécute le programme ligne par ligne jusqu'à ce qu'il arrive à la fin ou
qu'il rencontre la commande END.
Il est aussi possible d'écrire un programme comportant plusieurs sous-programmes qui seront
appelés par le programme principal pour réagir à des conditions.
Ces types de programmation sont appelés linéaires et conditionnels. Il faudra définir le type de
programmation d'après le cahier des charges du robot.
L'utilisation d'un diagramme permet d'élaborer un programme plus facilement, voici un exemple de
programmation linéaire :
SYMBOL resultat = W0
SYMBOL valeur_a = W1
SYMBOL valeur_b = W2
valeur_a = 5
valeur_b = 8
resultat = valeur_a + valeur_b
DEBUG resultat
END
TECHNOLOGIE
TP Programmation 1
TP H
3ème …
Page 11 sur 30
Nom : ………………………………… Prénom : …………………………
Date……/………/…….
Et voici un exemple de programmation conditionnelle :
INPUT 1
OUTPUT 2
lecture:
IF PIN1 = 1 THEN allume
GOTO eteint
allume:
HIGH 2
GOTO lecture
eteint:
LOW 2
GOTO lecture
Voici, à titre d'exemple, la signification des symboles utilisés pour réaliser ces diagrammes :
TECHNOLOGIE
TP Programmation 1
TP H
3ème …
Page 12 sur 30
Nom : ………………………………… Prénom : …………………………
Date……/………/…….
Exemples de programmes :
I - Détection d’un contact (micro switch)
Micro switch
Le schéma ci-dessous vous montre comment câbler le capteur au BASIC Stamp I. Le fonctionnement est simple
* Le port du microcontrôleur est configuré en entrée, c'est-à-dire qu'il va lire une
P1 ou
information.
P2
* Tant que le bouton poussoir n'est pas actionné, le port est relié au 5V et le microcontrôleur
lit un état haut (1).
* Dès que l'on actionne le bouton poussoir, le port est relié au 0V et le microcontrôleur lit un
état bas (0)
Pour programmer une réaction du robot en fonction du changement d'état, il suffit d'écrire le programme
suivant :
INPUT 1
=> configure le port 1 en entrée (pour la lecture)
lecture:
=> sous-programme lecture
IF PIN1=0 THEN message
=> si le port 1 est à l'état bas (0) alors va au sous-programme message
GOTO lecture
=> sinon va au sous-programme lecture
message:
=> sous-programme message
DEBUG «bouton poussoir appuyé»
=> affiche à l'écran le message "bouton poussoir appuyé"
GOTO lecture
=> va au sous-programme lecture
TECHNOLOGIE
TP Programmation 1
TP H
3ème …
Page 13 sur 30
Nom : ………………………………… Prénom : …………………………
Date……/………/…….
II - Utilisation d'une photorésistance (LDR)
Les photorésistances ont différents diamètres et différentes valeurs mais leur fonctionnement est identique :
leur valeur ohmique diminue en même temps que la luminosité.
LDR diamètre 5 mm
Fonctionnement :
Le port du microcontrôleur est utilisé en entrée analogique, c'est-à-dire qu'au lieu
de lire 2 états (0 ou 1), il peut lire des valeurs comprises entre 0 et 255.
Le microcontrôleur mesure le temps de décharge du condensateur au travers de la
photorésistance et convertit cette mesure en une valeur comprise entre 0 et 255.
Si la luminosité diminue, la valeur de la LDR diminue ainsi que le temps de décharge.
La valeur convertie sera modifiée en conséquence.
TECHNOLOGIE
TP Programmation 1
TP H
3ème …
Page 14 sur 30
Nom : ………………………………… Prénom : …………………………
Date……/………/…….
Il ne reste plus qu'à écrire le programme suivant pour tester le circuit :
SYMBOL val=b0
=> réserve un espace en mémoire pour stocker les valeurs lues
SYMBOL ech=33
=>
detecte_lum:
=> sous-programme detecte_lum
POT 0,ech,val IF val>200 then msg1
lit sur le port 0 et stocke la valeur dans "val"
=> si la valeur est supérieure à 200 alors va à msg1
IF val<200 AND val>100 then msg2
=> si la valeur est comprise entre 100 et 200 alors va à msg2
IF val<100 then msg3
=> si la valeur est inférieure à 100 alors va à msg3
GOTO detecte
=> sinon va au sous-programme detecte
msg1:
=> sous-programme msg1
DEBUG «trop lumineux»
=> affiche à l'écran le message "trop lumineux"
GOTO detecte
=> va au sous-programme detecte
msg2:
=> sous-programme msg2
DEBUG «lumière agréable»
=> affiche à l'écran le message "lumière agréable"
GOTO detecte
=> va au sous-programme detecte
msg3:
=> sous-programme msg3
DEBUG «trop sombre»
=> affiche à l'écran le message "trop sombre"
GOTO detecte
=> va au sous-programme detecte
déclare que la variable "ech" contient 33 (valeur de l'échelle de
lecture à étalonner avant de lancer le programme, voir plus bas)
Après avoir téléchargé le programme, si vous passez la main devant la LDR, les différents messages doivent
apparaître à l'écran.
Etalonnage du port lors d'une lecture analogique
La valeur “ECH” est définie à l’étalonnage du montage.
Pour cela, reliez votre capteur au microcontrôleur, connectez celui-ci au PC grâce au câble de liaison, lancez
l’éditeur BASIC (stamp.exe) et appuyez ALT+P et sélectionnez le port connecté au capteur.
Dans la fenêtre qui apparaît, vous devez voir une valeur SCALE. Si vous le pouvez, réglez votre montage pour
que cette valeur soit la plus basse possible. Appuyez ensuite sur la barre espace, agissez sur votre montage et
regardez le chiffre VALUE changer suivant vos actions. Ce sont ces valeurs que vous devez utiliser dans votre
programme pour créer vos conditions (IF...THEN...).
TECHNOLOGIE
TP Programmation 1
TP H
3ème …
Page 15 sur 30
Nom : ………………………………… Prénom : …………………………
Date……/………/…….
III - Utilisation d'un servomoteur
Cette option a été choisie dès les premiers prototypes ROBOTEK pour sa simplicité de mise en œuvre et
d'utilisation. En effet, un servo de modélisme contient un système de pignonerie qui, après une petite
modification, se transforme en réducteur de vitesse de très bonne facture.
De plus, le BASIC Stamp I est capable de fournir une impulsion sur ses ports, grâce à l'instruction PULSOUT,
ce qui permet de modifier la vitesse et le sens de rotation du servo par une simple ligne de commande.
Le servo comporte une partie électronique qui interprète le signal
électrique que lui envoie le BASIC Stamp.
Après avoir effectué la modification décrite sur cette page, vous
pourrez envoyer une impulsion au servo pour tester son
comportement. Si cette impulsion est de 1 milliseconde, le moteur
tourne à pleine vitesse dans un sens (environ 50 tr/min, ce qui est
déjà pas mal). Si elle est de 2 millisecondes, il tourne à pleine vitesse
dans l'autre sens.
En envoyant une impulsion de 1,5 ms, si votre servo est bien calibré, il
doit s'arrêter. Des valeurs approchant 1,5 ms vous permettront de
ralentir le moteur dans un sens ou dans l'autre.
Pour relier un ou plusieurs servos au microcontrôleur, il vous faudra fabriquer un circuit comportant une
alimentation séparée. Celle-ci pourra être composée d'un pack de 4 accus type R06 puisque les servos doivent
être alimentés entre 5V et 6V.
Le schéma ci-contre vous montre comment connecté un servo au port du
BASIC Stamp I.
Important : Pensez à relier la masse (0V) de votre pack d'accus avec la
masse du microcontrôleur sinon vous risquez d'avoir des comportements
incohérents du servo.
P4 ou P5
TECHNOLOGIE
TP Programmation 1
TP H
3ème …
Page 16 sur 30
Date……/………/…….
Nom : ………………………………… Prénom : …………………………
Il ne reste plus qu'à télécharger le programme suivant pour faire tourner le servo :
debut:
pulsout 4,100
pause 20
goto debut
=>
=>
=>
=>
sous-programme debut
envoie une impulsion de 1000 µs (100 x 10 µs) sur le port 4
fait une pause de 20 ms (obligatoire pour la clarté du signal)
va au sous-programme debut
=>
=>
=>
=>
sous-programme debut
envoie une impulsion de 2000 µs (200 x 10 µs) sur le port 4
fait une pause de 20 ms (obligatoire pour la clarté du signal)
va au sous-programme debut
Et pour l'autre sens :
debut:
pulsout 4,200
pause 20
goto debut
IV - Utilisation d'une DEL
Les DEL sont des composants peu onéreux et peu gourmand en énergie, elles sont, en plus relativement faciles à
mettre en œuvre avec le BASIC Stamp.
Le schéma et le fonctionnement sont très simples :
Lorsqu'ils sont configurés en sortie (OUTPUT), les ports du microcontrôleur peuvent avoir 2 états : soit haut
(5V), soit bas (0V).
Si vous connectez une DEL avec sa résistance de protection en série comme
sur le schéma ci-contre, il faut, pour allumer la DEL, que le port soit au niveau
haut.
Pour tester ce circuit, il faut taper le programme suivant :
output 6
clignote:
high 6
pause 1000
low 6
pause 500
goto clignote
=>
=>
=>
=>
=>
=>
=>
configure le port 6 en sortie
sous-programme clignote
met le port 6 à l'état haut
fait une pause d'une seconde
met le port 6 à l'état bas
fait une pause d'une demi-seconde
va au sous-programme clignote
P6
TECHNOLOGIE
TP Programmation 1
TP H
3ème …
Page 17 sur 30
Date……/………/…….
Nom : ………………………………… Prénom : …………………………
V - Utilisation d'un buzzer
Les buzzers piezo sont simples à mettre en œuvre et souvent bon marché. Les critères de choix sont : le prix,
l'encombrement et la tension. Dans notre cas, nous avons choisi un buzzer 5V.
Le schéma ci-dessous vous montre comment connecter votre circuit au microcontrôleur.
P7
Grâce à la commande SOUND, le BASIC Stamp peut envoyer une tension
modulée sur un de ses ports et produire ainsi du son.
Pour émettre une mélodie, il faut taper le programme suivant :
sound 7, (20,50,100,50,20,50)
=> emet 3 notes (20,100 et 20) d'une durée d'une demi-seconde (50)
Un autre exemple :
symbol x=b0
for x = 0 to 127
sound 7, (x,50)
next x
=> réserve un espace en mémoire pour stocker une valeur
=> pour x allant de 0 à 127
=> emet la note x pour une durée d'une demi-seconde (50)
=> passe au x suivant
Si vous faites varier la valeur et la durée de chaque note, vous obtiendrez différentes mélodies qui pourront
devenir autant de codes pour dialoguer avec votre robot.
TECHNOLOGIE
TP Programmation 1
TP H
3ème …
Page 18 sur 30
Nom : ………………………………… Prénom : …………………………
Date……/………/…….
Syntaxe du BASIC
Le BASIC est un langage régit par des règles assez strictes afin que vous puissiez bien
"communiquer" avec le microcontrôleur.
Les commentaires
Les commentaires commencent avec une apostrophe (') et continue jusqu'à la fin de la ligne.
Exemple :
'ceci est un commentaire
ou
SOUND 0,(20,100,80,100) ' emet un son composé de 2 notes
Vous pouvez aussi utiliser la commande REM
Les constantes
Les constantes peuvent être déclarées de quatre manières : décimale, hexadécimale, binaire
et en ASCII. Les nombres décimaux sont tapés directement, les nombres hexadécimaux sont
précédés du signe dollar ($), les nombres binaires sont précédés du signe pourcentage (%) et
les valeurs ASCII sont encadrées par des guillemets (").
Exemples :
100
$64
%01100100
"A"
"Bonjour"
B1=B0^$AA
' 100 en décimal
' 64 en hexadécimal
'01100100 en binaire
' caractère 65 en ASCII
' équivalent à "B","o","n","j","o","u","r"
' opération OU exclusif sur B0 et AA hexadécimal
TECHNOLOGIE
TP Programmation 1
TP H
3ème …
Page 19 sur 30
Nom : ………………………………… Prénom : …………………………
Date……/………/…….
Les variables
Le BASIC Stamp réserve de la mémoire vive pour stocker des informations dans 56 variables.
Elles sont organisées de la façon suivante :
8 Mots
(words)
PORT, W0, W1, W2, W3, W4, W5, W6
16 octets
(bytes)
PINS, DIRS, (équivalents ensemble à PORT)
B0, B1, B2, B3, B4, B5, B6, B7, B8, B9, B10, B11, B12,
B13
32 bits
PIN0, PIN1, PIN2, PIN3, PIN4, PIN5, PIN6, PIN7
(équivalents ensemble à PINS)
DIR0, DIR1, DIR2, DIR3, DIR4, DIR5, DIR6, DIR7
(équivalents ensemble à DIRS)
BIT0, BIT1, BIT2, BIT3, BIT4, BIT5, BIT6, BIT7
(équivalents ensemble à B0)
BIT8, BIT9, BIT10, BIT11, BIT12, BIT13, BIT14,
BIT15 (équivalents ensemble à B1)
Les mots peuvent contenir des valeurs comprises entre 0 et 65635
Les octets peuvent contenir des valeurs comprises entre 0 et 255
Les bits peuvent contenir 0 ou 1 (FALSE ou TRUE)
Les symboles
Des constantes peuvent être assignées aux symboles, des noms pour des variables et des
adresses de sous-programmes. Les constantes et les noms de variables sont assignés en
mettant le signe égal (=) après le nom du symbole suivi de la constante ou de la variable. Les
adresses de sous-programme sont assignées en mettant deux points (:) après le symbole.
Exemples :
SYMBOL sortie= PIN0
SYMBOL compteur =
50
boucle:
...
goto boucle
' le mot "sortie" correspond au port 0
' le mot "compteur" correspond à la valeur 50
' le mot "boucle" est une adresse de sous-programme
qui peut être appelée au cours du programme pour
rediriger
' l'exécution
TECHNOLOGIE
TP Programmation 1
TP H
3ème …
Page 20 sur 30
Nom : ………………………………… Prénom : …………………………
Date……/………/…….
Format
Le compilateur BASIC exécute le programme ligne par ligne mais il est possible d'écrire
plusieurs commandes sur la même ligne en les séparant par deux points (:).
Exemples :
SYMBOL sortie=PIN0 : SYMBOL compteur = 50
sonnerie: SOUND 0,(10,50,90,50,10,50) : RETURN
Vous trouverez ci-dessous la liste non exhaustive des
instructions du BASIC.
DEBUG
cls, "texte", cr, var, $var, %var, #var, #$var, #%var
Cette instruction affiche des informations dans une fenêtre de test à chaque fois que le programme la
rencontre durant son exécution.


Du texte peut être affiché mais doit être inscrit entre 2 guillemets. De plus, il est possible d'effacer
l'écran avec la commande cls et de sauter à la ligne avec la commande cr.
Des variables peuvent être affichées avec leur contenu en donnant simplement leur nom. Le format
décimal est l'affichage par défaut mais il est possible d'afficher :
1. au format hexadécimal si le signe $ précède le nom de la variable
2. au format binaire si le signe % précède le nom de la variable
Il est possible de n'afficher que la valeur de la variable sans son nom si le signe # précède le nom de la
variable
Exemple :
SYMBOL compteur = W0
SYMBOL x = W1
FOR x = 0 TO 100
compteur = compteur+1
DEBUG compteur
NEXT x
définit la variable "compteur"
définit la variable "x"
pour x allant de 0 à 100
ajoute 1 à la variable "compteur"
affiche le nom et le contenu de la variable "compteur"
passe au x suivant
TECHNOLOGIE
TP Programmation 1
TP H
3ème …
EEPROM
Page 21 sur 30
Nom : ………………………………… Prénom : …………………………
Date……/………/…….
{position},(donnée,donnée...)
Cette commande permet de stocker des données dans l'EEPROM (la mémoire) du microcontrôleur avant d'y
télécharger le programme. Ce n'est pas une instruction mais plutôt un mode de téléchargement qui permet de
stocker des données dans des espaces mémoire libres.


Position est une constante (optionnelle) comprise entre 0 et 255 qui spécifie où stocker les données
dans l'EEPROM. Si aucune position n'est spécifiée, le stockage continue là où il a été arrêté. Si aucune
position n'a été spécifiée à l'initialisation, le stockage commence à 0. Le stockage des données
s'effectue dans l'ordre croissant à partir de 0 alors que le stockage du programme s'effectue dans
l'ordre décroissant à partir de 255.
Donnée(s) sont des constantes (0 à 255) qui seront stockées dans l'EEPROM.
Exemple :
EEPROM 0,("a","g","a","d","r","f")
SYMBOL dep = W0
SYMBOL pos = W1
lecture:
READ pos,dep
IF dep = "a" THEN avance
IF dep = "r" THEN recule
IF dep = "d" THEN droite
IF dep = "g" THEN gauche
IF dep = "f" THEN END
pos = pos+1
GOTO lecture
avance:
...
recule:
...
etc...
stocke les valeurs dans l'EEPROM à la position 0
définit la variable "dep"
définit la variable "pos"
sous-programme "lecture"
lit l'EEPROM à la position "pos" et range la valeur dans "dep"
si "dep" est égale à "a" alors va à "avance"
si "dep" est égale à "r" alors va à "recule"
si "dep" est égale à "d" alors va à "droite"
si "dep" est égale à "g" alors va à "gauche"
si "dep" est égale à "f" alors fin du programme
ajoute 1 à la variable "pos"
va à "lecture"
sous-programme "avance"
sous-programme "recule"
etc...
TECHNOLOGIE
TP Programmation 1
TP H
3ème …
Page 22 sur 30
Nom : ………………………………… Prénom : …………………………
Date……/………/…….
END
Cette commande permet d'arrêter le programme et de mettre le microcontrôleur en veille. Sa consommation est
réduite au minimum (20 µA).
Exemple :
EEPROM 0,("a","g","a","d","r","f")
SYMBOL dep = W0
SYMBOL pos = W1
lecture:
READ pos,dep
stocke les valeurs dans l'EEPROM à la position 0
définit la variable "dep"
définit la variable "pos"
sous-programme "lecture"
lit l'EEPROM à la position "pos" et range la valeur dans "dep"
si "dep" est égale à "a" alors va à "avance"
si "dep" est égale à "r" alors va à "recule"
si "dep" est égale à "d" alors va à "droite"
si "dep" est égale à "g" alors va à "gauche"
si "dep" est égale à "f" alors fin du programme
ajoute 1 à la variable "pos"
va à "lecture"
sous-programme "avance"
IF dep = "a" THEN avance
IF dep = "r" THEN recule
IF dep = "d" THEN droite
IF dep = "g" THEN gauche
IF dep = "f" THEN END
pos = pos+1
GOTO lecture
avance:
...
recule:
...
etc...
FOR variable=début TO
NEXT {variable}
sous-programme "recule"
etc...
fin
{STEP
{-}incrément}
Cette instruction permet de créer une boucle d'exécution de laquelle le programme ne sortira que si le
comptage est terminé.




variable est une variable utilisée en tant que compteur
début est la valeur initiale de la variable
fin est la valeur finale de la variable
incrément est une valeur optionnelle qui permet de changer le pas de la boucle qui est par défaut de +1.
Si incrément est précédé par le signe "-" et si début est plus grand que fin
TECHNOLOGIE
TP Programmation 1
TP H
3ème …
GOSUB
Page 23 sur 30
Nom : ………………………………… Prénom : …………………………
Date……/………/…….
adresse
...
RETURN
Cette instruction redirige l'exécution du programme vers un sous-programme et lorsqu'il est effectué, retourne
au programme d'origine. Jusqu'à 16 GOSUB sont autorisés dans un programme et ils peuvent être imbriqués
jusqu'à 4 niveaux.

adresse est le nom du sous-programme
Exemple :
OUTPUT 0
OUTPUT 1
configure le port 0 en sortie
configure le port 1en sortie
test:
GOSUB allume
GOSUB sonne
GOTO test
sous-programme "test"
va au sous-programme "allume"
va au sous-programme "sonne"
va au sous-programme "test"
allume:
HIGH 1
PAUSE 1000
LOW 1
RETURN
sous-programme "allume"
met le port 1 à l'état haut
fait une pause de 1000 ms (1 seconde)
met le port 1 à l'état bas
retourne au sous-programme "test"
sonne:
SOUND 0,(20,100,80,100)
RETURN
sous-programme "sonne"
emet un son sur le port 0 composé de 2 notes
retourne au sous-programme "test"
GOTO
adresse
Cette instruction redirige l'exécution du programme vers un sous-programme mais n'attend aucun retour.

adresse est le nom du sous-programme
Exemple :
OUTPUT 0
OUTPUT 1
configure le port 0 en sortie
configure le port 1 en sortie
test:
GOSUB allume
GOSUB sonne
GOTO test
sous-programme "test"
va au sous-programme "allume"
va au sous-programme "sonne"
va au sous-programme "test"
allume:
HIGH 1
PAUSE 1000
LOW 1
RETURN
sous-programme "allume"
met le port 1 à l'état haut
fait une pause de 1000 ms (1 seconde)
met le port 1 à l'état bas
retourne au sous-programme "test"
sonne:
SOUND 0,(20,100,80,100)
RETURN
sous-programme "sonne"
emet un son sur le port 0 composé de 2 notes
retourne au sous-programme "test"
TECHNOLOGIE
TP Programmation 1
TP H
3ème …
HIGH
Page 24 sur 30
Nom : ………………………………… Prénom : …………………………
Date……/………/…….
port
Cette instruction permet de mettre un port, configuré en sortie, à l'état haut (+5V).

port est une constante ou une variable comprise entre 0 et 7 qui spécifie quel port Entrée/Sortie
utiliser
Exemple :
OUTPUT 0
OUTPUT 1
configure le port 0 en sortie
configure le port 1en sortie
test:
GOSUB allume
GOSUB sonne
GOTO test
sous-programme "test"
va au sous-programme "allume"
va au sous-programme "sonne"
va au sous-programme "test"
allume:
HIGH 1
PAUSE 1000
LOW 1
RETURN
sous-programme "allume"
met le port 1 à l'état haut
fait une pause de 1000 ms (1 seconde)
met le port 1 à l'état bas
retourne au sous-programme "test"
sonne:
SOUND 0,(20,100,80,100)
RETURN
sous-programme "sonne"
emet un son sur le port 0 composé de 2 notes
retourne au sous-programme "test"
IF
variable ?? valeur {AND/OR variable ?? valeur...}
THEN
adresse
Cette instruction permet d'effectuer une comparaison sur une variable et de rediriger l'exécution du
programme en conséquence. ?? peut être remplacé par =, <, >, =>, =<, <>.



variable est une variable qui sera comparée à valeur
valeur est une variable ou une constante
adresse est le nom du sous-programme où aller si la condition est vraie.
Exemple :
EEPROM 0,("a","g","a","d","r","f")
SYMBOL dep = W0
SYMBOL pos = W1
lecture:
READ pos,dep
IF dep = "a" THEN avance
IF dep = "r" THEN recule
IF dep = "d" THEN droite
IF dep = "g" THEN gauche
IF dep = "f" THEN END
pos = pos+1
GOTO lecture
avance:
...
recule:
...
stocke les valeurs dans l'EEPROM à la position 0
définit la variable "dep"
définit la variable "pos"
sous-programme "lecture"
lit l'EEPROM à la position "pos" et range la valeur dans "dep"
si "dep" est égale à "a" alors va à "avance"
si "dep" est égale à "r" alors va à "recule"
si "dep" est égale à "d" alors va à "droite"
si "dep" est égale à "g" alors va à "gauche"
si "dep" est égale à "f" alors fin du programme
ajoute 1 à la variable "pos"
va à "lecture"
sous-programme "avance"
sous-programme "recule"
etc...
TECHNOLOGIE
TP Programmation 1
TP H
3ème …
INPUT
Page 25 sur 30
Nom : ………………………………… Prénom : …………………………
Date……/………/…….
port
Cette instruction permet de configurer un port en entrée.

port est une constante ou une variable comprise entre 0 et 7 qui spécifie quel port Entrée/Sortie
utiliser
Exemple :
INPUT 0
OUTPUT 1
configure le port 0 en entrée
configure le port 1en sortie
boucle :
IF PIN0=1 THEN allume
HIGH 1
GOTO boucle
sous-programme "boucle"
si l'entrée 0 est au niveau haut alors va à "allume"
sinon met le port 1 à l'état haut
va au sous-programme "boucle"
allume :
LOW 1
GOTO boucle
sous-programme "allume"
met le port 1 à l'état bas
retourne au sous-programme "boucle"
LOW
port
Cette instruction permet de mettre un port, configuré en sortie, à l'état bas (0V).

port est une constante ou une variable comprise entre 0 et 7 qui spécifie quel port Entrée/Sortie
utiliser
Exemple :
OUTPUT 0
OUTPUT 1
configure le port 0 en sortie
configure le port 1en sortie
test:
GOSUB allume
GOSUB sonne
GOTO test
sous-programme "test"
va au sous-programme "allume"
va au sous-programme "sonne"
va au sous-programme "test"
allume:
HIGH 1
PAUSE 1000
LOW 1
RETURN
sous-programme "allume"
met le port 1 à l'état haut
fait une pause de 1000 ms (1 seconde)
met le port 1 à l'état bas
retourne au sous-programme "test"
sonne:
SOUND 0,(20,100,80,100)
RETURN
sous-programme "sonne"
emet un son sur le port 0 composé de 2 notes
retourne au sous-programme "test"
TECHNOLOGIE
TP Programmation 1
TP H
3ème …
OUTPUT
Page 26 sur 30
Nom : ………………………………… Prénom : …………………………
Date……/………/…….
port
Cette instruction permet de configurer un port en sortie.

port est une constante ou une variable comprise entre 0 et 7 qui spécifie quel port Entrée/Sortie
utiliser
Exemple :
INPUT 0
OUTPUT 1
configure le port 0 en entrée
configure le port 1en sortie
boucle :
IF PIN0=1 THEN allume
HIGH 1
GOTO boucle
sous-programme "boucle"
si l'entrée 0 est au niveau haut alors va à "allume"
sinon met le port 1 à l'état haut
va au sous-programme "boucle"
allume :
LOW 1
GOTO boucle
sous-programme "allume"
met le port 1 à l'état bas
retourne au sous-programme "boucle"
PAUSE
temps
Cette instruction suspend l'exécution du programme pendant un intervalle de temps défini.

temps est une constante ou une variable, dont la valeur est comprise entre 0 et 65535, qui spécifie
l'intervalle de temps en millisecondes.
Exemple :
OUTPUT 0
OUTPUT 1
configure le port 0 en sortie
configure le port 1en sortie
allume:
HIGH 1
PAUSE 1000
LOW 1
RETURN
sous-programme "allume"
met le port 1 à l'état haut
fait une pause de 1000 ms (1 seconde)
met le port 1 à l'état bas
retourne au sous-programme "test"
sonne:
SOUND 0,(20,100,80,100)
RETURN
sous-programme "sonne"
emet un son sur le port 0 composé de 2 notes
retourne au sous-programme "test"
TECHNOLOGIE
TP Programmation 1
TP H
3ème …
POT
Page 27 sur 30
Nom : ………………………………… Prénom : …………………………
Date……/………/…….
port,echelle,variable
Cette instruction permet de mesurer une résistance variable comprise entre 5 et 50 kOhms comme un
potentiomètre, une photorésistance ou une thermistance. Le port doit être connecté d'un côté de la résistance
qui est connectée de l'autre à un condensateur polyester de 100nF lui-même connecté à la masse.
Le Basic Stamp lit la valeur de la résistance en mesurant le temps mis par le condensateur pour se décharger au
travers de celle-ci.



Port est une variable ou une constante comprise entre 0 et 7 qui spécifie quel port Entrée/Sortie
utiliser.
Echelle est une variable ou une constante comprise entre 0 et 255 qui met à l'échelle le résultat de la
mesure. Le résultat est multiplié par (echelle/256) donc une échelle de 128 réduira la zone de mesure de
50%. Pour étalonner le Basic Stamp avec une résistance particulière et trouver la meilleure échelle,
utiliser l'option ALT+P décrite ci-dessous.
Variable est une variable d'un octet qui contient le résultat de la mesure.
Etalonnage du Basic Stamp :
1. Pour trouver la meilleure valeur d'échelle, connectez la résistance au Basic Stamp et reliez le Basic
Stamp au PC.
2. Appuyez sur ALT+P lorsque vous avez lancé l'éditeur BASIC. Une fenêtre apparaît.
3. La fenêtre vous demande d'indiquer quel port est relié à la résistance. Sélectionnez le port.
4. l'éditeur télécharge un petit programme dans le Basic Stamp (celui-ci effacera tout programme en
mémoire dans le Basic Stamp).
5. Une autre fenêtre apparaît affichant deux chiffres : Scale (échelle) et Value (valeur). Ajustez votre
résistance pour obtenir le chiffre le plus bas possible (Scale) si cela est possible sur votre montage,
sinon gardez ce chiffre en mémoire pour l'indiquer dans votre programme.
Vous pouvez vérifier le fonctionnement de votre montage avec cette valeur en appuyant sur la barre
espace. Le Basic Stamp bloque alors la valeur d'échelle affichée et passe en lecture. Si l'échelle est
bonne, vous devez pouvoir ajuster votre résistance et lire des valeurs de 0 à 255, sinon recommencez
l'opération en appuyant sur la barre espace.
Exemple :
SYMBOL ech=255
SYMBOL val=b0
définit la constante "ech"
définit la variable "val"
lecture:
POT 0,ech,val
IF val<40 THEN sonne
GOTO lecture
programme principal "lecture"
lit la valeur de la résistance sur le port 0 et range le résultat dans la variable
si la valeur est inférieure à 40 alors va à "sonne"
sinon va au programme "lecture"
sonne:
SOUND 1,(10,100)
GOTO lecture
sous-programme "sonne"
emet un son d'une durée de 100 ms sur le port 1
va au programme "lecture"
TECHNOLOGIE
TP Programmation 1
TP H
3ème …
PULSOUT
Page 28 sur 30
Nom : ………………………………… Prénom : …………………………
Date……/………/…….
port, temps
Cette instruction permet d'émettre une impulsion en inversant l'état d'un port pendant un temps défini.


port est une constante ou une variable comprise entre 0 et 7 qui spécifie quel port Entrée/Sortie
utiliser
temps est une constante ou une variable, dont la valeur est comprise entre 0 et 65535, qui spécifie la
période de temps par unité de 10 microsecondes.
Exemple :
INPUT 0
SYMBOL roue_droite=1
SYMBOL roue_gauche=2
SYMBOL x=W0
configure le port 0 en entrée
affecte la valeur 1 à la constante roue_droite
affecte la valeur 2 à la constante roue_gauche
déclare la variable x
debut:
IF PIN0=1 THEN recule
GOSUB avance
GOTO debut
sous-programme "debut"
si le port 0 est à l'état 1 alors va à "recule"
sinon va au sous-programme "avance"
va au sous-programme début
avance:
FOR x=0 TO 100
PULSOUT roue_droite,100
PULSOUT roue_gauche,200
PAUSE 20
NEXT x
RETURN
sous-programme "avance"
pour x allant de 0 à 100
envoie une impulsion de 1000 µs sur le port 1
envoie une impulsion de 2000 µs sur le port 2
fait une pause de 20 ms
x suivant
retourne au sous-programme "debut"
recule:
FOR x=0 TO 100
PULSOUT roue_droite,200
PULSOUT roue_gauche,100
PAUSE 20
NEXT x
RETURN
sous-programme "recule"
pour x allant de 0 à 100
envoie une impulsion de 2000 µs sur le port 1
envoie une impulsion de 1000 µs sur le port 2
fait une pause de 20 ms
x suivant
retourne au sous-programme "debut"
TECHNOLOGIE
TP Programmation 1
TP H
3ème …
READ
Page 29 sur 30
Nom : ………………………………… Prénom : …………………………
Date……/………/…….
position,variable
Cette commande permet de lire des données stockées dans l'EEPROM (la mémoire) du microcontrôleur et les
range dans des variables.


Position est une variable ou une constante comprise entre 0 et 255 qui spécifie la position de la donnée
dans l'EEPROM. Le stockage des données s'effectue dans l'ordre croissant à partir de 0 alors que le
stockage du programme s'effectue dans l'ordre décroissant à partir de 255.
Variable est une variable qui reçoit la donnée.
Exemple :
EEPROM 0,("a","g","a","d","r","f")
SYMBOL dep = W0
SYMBOL pos = W1
lecture:
READ pos,dep
IF dep = "a" THEN avance
IF dep = "r" THEN recule
IF dep = "d" THEN droite
IF dep = "g" THEN gauche
IF dep = "f" THEN END
pos = pos+1
GOTO lecture
avance:
...
recule:
...
etc...
stocke les valeurs dans l'EEPROM à la position 0
définit la variable "dep"
définit la variable "pos"
sous-programme "lecture"
lit l'EEPROM à la position "pos" et range la valeur dans "dep"
si "dep" est égale à "a" alors va à "avance"
si "dep" est égale à "r" alors va à "recule"
si "dep" est égale à "d" alors va à "droite"
si "dep" est égale à "g" alors va à "gauche"
si "dep" est égale à "f" alors fin du programme
ajoute 1 à la variable "pos"
va à "lecture"
sous-programme "avance"
sous-programme "recule"
etc...
TECHNOLOGIE
TP Programmation 1
TP H
3ème …
SOUND
Page 30 sur 30
Nom : ………………………………… Prénom : …………………………
Date……/………/…….
port,(note,durée,note,durée,...)
Cette commande joue des notes de musique pendant des durées déterminées. Le port utilisé doit être connecté
au plus d'un condensateur de 10µF dont le moins est relié à un buzzer piezzo dont l'autre borne est reliée à la
masse.



Port est une variable ou une constante comprise entre 0 et 7 qui spécifie quel port Entrée/Sortie
utiliser.
Note(s) sont des variables ou des constantes comprises entre 0 et 255 qui spécifient le type et la
fréquence du son. La note 0 correspond au silence. Les notes 1 à 127 sont des tons ascendants. Les notes
128 à 255 sont des tons ascendants avec un grésillement.
Durée(s) sont des variables ou des constantes comprises entre 0 et 255 qui spécifient la durée des
notes.
Exemple :
OUTPUT 0
OUTPUT 1
configure le port 0 en sortie
configure le port 1en sortie
test:
GOSUB allume
GOSUB sonne
GOTO test
sous-programme "test"
va au sous-programme "allume"
va au sous-programme "sonne"
va au sous-programme "test"
allume:
HIGH 1
PAUSE 1000
LOW 1
RETURN
sous-programme "allume"
met le port 1 à l'état haut
fait une pause de 1000 ms (1 seconde)
met le port 1 à l'état bas
retourne au sous-programme "test"
sonne:
SOUND 0,(20,100,80,100)
RETURN
sous-programme "sonne"
emet un son sur le port 0 composé de 2 notes
retourne au sous-programme "test"
SYMBOL
nom_symbole=valeur
Cette instruction assigne une valeur à un nouveau nom de symbole.


nom_symbole est une chaine de caractères qui doit commencer par une lettre alphabétique mais qui peut
aussi contenir ensuite des chiffres.
valeur est une variable ou une constante dont nom_symbole sera une alternative dans le programme.
Exemple :
SYMBOL compteur = W0
SYMBOL x = W1
FOR x = 0 TO 100
compteur = compteur+1
DEBUG compteur
NEXT x
définit la variable "compteur"
définit la variable "x"
pour x allant de 0 à 100
ajoute 1 à la variable "compteur"
affiche le nom et le contenu de la variable "compteur"
passe au x suivant

Documents pareils