Différences entre versions de « Rasp-Hack-L298-Python »

De MCHobby - Wiki
Sauter à la navigation Sauter à la recherche
Ligne 25 : Ligne 25 :
 
|height=315
 
|height=315
 
|border=0
 
|border=0
}}
+
}}<br /><small>''[http://www.youtube.com/watch?v=L4BjPqrsYWw&list=UU1dCoG7MnM0mrSCt14m0EwA&feature=share Cliquez ici pour accéder directement à la vidéo] (YouTube)''</small>
<small>''[http://www.youtube.com/watch?v=L4BjPqrsYWw&list=UU1dCoG7MnM0mrSCt14m0EwA&feature=share Cliquez ici pour accéder directement à la vidéo] (YouTube)''</small>
 
  
 
== Le code Complet ==
 
== Le code Complet ==

Version du 9 juin 2014 à 10:11


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.

Test

Le programme de test ZumoL298.py (voyez plus bas) reprend les quelques fonctions de tests suivantes:

	Avant()
	time.sleep( 5 )
	TournerDroite()
	time.sleep( 3 )
	Avant()
	time.sleep( 5 )
	TournerGauche()
	time.sleep( 3 )
	Arriere()
	time.sleep( 5 )
	Stop()

faisant respectivement les opérations suivantes: passer en marche avant, faire attendre le programme 5 secondes (pendant que la marche avant se poursuit), Touner à droite pendant 3 secondes, repasser en marche pendant 5 secondes, tournez à gauchhe pendant 3 secondes, passer en marche arrière pendant 5 seconde puis s'arrêter.

Ce qui produit le résultat suivant:

{{#Widget:Iframe |url=http://www.youtube.com/embed/L4BjPqrsYWw |width=420 |height=315 |border=0 }}
Cliquez ici pour accéder directement à la vidéo (YouTube)

Le code Complet

Voici le code au complet... que vous trouverez également dans ce fichier ZumoL298.py.

A la base, ce code est développé pour piloter un chassis Zumo avec un L298 et un Raspberry-Pi mais fonctionne également parfaitement avec de nombreux autres plateformes robotiques (voyez la vidéo en fin de tuto)

#!/usr/bin/env python
# -*- coding: latin-1 -*-

# ----------------------------------------------------------------------
#  ZumoL298.py - Contrôle d'un Pont-H L298 avec Raspberry-Pi
#  
#  Tutoriel complet: 
#     http://wiki.mchobby.be/index.php?title=Rasp-Hack-L298 
#
#  Initialement conçu pour le chassis Zumo 
#     http://shop.mchobby.be/product.php?id_product=447
#  Mais fonctionne parfaitement avec de nombreuses plateformes(cfr tuto)
# ----------------------------------------------------------------------
#  Ecrit par Meurisse D. pour MCHobby.be ( shop.mchobby.be )
#  Licence: CC-BY-SA  - MCHobby.be vente de kit et composant
# ----------------------------------------------------------------------

import RPi.GPIO as GPIO
import time
import sys

GPIO.setmode(GPIO.BCM)

#--- Cablage --------------------
MOTORA_IN1 = 25 # GPIO 25
MOTORA_IN2 = 24 # GPIO 24
MOTORA_ENABLE = 4 # GPIO 4 - Activation moteur A
MOTORB_IN3 = 23 # GPIO 23
MOTORB_IN4 = 18 # GPIO 18
MOTORB_ENABLE = MOTORA_ENABLE # aussi utiliser GPIO 4 pour commander moteur B

#--- Initialisation -------------
# GPIO.setwarnings(FALSE)
GPIO.setmode(GPIO.BCM)
GPIO.setup( MOTORA_IN1, GPIO.OUT )
GPIO.setup( MOTORA_IN2, GPIO.OUT )
GPIO.setup( MOTORB_IN3, GPIO.OUT )
GPIO.setup( MOTORB_IN4, GPIO.OUT )
GPIO.setup( MOTORA_ENABLE, GPIO.OUT )
if( MOTORB_ENABLE != MOTORA_ENABLE ):
	GPIO.setup( MOTORB_ENABLE, GPIO.OUT )

# Assure l'arret moteur
GPIO.setup( MOTORA_ENABLE, GPIO.LOW )
if( MOTORB_ENABLE != MOTORA_ENABLE ):
	GPIO.setup( MOTORB_ENABLE, GPIO.LOW )

# --- Controle du L298 --------------------------
# Sens de rotation du moteur
SENS_AVANT = 1
SENS_ARRIERE = 2
SENS_ARRET = 3

def Desactiver():
	""" Désactivation des pont-H """
	GPIO.output( MOTORA_ENABLE, GPIO.LOW )
	if( MOTORB_ENABLE != MOTORA_ENABLE ):
		GPIO.output( MOTORB_ENABLE, GPIO.LOW )

def Activer():
	""" Activation des pont-H """
	GPIO.output( MOTORA_ENABLE, GPIO.HIGH )
	if( MOTORB_ENABLE != MOTORA_ENABLE ):
		GPIO.output( MOTORB_ENABLE, GPIO.HIGH )

def MarcheMotorA( sens ):
	""" Controle le sens de Marche pour Moteur A """
	if( sens == SENS_AVANT ):
		GPIO.output( MOTORA_IN1, GPIO.HIGH )
		GPIO.output( MOTORA_IN2, GPIO.LOW )
	elif( sens == SENS_ARRIERE ):
		GPIO.output( MOTORA_IN1, GPIO.LOW )
		GPIO.output( MOTORA_IN2, GPIO.HIGH )
	elif( sens == SENS_ARRET ):
		GPIO.output( MOTORA_IN1, GPIO.LOW )
		GPIO.output( MOTORA_IN2, GPIO.LOW )

def MarcheMotorB( sens ):
	"""Controle le sens de Marche pour Moteur B """
	if( sens == SENS_AVANT ):
		GPIO.output( MOTORB_IN3, GPIO.HIGH )
		GPIO.output( MOTORB_IN4, GPIO.LOW )
	elif( sens == SENS_ARRIERE ):
		GPIO.output( MOTORB_IN3, GPIO.LOW )
		GPIO.output( MOTORB_IN4, GPIO.HIGH )
	elif( sens == SENS_ARRET ):
		GPIO.output( MOTORB_IN3, GPIO.LOW )
		GPIO.output( MOTORB_IN4, GPIO.LOW ) 

def Avant():
	""" Marche avant toute """
	print( "Marche Avant" )
	Desactiver()
	MarcheMotorA( SENS_AVANT )
	MarcheMotorB( SENS_AVANT )
	Activer()

def Arriere():
	""" Marche arrière toute """
	print( "Marche Arrière" )
	Desactiver()
	MarcheMotorA( SENS_ARRIERE )
	MarcheMotorB( SENS_ARRIERE )
	Activer()

def TournerDroite():
	""" Fait tourner à droite """
	print( "Tourner à droite" )
	Desactiver()
	MarcheMotorA( SENS_ARRIERE )
	MarcheMotorB( SENS_AVANT )
	Activer()

def TournerGauche():
	""" Fait tourner a gauche """
	print( "Tourner à gauche" )
	Desactiver()
	MarcheMotorA( SENS_AVANT )
	MarcheMotorB( SENS_ARRIERE )
	Activer()
		
def Stop():
	""" Arret """
	print "Arret"
	Desactiver()
	MarcheMotorA( SENS_ARRET )
	MarcheMotorB( SENS_ARRET )
	Activer()

if __name__ == '__main__':
	Avant()
	time.sleep( 5 )
	TournerDroite()
	time.sleep( 3 )
	Avant()
	time.sleep( 5 )
	TournerGauche()
	time.sleep( 3 )
	Arriere()
	time.sleep( 5 )
	Stop()

Exécuter le programme

Pour exécuter le script python, n'oubliez pas d'activer le flag (drapeau) d'exécution sur le fichier

chmod +x ZumoL298.py

Vous pourrez ensuite l'exécuter à l'aide de la commande

sudo ./ZumoL298.py

Sudo étant nécessaire pour permettre au script d'accéder librement au GPIO du Pi.


Réalisée par Meurisse D pour 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.