Home » BLOG

Gestion des déplacements du robot MR-Pico

Déplacements simple…

Un programme simple en microPython pour faire avancer, reculer et tourner le robot MR-Pico :

import time
import robot

# avancer le robot avec une vitesse de 20%
robot.forward(20)
time.sleep(2)

# reculer le robot avec une vitesse de 30%
robot.back(30)
time.sleep(3)

# tourner à droite avec une vitesse de 30%
robot.turnRight(30)
time.sleep(4)

# tourner à droite avec une vitesse de 30%
robot.turnLeft(30)

# avancer le robot avec une vitesse de 50%
robot.forward(50)

Déplacements avec contrôle en position

Un autre exemple, pour faire avancer le robot de 150 mm puis de 100 mm en ligne droite :

import time
import robot

robot.forwardmm(150,20) # avancer de 150 mm avec une vitesse de 20%
time.sleep(2)
robot.forwardmm(100,25) # avancer de 100 mm avec une vitesse de 25%

 

Maintenant dans l’autre sens, un autre exemple pour faire reculer le robot :

import time
import robot

robot.forwardmm(-300,20) # reculer le 300 mm

 

Exemple, pour faire tourner le robot de 90° vers la droite :

import time
import robot


robot.forwardmm(150,20) # Avancer de 150 mm

time.sleep(2)

robot.turnAngle(90,25) # Tourner à droite de 90°

time.sleep(2)

robot.turnAngle(-90,25) # Tourner à gauche de 90°

Raspberry Pico – Interruption timer répéter en C/C++

Exemple d’un programme en langage C/C++ d’ une minuterie répétitive appelée à plusieurs reprises à l’intervalle spécifié en millisecondes :

#include <stdio.h>

#include "pico/stdlib.h"

static uint compteur = 0;

// Interruption
bool repeating_timer_callback(struct repeating_timer *t)
{

  printf("Compteur IRQ timer %d\n", compteur);

  compteur = compteur + 1;

  return true;

}// Fin interruption


int main()
{
struct repeating_timer timer;

  stdio_init_all();
 
  // ajouter minuterie toute les 2000 microsecondes
  add_repeating_timer_ms(2000, repeating_timer_callback, NULL, &timer);

  // boucle infini
  while(1)
  {
     printf("wait irq ...\n");

     sleep_ms(1000);// attendre 1 seconde
  }

  return 0;

}

Résultat sous Putty :

TUTO, contrôles des sorties moteurs avec la carte MR-4

Ce tutoriel présente le contrôle des 4 sorties moteurs de la carte MR-4.

La fonction pour le contrôle de la sortie  moteur n°1 est :

MR4.motor1Control(direction, vitesse)

Avec :
• direction  : valeur entière de 0 ou 1
• vitesse  : de 0 à 100 %

 

La fonction pour le contrôle de la sortie  moteur n°2 est :

MR4.motor2Control(direction, vitesse)

Exemple n°1  :

Contrôle des 4 sorties moteurs (direction 0) pendant 3 secondes et dans l’autre direction pendant 3 secondes.

import time
import MR4

while 1:

  # direction 0
  MR4.motor1Control(0, 50) # vitesse à 50%
  MR4.motor2Control(0, 50)
  MR4.motor3Control(0, 50)
  MR4.motor4Control(0, 50)
  time.sleep(3)

  # direction 1
  MR4.motor1Control(1, 30) # vitesse à 30%
  MR4.motor2Control(1, 70) # vitesse à 70%
  MR4.motor3Control(1, 50)
  MR4.motor4Control(1, 80)
  time.sleep(3)

# end of file

Exemple n°2 Brake  :

Freinage du moteur après 10 secondes :

import time
import MR4

print("start")

# contrôle sortie 1
MR4.motor1Control(1, 50)
time.sleep(10)

MR4.motor1Brake()
print("end")

# end of file

Exemple n°3 Stop:

Stop du moteur après 5 secondes :

import time
import MR4

print("start")

# contrôle sortie 1
MR4.motor1Control(1, 50)

time.sleep(5)

MR4.motor1Stop()

print("end")

# end of file

Fin du tuto !

Contrôle de 2 moteurs avec la carte MR-4

Exemple d’application de contrôle de 2 moteurs à courant continu avec la carte MR-4.

Les 2 moteurs  sont connectés à la carte MR-4, une alimentation alimente la carte avec une tension de 24 Volts.

Le programme en micropython :

import time
import motor

# initialisation
motor1 = motor.Motor(11,10)
motor2 = motor.Motor(13,12)


# contrôles des moteurs 
motor1.control(1,30) #avec une vitesse de 30 %, direction 1
motor2.control(0,40) #avec une vitesse de 40 %, direction 0

# end of file

La carte MR-4 est disponible en boutique :

Jouer une mélodie avec MR-Pico

Un tutoriel pour jouer une petite mélodie avec le robot MR-Pico. Ce tutoriel utilise le buzzer du robot.

Voici le programme en langage Python :

import time
import robot


BEAT = 0.4

liten_mus = [ ['d5', BEAT / 2], ['d#5', BEAT / 2], ['f5', BEAT], ['d6', BEAT], ['a#5', BEAT], ['d5', BEAT],
['f5', BEAT], ['d#5', BEAT], ['d#5', BEAT], ['c5', BEAT / 2],['d5', BEAT / 2], ['d#5', BEAT],
['c6', BEAT], ['a5', BEAT], ['d5', BEAT], ['g5', BEAT], ['f5', BEAT], ['f5', BEAT], ['d5', BEAT / 2],
['d#5', BEAT / 2], ['f5', BEAT], ['g5', BEAT], ['a5', BEAT], ['a#5', BEAT], ['a5', BEAT], ['g5', BEAT],
['g5', BEAT], ['', BEAT / 2], ['a#5', BEAT / 2], ['c6', BEAT / 2], ['d6', BEAT / 2], ['c6', BEAT / 2],
['a#5', BEAT / 2], ['a5', BEAT / 2], ['g5', BEAT / 2], ['a5', BEAT / 2], ['a#5', BEAT / 2], ['c6', BEAT],
['f5', BEAT], ['f5', BEAT], ['f5', BEAT / 2], ['d#5', BEAT / 2], ['d5', BEAT], ['f5', BEAT], ['d6', BEAT],
['d6', BEAT / 2], ['c6', BEAT / 2], ['b5', BEAT], ['g5', BEAT], ['g5', BEAT], ['c6', BEAT / 2],
['a#5', BEAT / 2], ['a5', BEAT], ['f5', BEAT], ['d6', BEAT], ['a5', BEAT], ['a#5', BEAT * 1.5] ]

for note in liten_mus:
  robot.speaker_1.play(note)