Xadow Motor can be used to control DC Motors. Its heart is a low-saturation two-channel bidirectional motor drive chip LB1836M, controlled by ATmega168 which handles the I2C communication with Xadow Main Board. Xadow Motor features a changeable I2C address. And it needs a separate low power to drive motors.
Xadow Motor can drive two DC motors simultaneously. Based on our available library, it is more easily to make motors run. Now let's get started.
Note: the library is not available for controlling stepper motor.
Hardware Installation:
Note: when connect Xadow 3-Axis Accelerometer to Xadow Main Board, you should concern about the connection direction. The connection method is that the unfilled corner of one xadow module need to connect to the right angle of another module(see four corners of each xadow module).
Upload Code:
/* there are four motor state you can use: -MSTOP -> stop -MFOR -> go forward -MREV -> go reverse -MHOLD -> hold the recent state **NOTE: there are four addresses you can choose, it's up to the hardware, for more information, refer to www.seeedstudio.com -MOTORADDRESS0 0x40 // A0 LOW, A1 LOW -MOTORADDRESS1 0x41 // A0 HIGH, A1 LOW -MOTORADDRESS2 0x42 // A0 LOW, A1 HIGH -MOTORADDRESS3 0x43 // A0 HIGH, A1 HIGH use this function: setMotorRun(unsigned char sMotorA, unsigned char sMotorB); you can contrl the both motor. */ #include <Wire.h> #include "XadowMotor.h" void setup() { Serial.begin(38400); xadowMotor.begin(MOTORADDRESS3); } void loop() { Serial.print("bat vol :"); Serial.println(xadowMotor.getBatVol()); xadowMotor.setMotorRun(MFOR, MFOR); delay(2000); xadowMotor.setMotorRun(MSTOP, MSTOP); delay(500); xadowMotor.setMotorRun(MREV, MREV); delay(2000); xadowMotor.setPwrDown(); delay(1000); xadowMotor.setWakeUp(); }
In this code, the function xadowMotor.begin(MOTORADDRESS3) is used to set Xadow Motor I2C Address. You need to change the parameter"MOTORADDRESS3" when you change the connection of A0 pin and A1 pin. Find details in the Reference.
Now you can see your motors will run forward or backward at regular intervals. By opening the serial monitor, you can observe your battery voltage.
The Xadow Motor has four I2C address which is decided by A0 pin and A1 pin. A0 and A1 are connected to H inside the board as default. But you can change it. For example, use a solder iron to break the connection between H and A0, then solder up ADR0 and L, so you make the value of A0 as L. You can find the relationship of hardware I2C address and the values of A0 and A1 in the following table.
I2C Address | A0 and A1 inputs state | the corresponding parameter in code | |
---|---|---|---|
A1 | A0 | ||
0x40 | L | L | MOTORADDRESS0 |
0x41 | L | H | MOTORADDRESS1 |
0x42 | H | L | MOTORADDRESS2 |
0x43 | H | H | MOTORADDRESS3 |
Xadow Motor Eagle File
Xadow Motor Schematic in PDF
Xadow Motor library
LB1836 datasheet