Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
main.cpp@1:9b7603b90063, 2020-08-31 (annotated)
- Committer:
- d2_h10s
- Date:
- Mon Aug 31 15:09:36 2020 +0000
- Revision:
- 1:9b7603b90063
- Parent:
- 0:6cf9362fc1a1
- Child:
- 2:4dd2f26c5648
for
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
d2_h10s | 0:6cf9362fc1a1 | 1 | #include "mbed.h" |
d2_h10s | 1:9b7603b90063 | 2 | #include <I2CSlave.h> |
d2_h10s | 0:6cf9362fc1a1 | 3 | #include "Robot.h" |
d2_h10s | 0:6cf9362fc1a1 | 4 | |
d2_h10s | 0:6cf9362fc1a1 | 5 | #define L_dir D2 |
d2_h10s | 0:6cf9362fc1a1 | 6 | #define L_step D3 |
d2_h10s | 0:6cf9362fc1a1 | 7 | #define L_enb D4 |
d2_h10s | 0:6cf9362fc1a1 | 8 | #define R_dir D5 |
d2_h10s | 0:6cf9362fc1a1 | 9 | #define R_step D6 |
d2_h10s | 0:6cf9362fc1a1 | 10 | #define R_enb D7 |
d2_h10s | 0:6cf9362fc1a1 | 11 | |
d2_h10s | 1:9b7603b90063 | 12 | #define CMD_NULL 0 |
d2_h10s | 1:9b7603b90063 | 13 | #define CMD_LM_MOVE 1 |
d2_h10s | 1:9b7603b90063 | 14 | #define CMD_RM_MOVE 2 |
d2_h10s | 1:9b7603b90063 | 15 | #define CMD_MOTOR_STOP 3 |
d2_h10s | 1:9b7603b90063 | 16 | #define CMD_ROBOT_MOVE 4 |
d2_h10s | 1:9b7603b90063 | 17 | #define CMD_ROBOT_STOP 5 |
d2_h10s | 1:9b7603b90063 | 18 | |
d2_h10s | 1:9b7603b90063 | 19 | uint8_t device_addr = 0x0A; |
d2_h10s | 1:9b7603b90063 | 20 | char data[52] = {device_addr, 1, CMD_NULL,}; |
d2_h10s | 1:9b7603b90063 | 21 | |
d2_h10s | 1:9b7603b90063 | 22 | I2CSlave slave(I2C_SDA, I2C_SCL); |
d2_h10s | 1:9b7603b90063 | 23 | AnalogIn adc_temp(ADC_TEMP); |
d2_h10s | 1:9b7603b90063 | 24 | |
d2_h10s | 0:6cf9362fc1a1 | 25 | Robot a(L_dir, L_step, L_enb, R_dir, R_step, R_enb); |
d2_h10s | 0:6cf9362fc1a1 | 26 | |
d2_h10s | 1:9b7603b90063 | 27 | //void writeByte(uint8_t address, uint8_t regAddress, uint8_t data); |
d2_h10s | 1:9b7603b90063 | 28 | //char readByte(uint8_t address, uint8_t regAddress); |
d2_h10s | 1:9b7603b90063 | 29 | int main() |
d2_h10s | 1:9b7603b90063 | 30 | { |
d2_h10s | 1:9b7603b90063 | 31 | slave.frequency(400000); |
d2_h10s | 1:9b7603b90063 | 32 | printf("slave started\n"); |
d2_h10s | 1:9b7603b90063 | 33 | slave.address(device_addr); |
d2_h10s | 1:9b7603b90063 | 34 | uint8_t status = 0; |
d2_h10s | 0:6cf9362fc1a1 | 35 | while(1){ |
d2_h10s | 1:9b7603b90063 | 36 | status = slave.receive(); |
d2_h10s | 1:9b7603b90063 | 37 | if(status) printf("status: %d\n", status); |
d2_h10s | 1:9b7603b90063 | 38 | if(status == I2CSlave::WriteAddressed){ |
d2_h10s | 1:9b7603b90063 | 39 | slave.read(data, 52); |
d2_h10s | 1:9b7603b90063 | 40 | printf("Read from master: %s\n", data); |
d2_h10s | 0:6cf9362fc1a1 | 41 | } |
d2_h10s | 0:6cf9362fc1a1 | 42 | } |
d2_h10s | 0:6cf9362fc1a1 | 43 | } |
d2_h10s | 0:6cf9362fc1a1 | 44 | |
d2_h10s | 1:9b7603b90063 | 45 | /*void writeByte(uint8_t address, uint8_t regAddress, uint8_t data){ |
d2_h10s | 1:9b7603b90063 | 46 | char data_write[2]; |
d2_h10s | 1:9b7603b90063 | 47 | data_write[0] = regAddress; |
d2_h10s | 1:9b7603b90063 | 48 | data_write[1] = data; |
d2_h10s | 1:9b7603b90063 | 49 | i2c.write(address, data_write, 2, 0); |
d2_h10s | 1:9b7603b90063 | 50 | } |
d2_h10s | 1:9b7603b90063 | 51 | |
d2_h10s | 1:9b7603b90063 | 52 | char readByte(uint8_t address, uint8_t regAddress){ |
d2_h10s | 1:9b7603b90063 | 53 | char data[1];// 'data' will store the register data |
d2_h10s | 1:9b7603b90063 | 54 | char data_write[1]; // for assigning register address |
d2_h10s | 1:9b7603b90063 | 55 | data_write[0] = regAddress; |
d2_h10s | 1:9b7603b90063 | 56 | i2c.write(address, data_write, 1, 1);// no stop |
d2_h10s | 1:9b7603b90063 | 57 | i2c.read(address, data, 1, 0); |
d2_h10s | 1:9b7603b90063 | 58 | return data[0]; |
d2_h10s | 1:9b7603b90063 | 59 | }*/ |