Cours:MindstormStructuresDeControle : Différence entre versions
(→{{Rouge|Affichage de l'état d'un capteur}}) |
|||
| Ligne 2 : | Ligne 2 : | ||
Vous trouverez sur la page listant les énoncés de TP un lien vers l'ensemble des fonctions spécifique à la programmation de la brique lego EV3. | Vous trouverez sur la page listant les énoncés de TP un lien vers l'ensemble des fonctions spécifique à la programmation de la brique lego EV3. | ||
| + | |||
| + | ={{Rouge|Travail préparatoire : affichage de variable}}= | ||
| + | |||
| + | Nous avons vu comment déclarer et donner une valeur à une variable de type entier dans le 1er TP, exemple : | ||
| + | <source lang=c> | ||
| + | int a = 5; | ||
| + | </source> | ||
| + | |||
| + | Il est intéressant d'afficher sa valeur avec la fonction LcdPrintf. Pour cela, on prépare le texte souhaité, et on place {{Rouge|%d}} dans la chaîne de caractère (délimitée par des " ") à l'endroit où on souhaite afficher la valeur de la variable. On ajoute ensuite un paramètre dans l'appel de fonction. | ||
| + | |||
| + | Bon c'est plus simple avec un exemple : | ||
| + | |||
| + | <source lang=c> | ||
| + | #include <ev3.h> | ||
| + | int main(void) | ||
| + | { | ||
| + | // on déclare une variable etatTouchSensor pour "enregistrer" l'état du capteur | ||
| + | int prix = 100; | ||
| + | |||
| + | InitEV3(); | ||
| + | |||
| + | LcdPrintf(1, "le produit coute %d euros\n", prix); | ||
| + | |||
| + | Wait(SEC_5); | ||
| + | FreeEV3(); | ||
| + | return 0; | ||
| + | } | ||
| + | </source> | ||
| + | |||
| + | On peut afficher la valeur de plusieurs variables en ajoutant des {{Rouge|%d}} : | ||
| + | <source lang=c> | ||
| + | #include <ev3.h> | ||
| + | int main(void) | ||
| + | { | ||
| + | // on déclare une variable etatTouchSensor pour "enregistrer" l'état du capteur | ||
| + | int prixDepart = 100; | ||
| + | int reduction = 10; | ||
| + | |||
| + | InitEV3(); | ||
| + | |||
| + | LcdPrintf(1, "le produit coute %d euros avant reduction, la remise est de %d euros\n", prixDepart, reduction); | ||
| + | |||
| + | Wait(SEC_5); | ||
| + | FreeEV3(); | ||
| + | return 0; | ||
| + | } | ||
| + | </source> | ||
| + | |||
| + | On peut bien sûr effectuer des opérations sur les variables , par exemple : | ||
| + | |||
| + | <source lang=c> | ||
| + | ... | ||
| + | int prixDepart = 100; | ||
| + | int reduction = 10; | ||
| + | // on n'affecte pas de valeur, on va la calculer par la suite | ||
| + | int prixFinal; | ||
| + | // modification de la valeur de la variable prixFinal : | ||
| + | prixFinal = prixDepart - reduction; | ||
| + | ... | ||
| + | </source> | ||
| + | |||
| + | {{Question|Modifier votre programme pour qu'il affiche le prix avant et après réduction.}} | ||
| + | |||
| + | |||
| + | {{Question|Faire un programme qui : }} | ||
| + | *déclare 2 variables : | ||
| + | **a de valeur 5 | ||
| + | **b de valeur 6 | ||
| + | *calcul le produit et met le résultat dans une variable resultat | ||
| + | *affiche le calcul effectué et le résultat | ||
={{Rouge|Affichage de l'état d'un capteur}}= | ={{Rouge|Affichage de l'état d'un capteur}}= | ||
| Ligne 50 : | Ligne 120 : | ||
// on affiche alors sa valeur | // on affiche alors sa valeur | ||
LcdPrintf(1, "valeur du capteur : %d \n", etatTouchSensor); | LcdPrintf(1, "valeur du capteur : %d \n", etatTouchSensor); | ||
| + | |||
Wait(SEC_5); | Wait(SEC_5); | ||
| − | |||
FreeEV3(); | FreeEV3(); | ||
return 0; | return 0; | ||
Version du 12 septembre 2018 à 10:14
Retour à la liste des Tps
Vous trouverez sur la page listant les énoncés de TP un lien vers l'ensemble des fonctions spécifique à la programmation de la brique lego EV3.
Sommaire
Travail préparatoire : affichage de variable
Nous avons vu comment déclarer et donner une valeur à une variable de type entier dans le 1er TP, exemple :
int a = 5;
Il est intéressant d'afficher sa valeur avec la fonction LcdPrintf. Pour cela, on prépare le texte souhaité, et on place %d dans la chaîne de caractère (délimitée par des " ") à l'endroit où on souhaite afficher la valeur de la variable. On ajoute ensuite un paramètre dans l'appel de fonction.
Bon c'est plus simple avec un exemple :
#include <ev3.h>
int main(void)
{
// on déclare une variable etatTouchSensor pour "enregistrer" l'état du capteur
int prix = 100;
InitEV3();
LcdPrintf(1, "le produit coute %d euros\n", prix);
Wait(SEC_5);
FreeEV3();
return 0;
}
On peut afficher la valeur de plusieurs variables en ajoutant des %d :
#include <ev3.h>
int main(void)
{
// on déclare une variable etatTouchSensor pour "enregistrer" l'état du capteur
int prixDepart = 100;
int reduction = 10;
InitEV3();
LcdPrintf(1, "le produit coute %d euros avant reduction, la remise est de %d euros\n", prixDepart, reduction);
Wait(SEC_5);
FreeEV3();
return 0;
}
On peut bien sûr effectuer des opérations sur les variables , par exemple :
...
int prixDepart = 100;
int reduction = 10;
// on n'affecte pas de valeur, on va la calculer par la suite
int prixFinal;
// modification de la valeur de la variable prixFinal :
prixFinal = prixDepart - reduction;
...
Modifier votre programme pour qu'il affiche le prix avant et après réduction.
- déclare 2 variables :
- a de valeur 5
- b de valeur 6
- calcul le produit et met le résultat dans une variable resultat
- affiche le calcul effectué et le résultat
Affichage de l'état d'un capteur
Tout système possède des entrées et des sorties.
Les sorties sont les actionneurs et génèrent donc une action :
- produire un son
- émettre de la lumière
- produire une action mécanique
- ...
Les entrées permettent d’interagir avec l'environnement et l'utilisateur, ils observent/mesurent quelque chose :
- capteur de contact/collision
- microphone
- capteur de couleur
- ...
Sur la brique programmable EV3, le nom des connecteurs donne la fonction :
- 1 2 3 4 : ce sont les entrées
- A B C D : ce sont les sorties
Principe pour 1 capteur
Les capteurs pouvant être connectés sur la brique EV3 étant tous différents, il est nécessaire d'indiquer sur quelle broche nous avons connecté le/les capteur(s) utilisé(s).
Pour cela vous devez utilisez la fonction :
setAllSensorMode
Le détail de cette fonction sera à consulter dans la documentation.
Voici un exemple d'utilisation à suivre pour tester le capteur de contact ( touch sensor in english !) :
#include <ev3.h>
int main(void)
{
// on déclare une variable etatTouchSensor pour "enregistrer" l'état du capteur
int etatTouchSensor = 0;
InitEV3();
// on configure la sortie 1 comme capteur de contact
// et les sorties 2,3,4 sont indiquées sans capteur (NO_SEN)
setAllSensorMode(TOUCH_PRESS, NO_SEN, NO_SEN, NO_SEN);
// on peut alors lire l'état du capteur sur l'entrée 1
// et mettre sa valeur dans la variable etatTouchSensor
etatTouchSensor = readSensor( IN_1 );
// on affiche alors sa valeur
LcdPrintf(1, "valeur du capteur : %d \n", etatTouchSensor);
Wait(SEC_5);
FreeEV3();
return 0;
}