Rasp-Hack-L298-Python

De MCHobby - Wiki
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.

Le code

Voici le code au complet... que vous trouverez également dans ce fichier ZumoL298.py (à la base, ce code est développé pour utiliser un chassis Zumo avec un L298 et un Raspberry-Pi)

#!/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.