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