Cours:MindstormStructuresDeControle : Différence entre versions

De troyesGEII
Aller à : navigation, rechercher
m ({{Rouge|Travail préparatoire : affichage de variable}})
Ligne 18 : Ligne 18 :
 
int main(void)
 
int main(void)
 
{
 
{
   // on déclare une variable etatTouchSensor pour "enregistrer" l'état du capteur
+
   // on déclare une variable prix
 
   int prix = 100;
 
   int prix = 100;
  
Ligne 36 : Ligne 36 :
 
int main(void)
 
int main(void)
 
{
 
{
   // on déclare une variable etatTouchSensor pour "enregistrer" l'état du capteur
+
   // on déclare 2 variables prixDepart et redution
 
   int prixDepart = 100;
 
   int prixDepart = 100;
 
   int reduction = 10;
 
   int reduction = 10;

Version du 12 septembre 2018 à 10:30

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.

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 prix
   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 2 variables prixDepart et redution
   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;
   ...

Question.jpg Modifier votre programme pour qu'il affiche le prix avant et après réduction.


Question.jpg 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

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.

Todo.jpg 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;
}