The script is based on the XLoBorg library available for the XLoBorg module, except that we use WiringPi2, which is Python 3-friendly, to perform the I2C actions. Just like our motor/servo drivers, we also define it as a class, so that we can drop it into our code and easily replace it with alternative devices if required.
We import wiringpi2, time, and a library called struct (which allows us to quickly unpack a block of data read from the device into separate items).
We create the compass class, which will include the __init__(), initCompass(), and readCompassRaw() functions. The readCompassRaw() function is the equivalent of the standard XLoBorg ReadCompassRaw() function provided by their library.
The __init__() function ...