Utiliser le dossier d'aide pour faire le travail de programmation.

Saisir le programme qui est dans la colonne de droite.

Écrire dans la colonne "action" ce que fait le robot.

Enregistrer chaque programme en le nommant EX suivi du numéro de l'exercice (Ex. : EX1)

EXERCICE 1

Action	Commentaires	Programme
	Le programme recommence sans fin avec le "goto"qui le renvoie au début	étiquette : marque un emplacement dans le programme avance: pulsout 0,100 pause 20 pulsout 1,200 pause 20 commande qui fait retourner à l'étiquette goto avance

EXERCICE 2

Ouvrir le programme précédent et le sauvegarder en changeant le nom.

Remplacer : pulsout 0,100 par pulsout 0,200 ; et pulsout 1,200 par pulsout 1,100

Action	Commentaires	Programme
	Pour changer le sens de rotation, il suffit changer les valeurs de la commande "pulsout" dans la boucle de commande. Le moteur droit est repéré par le chiffre " 0 " Le moteur gauche est repéré par le chiffre " 1 " La valeur 100 fait tourner le moteur dans le sens des aiguilles d'une montre La valeur 200 fait tourner le moteur dans le sens inverse.	avance: pulsout 0,200 pause 20 pulsout 1,100 pause 20 goto avance

EXERCICE 3

Mettre une apostrophe devant les lignes comme indiqué dans le programme ci-dessous.

Action	Commentaires	Programme
	L'apostrophe empêche l'exécution de la ligne	avance: pulsout 0,100 pause 20 ' pulsout 1,200 ' pause 20 goto avance

EXERCICE 4

Reprendre le même programme EX1 et effacer en ne gardant que les lignes ci-dessous.

Action	Commentaires	Programme
	Seul le moteur gauche (repère "1") est commandé.	avance: pulsout 1,200 pause 20 goto avance

EXERCICE 5

Reprendre le programme précédent EX4 et changer pulsout 1,200 en pulsout 1,100

Action	Commentaires	Programme
	Le sens du moteur a été inversé par rapport au programme EX4	avance: pulsout 1,100 pause 20 goto avance

EXERCICE 6

Saisir le programme ci-dessous

Action	Commentaires	Programme
	Boucle (for... next).	symbol x=b0 boucle : ici le programme la fera 20 fois for x=1 to 20 pulsout 0,100 pause 20 pulsout 1,200 pause 20 retourne au début de la boucle next x

EXERCICE 7

Que se passe-t-il si vous remplacez dans la ligne for x=1 to 20 par for x=1 to 100 ?

Action	Commentaires	Programme
	La boucle se fait 100 fois au lieu de 20	symbol x=b0 for x=1 to 100 pulsout 0,100 pause 20 pulsout 1,200 pause 20 next x

EXERCICE 8

Charger le programme EX6 et ajouter les lignes suivantes :

l'étiquette: "avance:"

la commande "pause 500"

la commande : "goto avance"

Action	Commentaires	Programme
	La boucle est exécutée, le robot fait une pause de 500 ms (½ seconde), puis le "goto" le renvoie au début et il recommence.	symbol x=b0 avance: for x=1 to 20 pulsout 0,100 pause 20 pulsout 1,200 pause 20 next x pause 500 goto avance

Programmation avec un contact arrière.

exercice 9

Que fait le robot après le chargement du programme ! ?

Qu’observez-vous lorsque vous appuyez et que vous relâchez le bouton poussoir ?

Faut-il toujours appuyer sur le contact pour faire fonctionner les moteurs ?

Action	Commentaires	Programme
	Le sous programme (avance) n'est exécuté que si l'interrupteur est à l'état 0 (appuyé)	OUTPUT 0 OUTPUT 1 INPUT 3 SYMBOL x=b0 ' ******* program me ******** test: IF PIN3=0 THEN avance goto test ' ---- sous-programme avance avance : pulsout 0,100 pause 15 pulsout 1,200 pause 15 goto test

exercice 10

Dans la ligne "IF PIN3=0 THEN avance", remplacer " PIN3=0 " par "PIN3=1 "

Que se passe-t-il ?

Qu’observez-vous lorsque vous appuyez et que vous relâchez le bouton poussoir ?

Action	Commentaires	Programme
	Dans la ligne : IF PIN3=0 THEN avance Si " PIN3=0 "est remplacé par par PIN3=1 le sous programme avance est toujours exécuté	UTPUT 0 OUTPUT 1 INPUT 3 SYMBOL x=b0 ' ******* programme ******** test: IF PIN3=1 THEN avance goto test ' ---- sous-programme avance avance : pulsout 0,100 pause 15 pulsout 1,200 pause 15 goto test

