programmation → mBlock  icone de lancement



programme informatique sur mBlock

  Un programme mBlock se présente sous la forme d'une succession de blocs colorés placés les uns à la suite des autres. Ces blocs sont eux-mêmes constitués de lignes de code formant un langage compréhensible par les systèmes programmables, mais seul un bout de phrase en français figure sur le bloc pour l'identifier.


Exemple : le programme du robot mBot en mode "suiveur de ligne"

Le mBot utilise son capteur infrarouge "suiveur de ligne" pour se déplacer en suivant une ligne noire tracée sur le sol. Les blocs du programme sont traduits par l'interface de programmation mBlock
en langage C++ (ci-dessous), puis traduits à nouveau (compilés) en binaire pour être envoyés dans le robot pour exécution.

#include <Arduino.h>
#include <Wire.h>
#include <SoftwareSerial.h>
#include <MeMCore.h>
MeDCMotor motor_9(9); MeDCMotor motor_10(10);
void move(int direction, int speed)
{ int leftSpeed = 0; int rightSpeed = 0;
if(direction == 1){ leftSpeed = speed; rightSpeed = speed;}
else if(direction == 2){ leftSpeed = -speed; rightSpeed = -speed; }
else if(direction == 3){ leftSpeed = -speed; rightSpeed = speed; }
else if(direction == 4){ leftSpeed = speed; rightSpeed = -speed; }
motor_9.run((9)==M1?-(leftSpeed):(leftSpeed));
motor_10.run((10)==M1?-(rightSpeed):(rightSpeed)); }
double angle_rad = PI/180.0;
double angle_deg = 180.0/PI;
double Speed; double Temp;
MeLineFollower linefollower_2(2);
void setup(){ pinMode(A7,INPUT);
while(!((0^(analogRead(A7)>10?0:1)))){ _loop(); }
while(!((1^(analogRead(A7)>10?0:1)))){ _loop(); }
Speed = 250; }
void loop(){ Temp = linefollower_2.readSensors();
if(((Temp)==(0))){ move(1,Speed); }else{
if(((Temp)==(1))){ move(3,Speed); }else{
if(((Temp)==(2))){ move(4,Speed); }else{
move(2,Speed); } } } _loop(); }
void _delay(float seconds){
long endTime = millis() + seconds * 1000;
while(millis() < endTime)_loop(); }
void _loop(){ }





les types de blocs


 1  l'événement déclencheur

  L'exécution du programme dépend de la survenue de l'événement mentionné dans le bloc : c'est la condition de départ du programme.

→ simple clic sur l'icone drapeau vert

→ mise sous tension du mBot ou de la carte Arduino


→ message envoyé par un autre script

  → action sur le bouton poussoir du mBot


→ un seuil sonore est dépassé (*)


→ le chronomètre atteint une certaine valeur de temps (*)


→ action sur une touche du clavier


→ clic sur un élément graphique de la zone d'affichage (*)

* spécifique à Scratch, réalisable par un script sur mBlock



 2  les temporisations et l'arrêt

  Pendant son exécution, un programme peut attendre la réalisation d'une condition ou alors attendre une durée fixée à l'avance, on parle alors de temporisation.

→ la durée de la pause est indiquée en secondes


→ le programme attend la validation de la condition


→ le programme s'arrête, lui, ou bien arrête tous les scripts




 3  les boucles de répétition

  Les trois types de boucle permettent de répéter une séquence d'instructions, ou une seule instruction, un certain nombre de fois.

→ boucle sans fin (absence d'instruction suivante sous le bloc)


→ boucle exécutée un nombre défini de fois


→ boucle exécutée jusqu'à la validation d'une condition




 4  les instructions conditionnelles

  L'instruction conditionnelle permet au programme de faire des choix de séquence quand une condition est apparue. Cette condition peut-être l'état d'une variable, d'un index, d'un chronomètre, etc.


→ si la condition fixée dans la forme hexagonale est remplie,
    la séquence d'instructions incluse est alors exécutée



→ si la condition fixée est remplie, la première séquence
    d'instructions incluse est alors exécutée, sinon c'est
    la deuxième séquence incluse qui est exécutée







l'agencement des blocs


 1  la séquence d'instructions

  C'est un enchaînement d'instructions ordonnées les unes à la suite des autres, sans condition ni boucle.

→ action, temporisation, calcul, autre…







 2  le bloc personnalisé : un sous-programme

  Un sous-programme peut être créé sous la forme d'un bloc libre qu'il faudra nommer. Ce bloc personnalisé accepte des paramètres en entrée.

→ programme du bloc 'calcul-de-trajectoire'





→ appel du bloc 'calcul-de-trajectoire'





chapitre à venir


...






chapitre à venir


...






les variables d'un programme mblock

  Pour automatiser un système, l'utilisation de capteurs et d'actionneurs est obligatoire si l'on veut un minimum d'interaction avec l'environnement. Il est donc utile d'associer les valeurs reçues des capteurs, ou à destination des actionneurs, à des noms qui les caractérisent (dans un souci de clarté de lecture). Ainsi, nous pourrons facilement établir des valeurs de seuil et déclencher les actionneurs en fonction de ces dernières.



Un lampadaire intelligent devra s'allumer automatiquement lorsque la luminosité sera inférieure à 500 Lux par exemple. Sur une carte contrôleur Arduino, la valeur d'un capteur analogique peut varier de 0 à 1023. Dans cet exemple, nous avons associé la valeur mesurée sur la broche analogique 0 par la photodiode à la variable «luminosité», ce qui rend la lecture du programme mBlock plus facile.







mots clés


robot suiveur de ligne

  Miser sur des systèmes de transport automatique de marchandises, tels que des AGV (Automatic Guided Vehicles) ou des AMR (Autonomous Mobile Robots), est un moyen très efficace de connecter différentes zones d’un entrepôt, d’un centre logistique ou d’un centre de production. À l’image des convoyeurs automatiques, ils sont utilisés dans des environnements avec un flux de marchandises continu et répétitif, et apporte un réel gain de temps tout en prévenant les risques d’accidents. Les véhicules à guidage automatique ont dominé le marché ces dernières années. Cependant, ils sont aujourd’hui concurrencés par des robots plus performants : les robots autonomes intelligents qui se déplacent et travaillent sans itinéraires prédéterminés.



variable informatique

  Une variable se définit par un nom unique afin d'être clairement indentifiée. On associe ensuite ce nom à une valeur au cours de l'exécution d'un programme informatique (cette valeur peut être fixe ou variable suivant l'usage). On peut ainsi dire qu'une variable est une valeur stockée dans un emplacement mémoire identifié par un nom.