Dieser Beitrag beschreibt die Ansteuerung von Modellbauservos durch den Raspberry Pi über den I2C-Bus. Hierbei wird, wie auch im vorherigen Beitrag, ein PiKoder/SSC PRO als I2C Slave eingesetzt, der die präzise Erzeugung der Impulse zur Servoansteuerung übernimmt.
Die erforderlichen Verbindungen zwischen dem Raspberry Pi und und dem PiKoder/SSC PRO sind im nachfolgenden Bild dargestellt. Der Raspberry Pi übernimmt die Spannungsversorgung.
Die Ansteuerung der Servos erfolgt über Python-Programme (Version 2.x). Das folgende Beispiel zeigt den prinzipiellen Ablauf:
# Control of RC servos by I2C with PiKoder/SSC PRO # # Please refer to www.pikoder.com for more information # # Imports import smbus, os import time import subprocess # # Init variables ServoPosition = 0 ReturnCode = 0 bus = smbus.SMBus(1) # # Main Loop while 1: try: bus.write_byte_data(0x40,0x1,ServoPosition) ReturnCode = 0 ServoPosition = (ServoPosition + 20) % 255 except IOError as err: ReturnCode = err.errno subprocess.call('i2cdetect','-y','1') print ("Servo position: ", ServoPosition, " - Return code: ", ReturnCode) time.sleep(1)
Weitere Informationen zum PiKoder/SSC PRO wie ein ausführliches USER’s Manual und Schaltungsvorschläge finden Sie auf der PiKoder/SSC PRO Webseite.