2.0 KiB
2.0 KiB
Motion controler code for the RPI Pico (RP2040)
This project is a motion controller firmware for the RPI Pico (RP2040), designed for plug-and-play use with modular code and a clear architecture.
I2C description
The robot’s I2C communication works as follows:
- Send the device address + R/W bit (to select read or write mode).
- Send the target register address (to read from or write to).
- Read or write the register data. Multiple registers can be read/written sequentially, with the address auto-incrementing after each operation.
This firmware is coded to be a slave when adressed. Its address is 0x09 which you can change if there is any conflict whit other hardware.
Adress | R/W | Description | Encoding |
---|---|---|---|
0x00 | W | Speed motor 1 | -128 - 127 |
0x01 | W | Speed motor 2 | -128 - 127 |
0x02 | W | Speed motor 3 | -128 - 127 |
0x03 | W | Speed motor 4 | -128 - 127 |
0x04 | W | Servo 1 position selection | 0 - 1 |
0x05 | W | Servo 2 position selection | 0 - 1 |
0x06 | W | Servo 3 position selection | 0 - 1 |
0x07 | W | Servo 4 position selection | 0 - 1 |
Motors communication description
Motors are «connected» to their respective I2C buffer address.
To control a motor you need to write data to its adress of the form :
int8_t speed;
Value goes from -128 to 127.
Servo motors communication description
Servo motors are «connected» to their respective I2C buffer address.
To control a servo motor you need to write data to its adress of the form :
uint8_t close;
Value is 0 or 1 for the open pos or the close pos.