Variables

Une variable est un espace dans le mémoire du microcontrôleur dans lequel ont peut enregistré temporairement une valeur. Pour utiliser une variable, il faut dans un premier temps la déclarer.

[nom de la variable] VAR [type de variable]

Exemple : compteur VAR Byte

Type de variables Étendue Nombre de bits
Bit 0 à 1
1
Nib 0 à 15
4
Byte 0 à 255
8
Word 0 à 65535
16

Pour affecter une valeur à une variable on utilise l'affectation.
[variable] = [valeur] ou [expression]

La commande DEBUG ? [variable] affiche le contenu de la variable.

Dans l'éditeur de code BasicStamp, écrivez les codes suivants :

Exemple 1

code

' {$STAMP BS2}
' {$PBASIC 2.5}


compteur VAR ByteESPACE'déclaration de la variable compteur
compteur = 10ESPACE'affecte la valeur 10 à la variable compteur
DEBUG ? compteurESPACE'affiche le contenu de la variable compteur
compteur = 15ESPACE'affecte la valeur 15 à la variable compteur
DEBUG ? compteurESPACE'affiche le contenu de la variable compteur
compteur = compteur + 1ESPACE'ajoute 1 à la variable compteur
DEBUG ? compteurESPACE'affiche le contenu de la variable compteur
ENDESPACE

code

Opérateurs

Opérations Opérateurs Exemples  
addition
+

a = 1
a = a + 10

(a = 11)
soustraction
-
a = 5 - 3 (a = 2)
multiplcation
*
b = 2
c = b + 1
a = b * c
(b=2)
(c=3)
(a=6)
division
/
a = 4 / 2 (a=2)
reste du division
//
a = 4/3 (a=1 car 4/3=1 reste 1)

Exemple 2

code

' {$STAMP BS2}
' {$PBASIC 2.5}


compteur VAR ByteESPACE'déclaration de la variable compteur
compteur = 0ESPACE'affecte la valeur 0 à la variable compteur
DO
ESPACEDEBUG
? compteurESPACE'affiche le contenu de la variable compteur
ESPACEcompteur = compteur + 1ESPACE'ajoute 1 à la variable compteur
ESPACEPAUSE 500
LOOP

ENDESPACE

code

Structure de Sélection IF

Si la condition est vrai le bloc de code à l'intérieur de la structure du if est exécuté. Dans le cas contraire, si la condition est fausse, alors le bloc de code est sauté et l'exécution continue après le ENDIF.

Conditions :

  • égalité =
  • plus petit <
  • plus grand >
  • plus petit et égal <=
  • plus grans et égal >=
  • pas égale <>
IF <condition> THEN
ESPACE<bloc de code>
ENDIF

Exemple 3

code

' {$STAMP BS2}
' {$PBASIC 2.5}


compteur VAR ByteESPACE'déclaration de la variable compteur
compteur = 0ESPACE'affecte la valeur 0 à la variable compteur
DO
ESPACEDEBUG
? compteurESPACE'affiche le contenu de la variable compteur
ESPACEcompteur = compteur + 1ESPACE'ajoute 1 à la variable compteur
ESPACEPAUSE 500
ESPACEIF compteur>=10 THEN
ESPACEcompteur = 0
ESPACEENDIF
LOOP

ENDESPACE

code


Fonction random

La fonction Random génère un nombre aléatoire (au hasard) entre 0 et 65535. En réalité les nombes sont speudo-aléatoire car les nombres semble être au hasard mais en réalité sont générer à partir de la valeur du nombre initial.

Exécutez à plusieurs reprise le code ci-dessous et notez les nombres qui sont généré. Ensuite, changez la 2e ligne pour nombre=101 et notez les nombres affichés. Finalement faites de même pour une valeur initiale à 102.

code

' {$STAMP BS2}
' {$PBASIC 2.5}


nombre VAR Word ESPACE'déclaration de la variable nombre
nombre = 100 ESPACE'affecte la valeur 100 à la variable compteur
DO
ESPACERANDOM nombreESPACE' choisi un nombre entre 0 et 65535
ESPACEDEBUG DEC5 ? nombreESPACE'affiche le nombre avec 5 chiffres
ESPACEPAUSE 500
LOOP

ENDESPACE

code

Valeur initiale 100 101 102
Séquences ce nombres 31153
65232
45631
42824
18123
39391
57537
31564
39045
23598
53110
36601

Exemple : Pile ou face

code

' {$STAMP BS2}
' {$PBASIC 2.5}


nombre VAR Word ESPACE'déclaration de la variable nombre
milieu VAR Word
nombre = 100 ESPACE'affecte la valeur 100 à la variable compteur
DO
ESPACERANDOM nombreESPACE' choisi un nombre entre 0 et 65535
ESPACEmilieu = 65535 / 2
ESPACEIF nombre<milieu THEN
ESPACEDEBUG "pile" , CR
ESPACEELSE
ESPACEDEBUG "face" , CR
ESPACEENDIF
ESPACEPAUSE 500
LOOP

END

code

Exemple : Dé

Lorsqu'on lance un dé, il y a 6 nombres possible. D'un autre côté, la fonction Random génère un nombre entre 0 et 65535. Alors il faut diviser l'intervalle 0 à 65535 en 6 parties égales. On calcule 65535/6 ce qui donne 10992. Donc chaque intervalle donne 10992 nombres.
nombre intervale  
1 0 à 10991 0 + 10 992 = 10 992
2 10992 à 21913 10 992 + 10 992 = 21 914
3 21914 à 32905 21 914 + 10 992 = 32906
4 32906 à 43897 32906 + 10 992 = 43898
5 43898 à 54889 43898 + 10 992 = 54890
6 54890 à 65535 jusqu'à 65535


code

' {$STAMP BS2}
' {$PBASIC 2.5}


nombre VAR Word ESPACE'déclaration de la variable nombre
UnSixieme VAR Word
nombre = 100 ESPACE'affecte la valeur 100 à la variable compteur
DO
ESPACERANDOM nombreESPACE' choisi un nombre entre 0 et 65535
ESPACE
ESPACEIF nombre<10992 THEN
ESPACEDEBUG "un" , CR
ESPACEELSEIF nombre<21914 THEN
ESPACEDEBUG "deux" , CR
ESPACEELSEIF nombre<32906 THEN
ESPACEDEBUG "trois" , CR
ESPACEELSEIF nombre<43898 THEN
ESPACEDEBUG "quatre" , CR
ESPACEELSEIF nombre<54890 THEN
ESPACEDEBUG "cinq" , CR
ESPACEELSE
ESPACEDEBUG "six" , CR
ESPACEENDIF
ESPACEPAUSE 500
LOOP

END

code



Exercices

  1. Faites un programme qui choisi un nombre au hasard et affiche à l'écran l'une des 5 possibilités suivantes :
  • avance
  • recule
  • tourne à gauche
  • tourne à droite
  • ne bouge pas