From MRduino

Les maths avec le robot MRduino !

L’apprentissage des mathématiques avec le robot mobile MRduino avec la programmation graphique (Blockly).

 


Les distances

Le premier exemple est le concept de distance.

Cet exemple permet de faire avancer le robot en ligne droite de 20 cm.

“Comment faire avancer MRduino d’une distance de 20 cm ?”

Voici l’algorithme pour faire avancer le robot de 20 cm :

  • Initialiser le robot MRduino,
  • Activer le contrôle : ceci permet d’activer le contrôle en distance et orientation du robot,
  • Appel du bloc avancer distance,

 

Étape n°1

Initialisation du robot MRduino avec l’ajout du bloc “Initialisation robot MRduino” :

math1

Étape n°2

Activation du contrôle, pour gérer les distances et les angles.

math2

Étape n°3

Appel du bloc “Avancer distance” avec en paramètre le nombre 20, afin d’avancer le robot de 20 cm.

math4


Les angles

Cette deuxième partie présente les angles géométriques :

“Comment faire tourner MRduino d’un angle de 90° ?”

C’est très simple !

Il faut appeler le bloc “Tourner à gauche degré” avec en paramètre l’angle de 90 °.

  • Voici le programme en Blockly pour tourner à gauche de 90° :

math5

Un autre exemple :

  • tourner à gauche de 45°,
  • allumer la led n°1
  • tourner droite de 180°
  • allumer la led n°2

math6


Forme géométrique

Maintenant, place à la réalisation d ‘une forme géométrique avec le robot MRduino :

Exercice n°1 :

Réaliser un carré de 10 cm de coté.

Réponses de l’exercice n°1:

math7

 

 

 

MRduino à l’Euro 2016 !

Le robot MRduino joue au football pour l’Euro 2016.

MRduino est équipé d’un bras avec deux servomoteurs SG90 :

  • Alimentation des servomoteurs avec le +BATT

FootEuro2016

Vidéo :

 

Le programme :

#include <Servo.h>
#include <mrduino.h>

Servo Servo1;
Servo Servo2;

int reception;
 
void setup()
{
    Servo1.attach(2, 1000, 2000);
    Servo2.attach(4, 1000, 2000);

    Servo1.write(90);
    Servo2.write(180);

    delay(500);

    Serial.begin(115200);
}

void loop() {


   // read IR reception sensor
  reception = irReceiver();

  // read command
  switch(reception)
  {
    case 2:
      forward(30);// Forward
    break;

    case 6:
      turnRight(30);// turn right
    break;

    case 4:
      turnLeft(30);// turn left
    break;

    case 8:
      back(30);// back
    break;

    case 5:
      stop();// stop
    break;

    case 7:
     Servo1.write(160);
     Servo2.write(90);
    break;

    case 9:
     Servo1.write(90);
     Servo2.write(180);
    break;
  }


}

 

 

Détection des chocs avec le robot MRPi1

Le robot MRPi1 est équipé d’un accéléromètre 3 axes permettant de détecter les chocs.

Voici une petite vidéo :

Ce programme lit les 3 axes de l’accéléromètre et suivant un seuil d’accélération de 0.1 g une led est allumé ou éteinte.

  • led n°1 : axe X
  • led n°2 : axe Y
  • led n°3 : axe Z

Le programme python :

from mrpi1_lib import *
import time

while 1:

  axeX = acceleroX();
  axeY = acceleroY();
  axeZ = acceleroZ();

  time.sleep(0.01)

  if(axeX > 0.1):
    led(1,1)
  else:
    led(1,0)   

  if(axeY > 0.1):
    led(2,1)
  else:
    led(2,0) 

  if(axeZ > 0.1):
    led(3,1)
  else:
    led(3,0)

 

Contrôle de MRduino avec une télécommande

Programme de contrôle du robot MRduino avec une télécommande :

#include <mrduino.h>

int reception;

void setup() 
{
  // init serial communication
  Serial.begin(115200);
}

void loop()
{
  // read IR reception sensor
  reception = irReceiver();

  // read command
  switch(reception)
  {
    case 2:
      forward(30);// Forward
    break;

    case 6:
      turnRight(30);// turn right
    break;

    case 4:
      turnLeft(30);// turn left
    break;

    case 8:
      back(30);// back
    break;

    case 5:
      stop();// stop
    break;
  }
  
}

Programmer MRduino avec Blockly

MRduino_blockly

Il est maintenant possible de programmer le robot MRduino en Blockly.

Mais c’est quoi Blockly ?

logo_blockly

Blockly est un langage de programmation visuelle Open source sous forme de puzzle. Les pièces du puzzle représente une fonction.

Exemple de programme Blockly  pour le robot MRduino :

Blockly

Ce programme permet de faire avancer le robot MRduino tant qu’il n’y a pas d’obstacle présent sur le capteur de proximité n°4.

Guide de démarrage du robot MRduino avec Blockly.

Site officiel de Blockly  

Obstacle avoidance with MRduino

Exemple of obstacle avoidance with MRduino robot. This program use the six proximity sensors.

MRduinoThe obstacle avoidance program :

#include <mrduino.h>

int prox1;
int prox2;
int prox3;
int prox4;
int prox5;
int prox6;
int speed = 50

// obstacle limit
int limit_obs = 300;

void setup() 
{
  // init serial interface
  Serial.begin(115200);         
  
}

void loop()
{
  // read sensors
  prox1 = proxSensor(1); 
  prox2 = proxSensor(2); 
  prox3 = proxSensor(3); 
  prox4 = proxSensor(4); 
  prox5 = proxSensor(5); 
  prox6 = proxSensor(6); 

  delay(100);

  if((prox1 > limit_obs) and (prox2 > limit_obs)and (prox3 > limit_obs) and (prox4 > limit_obs) and (prox5 > limit_obs)  and (prox6 > limit_obs))
  {
    back(speed);
  }
  else
  {
    if((prox1 > limit_obs) and (prox2 > limit_obs))
    {
      turnRight(speed);
    }
    else
    {
       if((prox6 > limit_obs) or (prox5 > limit_obs) or (prox4 > limit_obs))
       {
         turnLeft(speed);
       }
       else
       {
          if((prox1 > limit_obs) or (prox2 > limit_obs) or (prox3 > limit_obs))
          {
           turnRight(speed);
          }
          else
          {
            forward(speed);
          }
        
       }
    }
  }
}

// end of file