Modifications

Sauter à la navigation Sauter à la recherche
3 095 octets ajoutés ,  20 décembre 2015 à 21:25
Ligne 91 : Ligne 91 :  
Voici le programme proposé (ce dernier contient différentes options que vous pourrez tester en décommettant la ligne appropriée).
 
Voici le programme proposé (ce dernier contient différentes options que vous pourrez tester en décommettant la ligne appropriée).
   −
  <nowiki></nowiki>
+
  <nowiki># Contrôle d'un moteur jouet à l'aide d'un transistor.
 +
from pyb import Timer, delay
 +
 
 +
# Brancher le moteur sur X3
 +
MOTOR_PIN = pyb.Pin.board.X3
 +
 
 +
# fonction qui permet de passer d'un range de valeur (in_) à une autre
 +
#    (out_) en appliquant une règle de trois.
 +
def arduino_map(x, in_min, in_max, out_min, out_max):
 +
    return int( (x - in_min) * (out_max - out_min) // (in_max - in_min) + out_min )
 +
   
 +
# Eteint simplement le moteur
 +
def motorOff():
 +
onTime  = 2500 # temps allumé
 +
offTime = 1000 # temps éteint
 +
 +
p = pyb.Pin( MOTOR_PIN, pyb.Pin.OUT_PP )
 +
p.low()
 +
 +
# Allume puis éteind le moteur a interval régulier
 +
def motorOnThenOff():
 +
onTime  = 2500 # temps allumé
 +
offTime = 1000 # temps éteint
 +
 +
p = pyb.Pin( MOTOR_PIN, pyb.Pin.OUT_PP )
 +
    # Répéter l'opération encore et encore
 +
while True:
 +
p.high()
 +
delay( onTime )
 +
p.low()
 +
delay( offTime )
 +
 +
# Contrôle le moteur avec une gestion de la vitesse
 +
def motorOnThenOffWithSpeed():
 +
    # Creer un timer à une fréquence de 100 Hz (le timer 5)
 +
    # Créer un canal (channel) PWM avec le Timer.
 +
    #  Voyez le graphique PyBoard, sur PIN_MOTOR (X3), il faut utiliser
 +
    #  "Channel 3" sur le "Timer 5" 
 +
    tim = pyb.Timer( 5, freq=100)
 +
    tchannel = tim.channel(3, Timer.PWM, pin=MOTOR_PIN, pulse_width=0)
 +
 
 +
    # Minimum et Maximum de largeur d'impulsion correspondant au minimum
 +
    # et maximum de signal
 +
    max_width = 200000
 +
    min_width = 20000
 +
   
 +
    onTime = 2500  # temps allumé (a vitesse max)
 +
    offTime = 2500 # temps eteind (a vitesse min)
 +
   
 +
    onSpeed  = 250  # vitesse max (entre 0 et 255)
 +
    offSpeed = 150  # vitesse min (entre 0 et 255)
 +
   
 +
    # Répéter l'opération encore et encore
 +
    while True:
 +
        tchannel.pulse_width( arduino_map( onSpeed, 0, 255, min_width, max_width ) )
 +
        delay( onTime )
 +
        tchannel.pulse_width( arduino_map( offSpeed, 0, 255, min_width, max_width ) )
 +
        delay( offTime )
 +
 
 +
# Contrôler un moteur avec accéleration
 +
def motorWithAcceleration():
 +
    # Creer un timer à une fréquence de 100 Hz (le timer 5)
 +
    # Créer un canal (channel) PWM avec le Timer.
 +
    #  Voyez le graphique PyBoard, sur PIN_MOTOR (X3), il faut utiliser
 +
    #  "Channel 3" sur le "Timer 5" 
 +
    tim = pyb.Timer( 5, freq=100)
 +
    tchannel = tim.channel(3, Timer.PWM, pin=MOTOR_PIN, pulse_width=0)
 +
 
 +
    # Minimum et Maximum de largeur d'impulsion correspondant au minimum
 +
    # et maximum de signal
 +
    max_width = 200000
 +
    min_width = 20000
 +
   
 +
    delay_time = 50 # temps entre deux modification
 +
   
 +
    # Répéter l'opération encore et encore
 +
    while True: 
 +
    # boucler toutes les vitesses de 255 à 150
 +
    for speed in range( 255, 150, -1 ):
 +
tchannel.pulse_width( arduino_map( speed, 0, 255, min_width, max_width ) )
 +
delay( delay_time )
 +
        # boucler toutes les vitesses de 150 à 255
 +
    for speed in range( 150, 256 ):
 +
    tchannel.pulse_width( arduino_map( speed, 0, 255, min_width, max_width ) )
 +
    delay( delay_time )
 +
   
 +
# motorOff()
 +
motorOnThenOff()
 +
# motorOnThenOffWithSpeed()
 +
# motorWithAcceleration()</nowiki>
    
=== PWM sur X3: choisir le Timer, le Channel ===
 
=== PWM sur X3: choisir le Timer, le Channel ===
29 917

modifications

Menu de navigation