Merge branch 'master' of https://github.com/alanbjohnston/CubeSatSim
commit
ecc50857d6
@ -0,0 +1,53 @@
|
|||||||
|
// Wire Master Reader
|
||||||
|
// by Nicholas Zambetti <http://www.zambetti.com>
|
||||||
|
|
||||||
|
// Demonstrates use of the Wire library
|
||||||
|
// Reads data from an I2C/TWI slave device
|
||||||
|
// Refer to the "Wire Slave Sender" example for use with this
|
||||||
|
|
||||||
|
// Created 29 March 2006
|
||||||
|
|
||||||
|
// This example code is in the public domain.
|
||||||
|
|
||||||
|
// modified by Alan Johnston to show reading registers 0 - 3
|
||||||
|
// code based on https://forum.arduino.cc/index.php?topic=211587.0
|
||||||
|
|
||||||
|
#include <Wire.h>
|
||||||
|
#define I2C_ADDRESS 0x4B
|
||||||
|
#define REGISTER_0 0x00
|
||||||
|
#define REGISTER_1 0x01
|
||||||
|
#define REGISTER_2 0x02
|
||||||
|
#define REGISTER_3 0x03
|
||||||
|
|
||||||
|
uint8_t reg; // I2C read register
|
||||||
|
|
||||||
|
void setup() {
|
||||||
|
Wire.begin(); // join i2c bus (address optional for master)
|
||||||
|
Serial.begin(9600); // start serial for output
|
||||||
|
pinMode(LED_BUILTIN, OUTPUT);
|
||||||
|
Serial.println("Starting");
|
||||||
|
}
|
||||||
|
|
||||||
|
void loop() {
|
||||||
|
for (reg=0; reg < 4; reg++) {
|
||||||
|
delay(5000);
|
||||||
|
digitalWrite(LED_BUILTIN, HIGH);
|
||||||
|
Wire.beginTransmission(I2C_ADDRESS);
|
||||||
|
Wire.write(reg);
|
||||||
|
Wire.endTransmission();
|
||||||
|
delay(100);
|
||||||
|
digitalWrite(LED_BUILTIN, LOW);
|
||||||
|
|
||||||
|
|
||||||
|
Wire.requestFrom(I2C_ADDRESS, 2); // request 2 bytes from I2C device
|
||||||
|
byte LSB = Wire.read();
|
||||||
|
byte MSB = Wire.read();
|
||||||
|
|
||||||
|
uint16_t register_value = ((MSB << 8) | LSB);
|
||||||
|
|
||||||
|
Serial.print("Read ");
|
||||||
|
Serial.print(register_value);
|
||||||
|
Serial.print(" from register ");
|
||||||
|
Serial.println(reg);
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,61 @@
|
|||||||
|
#include <Wire.h>
|
||||||
|
#define I2C_ADDRESS 0x4B
|
||||||
|
#define REGISTER_0 0x00
|
||||||
|
#define REGISTER_1 0x01
|
||||||
|
#define REGISTER_2 0x02
|
||||||
|
#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;
|
||||||
|
|
||||||
|
void setup() {
|
||||||
|
|
||||||
|
Wire.begin(I2C_ADDRESS);
|
||||||
|
Wire.onRequest(requestEvent);
|
||||||
|
Wire.onReceive(receiveEvent);
|
||||||
|
pinMode(LED_BUILTIN, OUTPUT);
|
||||||
|
Serial.begin(9600); // start serial for output
|
||||||
|
Serial.println();
|
||||||
|
Serial.println("Starting");
|
||||||
|
}
|
||||||
|
|
||||||
|
void loop() {
|
||||||
|
Serial.println("Waiting for register read");
|
||||||
|
delay(5000);
|
||||||
|
}
|
||||||
|
|
||||||
|
void receiveEvent(int bytes) {
|
||||||
|
// Read the first byte to determine which register is concerned
|
||||||
|
reg = Wire.read();
|
||||||
|
Serial.print("Read register ");
|
||||||
|
Serial.println(reg);
|
||||||
|
}
|
||||||
|
|
||||||
|
void requestEvent() {
|
||||||
|
// Read from the register variable to know what to send back
|
||||||
|
digitalWrite(LED_BUILTIN, HIGH);
|
||||||
|
if (reg == REGISTER_0) {
|
||||||
|
Wire.write((uint8_t *)®_0_value, sizeof(reg_0_value));
|
||||||
|
Serial.print("Writing value ");
|
||||||
|
Serial.println(reg_0_value);
|
||||||
|
} else if (reg == REGISTER_1) {
|
||||||
|
Wire.write((uint8_t *)®_1_value, sizeof(reg_1_value));
|
||||||
|
Serial.print("Writing value ");
|
||||||
|
Serial.println(reg_1_value);
|
||||||
|
} else if (reg == REGISTER_2) {
|
||||||
|
Wire.write((uint8_t *)®_2_value, sizeof(reg_2_value));
|
||||||
|
Serial.print("Writing value ");
|
||||||
|
Serial.println(reg_2_value);
|
||||||
|
} else if (reg == REGISTER_3) {
|
||||||
|
Wire.write((uint8_t *)®_3_value, sizeof(reg_3_value));
|
||||||
|
Serial.print("Writing value ");
|
||||||
|
Serial.println(reg_3_value);
|
||||||
|
} else {
|
||||||
|
Serial.println("Unknown register");
|
||||||
|
}
|
||||||
|
delay(50);
|
||||||
|
digitalWrite(LED_BUILTIN, LOW);
|
||||||
|
}
|
||||||
Loading…
Reference in new issue