Programmation des servomoteurs avec les contacts avants

EXERCICE 11

Connecter le robot à l'ordinateur sans charger de programme. Allumer le robot

Au clavier, appuyer sur Alt + P puis choisir "pin 2"

Mesures de " scale " et des valeurs des capteurs :

Relever dans le tableau la valeur de scale de votre robot.

Appuyer ensuite sur la barre d’espace, puis agir sur les capteurs du montage (gauche, droit, les 2 en même temps).
Relever les valeurs dans le tableau..

Saisir le programme et le charger dans le robot. Qu’observez-vous à l'écran lorsque vous appuyez sur les différents capteurs ?

D’après la variable "val" que signifie la ligne IF val<220 AND val>200 then message1 ?

Action	Commentaires	Programme
Valeurs relevées Scale = Capteur gauche = Capteur droit = Les deux capteurs = La valeur « 45 » dans la ligne SYMBOL ech=45 est fonction des composants utilisés dans votre robot, il faut donc la mesurer en faisant ALT+P et en choisissant pin 2 Observation à l'écran : Si on appuie sur le capteur droit : Si on appuie sur le capteur gauche : Si on appuie sur le capteur droit et le gauche en même temps : debug est une commande qui permet de résoudre les problèmes de programmation en affichant à l'écran le résultat d"une commande. IF val<220 AND val>200 then message1	Indiquez la valeur mesurée avec votre robot SYMBOL ech=45 SYMBOL val=b0 detecte : POT 2,ech,val IF val<230 AND val>190 then message1 IF val<160 AND val>100 then message2 IF val<70 then message3 goto detecte message1: DEBUG " capteur droit " GOTO detecte message2: DEBUG " capteur gauche " GOTO detecte message3: DEBUG " 2 capteurs " GOTO détecte

Exercice 12

Modifier le programme précédent en ajoutant "DEBUG val" dans les sous-programmes "message1:, message2:, message3: "

Que se passe-t-il ?

Action	Commentaires	Programme
		... message1: DEBUG " capteur droit " DEBUG val GOTO detecte message2: DEBUG " capteur gauche " DEBUG val GOTO detecte message3: DEBUG " 2 capteurs " DEBUG val GOTO detecte ....

EXERCICE 13

Saisir le programme ci-dessous

Que se passe-t-il en appuyant sur :

l'interrupteur gauche.

l'interrupteur droit.

les 2 interrupteurs.

Que se passe-t-il si dans la ligne :
"IF val<230 AND val>190 then gauche_ar"
à la place de "then gauche_ar" on note "droit_ar" ?

Quelle est la modification à faire dans le programme pour que le robot recule plus longtemps ?

Action	Commentaires	Programme
		OUTPUT 0 'sortie servomoteur droit OUTPUT 1 'sortie servomoteur gauche INPUT 2 'entrée capteurs avant INPUT 3 'entrée capteur arrière SYMBOL ech=41 SYMBOL val=b0 'capteur avant SYMBOL x=w0 'incrémentation des boucles ' ******* PROGRAMME PRINCIPAL ********** detecte : POT 2,ech,val IF val<230 AND val>190 then gauche_ar IF val<160 AND val>100 then droit_ar IF val<70 then recule goto détecte ' ********** SOUS PROGRAMMES ************ gauche_ar: for x=1 to 25 pulsout 0,200 pause 20 next x goto detecte ' ----------------------- droit_ar for x=1 to 25 pulsout 1,100 pause 20 next x goto detecte ' ----------------------- recule: for x=1 to 50 pulsout 0,200 pause 20 pulsout 1,100 pause 20 next x goto detecte

EXERCICE 14

Charger le programme précédent EX13

Ajouter dans le programme principal la ligne : "gosub avance"

Ajouter le sous programme "avance", à la fin, après le programme "recule".

Que se passe-t-il de différent par rapport au programme précédent ?

Action	Commentaires	Programme
	La commande "gosub" envoie l'exécution du programme vers un sous programme. Lorsqu'il est effectué, il y a retour (avec le "return") vers le programme d'origine qui continue à la ligne suivante.	' ***** PROGRAMME PRINCIPAL ********** detecte : POT 2,ech,val IF val<230 AND val>190 then gauche_ar IF val<160 AND val>100 then droit_ar IF val<70 then recule gosub avance goto détecte ' ----------------------- avance: for x=1 to 20 pulsout 0,100 pause 20 pulsout 1,200 pause 20 next x return

	Projet ROBOT	PROGRAMMATION en basic du robot	3ème	6

exercices programmation.sxw	6/6

Programmation des servomoteurs

Roland PETIT

2004-02-13T19:11:00