Here’s the code all in one file:
#include <Wire.h>
#include "i2c.h"
int read_register(int device_address, byte reg_address);
void write_register(int device_address, byte reg_address, byte data);
void setup()
{
}
void loop()
{
read_register(3,2);
write_register(4,3,2);
}
int read_register(int device_address, byte reg_address)
{
int v;
Wire.beginTransmission(device_address);
Wire.write(reg_address); // register to read
Wire.endTransmission();
Wire.requestFrom(device_address, 1); // read a byte
while(!Wire.available()) {
// waiting
}
v = Wire.read();
return v;
}
void write_register(int device_address, byte reg_address, byte data){
Wire.beginTransmission(device_address); // Select device
Wire.write(reg_address); // Select register
Wire.write(data); // Write to register
Wire.endTransmission();
}
However, when I move the read_register and write_register declarations to the i2c.h file called at the beginning, I get “‘byte’ has not been declared” compiler error. My intent is to move all the i2c functions to another file, but the byte error makes me worry that I am doing something wrong. I put #include <Wire.h> all over without success.
I’m on windows 8.1 and an arduino Uno. It has been a very long while since I programmed!
Thanks in advance!