Author: macerobotics

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