SRM / Mbed 2 deprecated LabWork4

Dependencies:   mbed

Committer:
shut
Date:
Sun Jun 09 14:54:11 2019 +0000
Revision:
0:25f4809c2729
observer

Who changed what in which revision?

UserRevisionLine numberNew contents of line
shut 0:25f4809c2729 1 #include "Robot.h"
shut 0:25f4809c2729 2 #include "mbed.h"
shut 0:25f4809c2729 3
shut 0:25f4809c2729 4 I2C i2c(I2C_SDA, I2C_SCL );
shut 0:25f4809c2729 5 const int addr8bit = 20 << 1; // 7bit I2C address is 20; 8bit I2C address is 40 (decimal).
shut 0:25f4809c2729 6
shut 0:25f4809c2729 7 int16_t countsLeft = 0;
shut 0:25f4809c2729 8 int16_t countsRight = 0;
shut 0:25f4809c2729 9
shut 0:25f4809c2729 10
shut 0:25f4809c2729 11 void setSpeeds(int16_t leftSpeed, int16_t rightSpeed)
shut 0:25f4809c2729 12 {
shut 0:25f4809c2729 13 char buffer[5];
shut 0:25f4809c2729 14
shut 0:25f4809c2729 15 buffer[0] = 0xA1;
shut 0:25f4809c2729 16 memcpy(&buffer[1], &leftSpeed, sizeof(leftSpeed));
shut 0:25f4809c2729 17 memcpy(&buffer[3], &rightSpeed, sizeof(rightSpeed));
shut 0:25f4809c2729 18
shut 0:25f4809c2729 19 i2c.write(addr8bit, buffer, 5); // 5 bytes
shut 0:25f4809c2729 20 }
shut 0:25f4809c2729 21
shut 0:25f4809c2729 22 void setLeftSpeed(int16_t speed)
shut 0:25f4809c2729 23 {
shut 0:25f4809c2729 24 char buffer[3];
shut 0:25f4809c2729 25
shut 0:25f4809c2729 26 buffer[0] = 0xA2;
shut 0:25f4809c2729 27 memcpy(&buffer[1], &speed, sizeof(speed));
shut 0:25f4809c2729 28
shut 0:25f4809c2729 29 i2c.write(addr8bit, buffer, 3); // 3 bytes
shut 0:25f4809c2729 30 }
shut 0:25f4809c2729 31
shut 0:25f4809c2729 32 void setRightSpeed(int16_t speed)
shut 0:25f4809c2729 33 {
shut 0:25f4809c2729 34 char buffer[3];
shut 0:25f4809c2729 35
shut 0:25f4809c2729 36 buffer[0] = 0xA3;
shut 0:25f4809c2729 37 memcpy(&buffer[1], &speed, sizeof(speed));
shut 0:25f4809c2729 38
shut 0:25f4809c2729 39 i2c.write(addr8bit, buffer, 3); // 3 bytes
shut 0:25f4809c2729 40 }
shut 0:25f4809c2729 41
shut 0:25f4809c2729 42 void getCounts()
shut 0:25f4809c2729 43 {
shut 0:25f4809c2729 44 char write_buffer[2];
shut 0:25f4809c2729 45 char read_buffer[4];
shut 0:25f4809c2729 46
shut 0:25f4809c2729 47 write_buffer[0] = 0xA0;
shut 0:25f4809c2729 48 i2c.write(addr8bit, write_buffer, 1); wait_us(100);
shut 0:25f4809c2729 49 i2c.read( addr8bit, read_buffer, 4);
shut 0:25f4809c2729 50 countsLeft = (int16_t((read_buffer[0]<<8)|read_buffer[1]));
shut 0:25f4809c2729 51 countsRight = (int16_t((read_buffer[2]<<8)|read_buffer[3]));
shut 0:25f4809c2729 52 }
shut 0:25f4809c2729 53
shut 0:25f4809c2729 54 void getCountsAndReset()
shut 0:25f4809c2729 55 {
shut 0:25f4809c2729 56 char write_buffer[2];
shut 0:25f4809c2729 57 char read_buffer[4];
shut 0:25f4809c2729 58
shut 0:25f4809c2729 59 write_buffer[0] = 0xA4;
shut 0:25f4809c2729 60 i2c.write(addr8bit, write_buffer, 1); wait_us(100);
shut 0:25f4809c2729 61 i2c.read( addr8bit, read_buffer, 4);
shut 0:25f4809c2729 62 countsLeft = (int16_t((read_buffer[0]<<8)|read_buffer[1]));
shut 0:25f4809c2729 63 countsRight = (int16_t((read_buffer[2]<<8)|read_buffer[3]));
shut 0:25f4809c2729 64 }
shut 0:25f4809c2729 65
shut 0:25f4809c2729 66