| 
      
   
  
   
  
   Raccordement :  
   
   
  
   
  
   Pour le servomoteur Feetech FS5115M 
   
    - 0 à 180 ° --> 500 us à 2500 us
 
    - 4,8 à 6V
 
    - Datasheet  
 
    
   | 
  
    Pilotage : il faut générer un signal MLI (Modulation de Largeur d'Implusion, PWM Pulse Width Modulation en anglais) de période 20ms (= 50Hz) 
   Principe général (attention, les valeurs peuvent varier en fonction du servomoteur) :  
     
   | 
 
 
Programme permettant de piloter un servomoteur en position et vitesse
Programme permettant de piloter un de piloter un servomoteur avec 2 boutons-poussoirs 
ESP32 Micropython programme permettant de piloter un servomoteur en position et vitesse
La commande  s'effectue à l'aide de l'instruction suivante :       servo.deplacement ( Angle départ, Angle voulu, Temps déplacement )      avec :
 
  | 
    Angle départ 
   en ° 
   exemple 0 à 180° 
   | 
  
    Angle voulu 
   en ° 
   exemple : 0 à 180° 
   | 
  
    Temps déplacement 
   
  
   en ms 
   | 
 
 
 
  | 
     # pour servomoteur Feetech FS5115M from machine import Pin, PWM from time import *
  servo1 = PWM(Pin(17), 50)   # MLI période 20ms = 50Hz sur broche 17 (D4 shield base 1)
  def rp_cy(angle):     temps_haut = (2000/180) * angle + 500     rp_cyclique = (temps_haut / 20000) * 100     return int((rp_cyclique / 100) * 1023)
  def servo_deplacement(angle_depart, angle_voulu, temps_deplacement_ms):     delta = angle_voulu - angle_depart     nb_iteration = int(temps_deplacement_ms / 10)     print('delta=', delta, ' nb_iteration=', nb_iteration)
      for i in range(nb_iteration):         angle_depart = angle_depart + (delta / nb_iteration)         print('angle=', angle_depart, ' i=', i)         servo1.duty(rp_cy(angle_depart))                         # Ecriture du rapport cycliques         sleep_ms(10)
  while True:     servo_deplacement(0, 180, 500)      # Déplacement de la position 0° à la position 180° en 500ms     sleep_ms(2000)     servo_deplacement(180, 0, 500)     sleep_ms(1000)
 
  
   | 
 
 
  | 
    
  
   | 
 
 
ESP32 Micropython
Programme permettant de piloter un de piloter un servomoteur avec 2 boutons-poussoirs 
 
  | 
    
  
   from machine import Pin, PWM from time import *
  servo1 = PWM(Pin(17), 50)   # MLI période 20ms = 50Hz sur broche 17 (D4) bp_1 = Pin(26, Pin.IN)      # crée une broche d'entrée sur la broche 26 (D2) bp_2 = Pin(25, Pin.IN)      # crée une broche d'entrée sur la broche 26 (D3)
  duree_imp = 1500
  def set_servo(duree_imp):     rp_cyclique = (duree_imp / 20000) * 100                #rapport cyclique de 0 à 100 %     rp_cyclique_esp = int((rp_cyclique / 100 ) * 1023)     #rapport cyclique de 0 à 1023     servo1.duty(rp_cyclique_esp)                           #écriture du rapport cyclique     print('duree_imp = ',duree_imp, ' rp_cyclique = ', rp_cyclique, ' rp_cyclique_esp = ', rp_cyclique_esp)     
  while True:     if bp_1.value() == 1 and duree_imp>500 :         duree_imp = duree_imp - 100          if bp_2.value() == 1 and duree_imp<2500:         duree_imp = duree_imp + 100
      set_servo(duree_imp)     sleep_ms(500) 
   
  
   | 
 
 
Créé avec HelpNDoc Personal Edition: Environnement de création d'aide complet