Vor langer Zeit habe ich einen PI HAT gekauft, der einen Servomotor steuern und sogar löten kann, aber ich habe ihn komplett vergessen. Als ich den Bestand an elektronischen Teilen überprüfte, fand ich ihn und überprüfte den Betrieb.
Nach der Überprüfung war es immer noch das aktuelle Produkt.
Es gibt zwei Arten von Servomotoren, einen, der sich um 180 Grad dreht (was als 90 Grad nach links und rechts bezeichnet werden kann) und einen, der sich um 360 Grad dreht. Wenn Sie den Produktinformationen sowohl für den 180-Grad-Drehtyp als auch für den 360-Grad-Drehtyp folgen, Beispielcode Ich konnte erreichen (-pi / using-the-python-library), aber als ich den Code hier kopierte, funktionierte es nicht wie erwartet. Zunächst dachte ich, es sei ein Lötfehler, aber selbst wenn ich die Stellen ändere, an denen die Servomotoren angeschlossen sind (es gibt 16 Stellen), ist die Bewegung dieselbe. Hmmm ...
Ich denke nicht, dass es ein Problem ist, dass das Löten klumpig ist (ist es eine Übertragung der Verantwortung!), Also habe ich versucht, die Parameter ein wenig zu ändern.
Der folgende Code schien also zu funktionieren.
# Adafruit 16-Channel PWM/Servo HAT & Bonnet for Raspberry Pi & SG90 sample
#
# see:
# https://learn.adafruit.com/adafruit-16-channel-pwm-servo-hat-for-raspberry-pi
#
# test system:
# python 3.7.3
# adafruit-circuitpython-servokit 1.2.1
import time
from adafruit_servokit import ServoKit
# Set channels to the number of servo channels on your kit.
# 8 for FeatherWing, 16 for Shield/HAT/Bonnet.
kit = ServoKit(channels=16)
ch = 1
kit.servo[ch].set_pulse_width_range(500, 2400)
# 0..180 step 30 angle
for v in range(0,181,30):
print( "value=", v )
kit.servo[ch].angle = v
time.sleep(1)
# 0, 180 step 90 angle x 3set
for i in range(1,3):
for v in range(0,181,90):
kit.servo[ch].angle = v
time.sleep(1)
# stop(90 angle)
kit.servo[ch].angle = 90
Der Punkt ist
kit.servo[ch].set_pulse_width_range(500, 2400)
Überprüfen Sie dann das Datenblatt des Servomotors SG-90 und stellen Sie es ein, da es den Anschein hat, dass die Unterseite einen Impuls von 0,5 ms und die Oberseite einen Impuls von 2,4 ms hat. Hat. Selbst mit diesem Parameter denke ich, dass es für 180 Grad nicht ausreicht, aber vorerst ist es gut.
Recommended Posts