TL;DR
--Procédure pour utiliser E-MAX Mini Servo ES08A II avec RaspberryPi modèle 3B --Utilisez le matériel PWM pour la stabilisation. Avec le logiciel PWM, ça tremble.
--Il semble que seuls GPIO 18, Physical 12 peuvent être utilisés pour le matériel PWM (ligne jaune).
Cependant, selon le manuel WiringPi, il existe une condition selon laquelle PWM ne peut être utilisé que pour 18 et aucune sortie audio analogique n'est utilisée.
Source: https://blog.boochow.com/article/456203751.html
--Connectez le fil noir à GND et le fil orange à 5V. (Il y a aussi un article qu'il semble préférable d'avoir une alimentation différente si possible)
Mise à jour PIP
sudo pip install -U pip --proxy="http://<proxy>:<port>/"
wiringpi
sudo pip install wiringpi --proxy="http://<proxy>:<port>/"
Formule de calcul pour PWM matériel https://hira-hide.hatenablog.com/entry/20170610/1497100926 La plupart des servomoteurs ont 1,5 ms au lieu de 1,4 ms au centre http://gomisai.blog75.fc2.com/blog-entry-290.html
** Il existe des différences individuelles **, donc si le servo devient saccadé ou se réchauffe soudainement à l'angle maximum, cela signifie que l'angle de fonctionnement maximum du servo a été dépassé, ramenez-le donc immédiatement en position neutre et ajustez l'angle. S'il te plait donne moi.
servoutil.py
#!/usr/bin/python
# -*- coding: utf-8 -*-
def get_write_value(degree):
"""
Obtenez la valeur à écrire sous l'angle
Parameters
----------
degree : int
-90 -> 90,Milieu 0
Returns
----------
write_value : int
wiringpi.Valeur à écrire avec pwmWrite
Fréquence PWM = fréquence d'horloge de base du Raspberry Pi PWM / (horloge x plage)
"Combien de fois vous déplacez-vous autour de 0 degré?" Est calculé.
7 à 0 degré.25%, 90 degrés est 12%、-90 degrés est 2.5%Une valeur qui calcule linéairement
"""
#Vérification de la valeur
if degree > 90:
degree = 90
if degree < -90:
degree = -90
print(degree)
#0 pour de nombreux servomoteurs tels que ES08A II.5ms~2.0 degré équivaut à 1 en 4 ms.Cela devrait durer 45 ms,
#En fait, 0 degré est 1.C'est souvent 5ms.
#Ajuster en fonction de ce point
edit_degree = degree + 10
return int((4.75 * edit_degree / 90 + 7.25) * (1024 / 100))
testservo.py
#!/usr/bin/python
# -*- coding: utf-8 -*-
import wiringpi
import sys
import servoutil
servo_pin = 18 #Spécifiez la broche 18
param = sys.argv
set_degree = int(param[1])
print(set_degree)
wiringpi.wiringPiSetupGpio() #Au-dessus de la broche de la figure(BOARD)Mode à épingler par numéro
wiringpi.pinMode(servo_pin, 2) #Désigné comme broche de sortie
wiringpi.pwmSetMode(0) #Spécifié comme 0V
wiringpi.pwmSetRange(1024) #Spécifiez la plage de 0 à 1024
wiringpi.pwmSetClock(375)
wiringpi.pwmWrite(servo_pin, servoutil.get_write_value(set_degree))
sudo est requis pour définir pinMode
Exemple
sudo python2 testservo.py 90