Alan Johnston 7 years ago
commit 3cecc4089d

@ -11,6 +11,8 @@
// modified by Alan Johnston to show reading registers 0 - 3
// code based on https://forum.arduino.cc/index.php?topic=211587.0
//
// This code is to simulate the Raspberry Pi acting as I2C bus master
#include <Wire.h>
#define I2C_ADDRESS 0x4B
@ -46,7 +48,7 @@ void loop() {
uint16_t register_value = ((MSB << 8) | LSB);
Serial.print("Read ");
Serial.print(register_value);
Serial.print(register_value, HEX); // display register value in HEXADECIMAL
Serial.print(" from register ");
Serial.println(reg);
}

@ -1,3 +1,9 @@
// Arduino I2C slave for reading 16 bit registers
//
// by Alan Johnston
//
// based on
#include <Wire.h>
#define I2C_ADDRESS 0x4B
#define REGISTER_0 0x00
@ -6,10 +12,8 @@
#define REGISTER_3 0x03
uint8_t reg; // I2C read register
unsigned int reg_0_value = 41151;
unsigned int reg_1_value = 53124;
unsigned int reg_2_value = 65535;
unsigned int reg_3_value = 0;
unsigned int reg_0_value, reg_1_value, reg_2_value, reg_3_value; // register variables
void setup() {
@ -24,6 +28,13 @@ void setup() {
void loop() {
Serial.println("Waiting for register read");
// Read from sensor here and set register variables
reg_0_value = 57007; // decimal values of registers for testing
reg_1_value = 48879;
reg_2_value = 3790;
reg_3_value = 4613;
delay(5000);
}
@ -40,19 +51,19 @@ void requestEvent() {
if (reg == REGISTER_0) {
Wire.write((uint8_t *)&reg_0_value, sizeof(reg_0_value));
Serial.print("Writing value ");
Serial.println(reg_0_value);
Serial.println(reg_0_value, DEC); // writing register value in DECIMAL format
} else if (reg == REGISTER_1) {
Wire.write((uint8_t *)&reg_1_value, sizeof(reg_1_value));
Serial.print("Writing value ");
Serial.println(reg_1_value);
Serial.println(reg_1_value, DEC);
} else if (reg == REGISTER_2) {
Wire.write((uint8_t *)&reg_2_value, sizeof(reg_2_value));
Serial.print("Writing value ");
Serial.println(reg_2_value);
Serial.println(reg_2_value, DEC);
} else if (reg == REGISTER_3) {
Wire.write((uint8_t *)&reg_3_value, sizeof(reg_3_value));
Serial.print("Writing value ");
Serial.println(reg_3_value);
Serial.println(reg_3_value, DEC);
} else {
Serial.println("Unknown register");
}

Loading…
Cancel
Save

Powered by TurnKey Linux.