#!/usr/bin/python
#-*- coding: utf-8 -*-
# import des librairies
import RPi.GPIO as GPIO
from time import sleep
GPIO.setmode(GPIO.BCM) # numérotation BCM
moteurPin1 = 23 # input1 (L293D) au GPIO 23
moteurPin2 = 24 # input2 (L293D) au GPIO 24
moteurEnable = 25 # enable (L293D) au GPIO 25
# GPIO en mode output
GPIO.setup(moteurPin1,GPIO.OUT)
GPIO.setup(moteurPin2,GPIO.OUT)
GPIO.setup(moteurEnable,GPIO.OUT)
pwm = GPIO.PWM(moteurEnable,50) # pwm du GPIO à 50 Hz
pwm.start(45) # démarrage du moteur à faible vitesse (pulse a 45%)
print "Rotation sens direct à faible vitesse"
GPIO.output(moteurPin1,GPIO.HIGH)
GPIO.output(moteurPin2,GPIO.LOW)
GPIO.output(moteurEnable,GPIO.HIGH)
sleep(4) # on laisse tourner le moteur 4 secondes
# liste sens initial
liste = [45,50,55,60,65,70,75,80,85,90,95,100]
# on accélère progressivement
print "Rotation sens direct, accélération"
for i in liste:
pwm.ChangeDutyCycle(i)
sleep (0.25)
# 2 s à fond
print "Rotation sens direct, à fond"
sleep (4)
# on inverse la liste
liste.reverse()
print "Rotation sens direct, décélération"
for i in liste:
pwm.ChangeDutyCycle(i)
sleep (0.25)
# 4 s faible vitesse
print "Rotation sens direct à faible vitesse"
sleep (4)
print "On change de sens"
GPIO.output(moteurPin1,GPIO.LOW)
GPIO.output(moteurPin2,GPIO.HIGH)
# on inverse la liste pour ce retrouvé avec la liste initial
liste.reverse()
print "Rotation sens inverse, accélération"
for i in liste:
pwm.ChangeDutyCycle(i)
sleep (0.25)
# 4 s à fond
print "Rotation sens inverse à fond"
sleep (4)
# on inverse la liste
liste.reverse()
print "Rotation sens inverse, décélération"
for i in liste:
pwm.ChangeDutyCycle(i)
sleep (0.25)
# 4 s faible vitesse
print "Rotation sens inverse à faible vitesse"
sleep (4)
# Arrêt du moteur
print "Arrêt du moteur"
GPIO.output(moteurEnable,GPIO.LOW)
pwm.stop() # arrêt du pwm
GPIO.cleanup() # nettoyage des GPIO
exit