Hack-micropython-ServoRobot-Tester-plus

De MCHobby - Wiki
Révision datée du 19 décembre 2016 à 16:43 par Admin (discussion | contributions) (→‎Déplacement non prédictif)
(diff) ← Version précédente | Voir la version actuelle (diff) | Version suivante → (diff)
Sauter à la navigation Sauter à la recherche


MCHobby investit du temps et de l'argent dans la réalisation de traduction et/ou documentation. C'est un travail long et fastidieux réalisé dans l'esprit Open-Source... donc gratuit et librement accessible.
SI vous aimez nos traductions et documentations ALORS aidez nous à en produire plus en achetant vos produits chez MCHobby.

Intro

Voici quelques autres scripts, truc & astuce, pour jouer avec Doggy

Déplacement non prédictif

Nous avons déjà vu comment déplacer prédictif du robot Doggy (où le nombre de pas est connu d'avance).

Ce qui serait bien, c'est de pouvoir "avancer" jusqu'à ce que l'on rencontre un obstacle.

La paramètre repeat de la méthode move() accepte deux type de paramètre:

  • Soit une valeur entière : nombre connu d'appel répétitif à effectuer pour exécuter le mouvement.
  • Soit une fonction : qui poursuit l'action répétitive jusqu'à ce que la fonction retourne False.

Cette approche peut être vraiment utile si l'on désire avancer jusqu'à un obstacle (ex: détecter à l'aide d'un senseur infrarouge ou ultrason).

Voici un exemple d'implémentation (à défaut d'un senseur, nous avons utilisé une valeur maximale... ).

from doggy import *

d = Doggy()

# Définir une fonction callback (de rappel) pour arrêter la méthode move() 
# lorsque la fonction retourne False. 
def forward_until_this( robot, name, iteration ):
    # Effectuer votre test de sortie une fois de temps en temps (pour éviter un ralentissement général).
    # Ex: mesurer la distance avec un senseur ultrason.
    if (iteration % 10) == 0:
        print( 'iteration = %i' % iteration )

        if iteration >= 50:
            return False
    return True  

# Faire un movement FORWARD (avancer) aussi longtemps que la fonction forward_until_this() retourne True
d.move( 'F', repeat=forward_until_this, prepare=True)

Un petit pas de dance

En détournant le fonctionnement des mouvements, il est possible d'utiliser les préparations de mouvement pour réaliser un petit pas de dance :-)

from doggy import *
from pyb import delay
d = Doggy()

for i in range( 5 ):
	d.prepare('L')
	d.prepare('R')



Créé par Meurisse D. pour MCHobby.be - Created by Meurisse D. for MCHobby.be

Toute référence, mention ou extrait de cette traduction doit être explicitement accompagné du texte suivant : «  Traduction par MCHobby (www.MCHobby.be) - Vente de kit et composants » avec un lien vers la source (donc cette page) et ce quelque soit le média utilisé.

L'utilisation commercial de la traduction (texte) et/ou réalisation, même partielle, pourrait être soumis à redevance. Dans tous les cas de figures, vous devez également obtenir l'accord du(des) détenteur initial des droits. Celui de MC Hobby s'arrêtant au travail de traduction proprement dit.