Usage Examples

Published on 2017-03-01 in Servo Breakout for WeMos D1 Mini.

So here is example code you can use to communicate with the 18-channel and 20-channel servo controllers, for different environments that you can run on the ESP8266:

MicroPython\

import ustruct
from machine import I2C, Pin
i2c = I2C(scl=Pin(5), sda=Pin(4))
address = 0x10
servo = 4
position = 1500
i2c.writeto_mem(address, servo, ustruct.pack("<H", position))

NodeMCU

address = 0x10
servo = 4
position = 1500
sda = 2
scl = 1
i2c.setup(0, sda, scl, i2c.SLOW)
i2c.start(0)
i2c.address(0, address, i2c.TRANSMITTER)
i2c.write(0, servo)
i2c.write(0, bit.band(position, 0xff))
i2c.write(0, bit.rshift(position, 8))
i2c.stop()

Arduino

#include <Wire.h>
void setup() {
    int address = 0x10;
    int servo = 4;
    int position = 1500;
    Wire.begin();
    Wire.beginTransmission(address);
    Wire.write(servo);
    Wire.write(position & 0xff);
    Wire.write(position >> 8);
    Wire.endTransmission();
}
void loop() {
}