82 DSPL( (String)__DATE__ +
" " + (String)__TIME__ );
84 DSPL( dPrompt + F(
"I2C adresse : ")+String(address, HEX) );
85 Wire.begin( address );
91 for (
int i = 0; i <
MAXREG ; i++ ){
92 DSPL( dPrompt +
"registers[" + String(i,HEX) +
"] = " + String(
registers[i], HEX) );
116 DSPL( dPrompt +
"reg = " + String(
reg, HEX));
119 DSPL(
"( (registers[5] & (1 << i) ) >> i ) avec i = 1 vaut " + (String)( (
registers[5] & (1 << 1) ) >> 1 ) );
216 DSPL( dPrompt +
"D13 = " + String(digitalRead(
I2CLOWADD )?
"HIGH":
"LOW") );
229 for (
int i = 0; i < 8 ; i++ ){
230 if ( i != 4 && i !=5 ){
231 data = analogRead( 14+i );
232 registers[0x10 + i*2] = byte(data & 0xFF);
233 registers[0x10 + i*2+1] = byte((data & 0xFF00) >> 8);
250 for (
int i = 0; i < 8 ; i++ ){
251 if ( directions & (1 << i) ){
252 pinMode( i+2, OUTPUT );
253 digitalWrite( i+2, ( (
registers[5] & (1 << i) ) >> i ) );
255 int mode = (pullups & (1 << i) )?INPUT_PULLUP:INPUT;
256 pinMode( i+2, mode );
257 bitWrite(
registers[5], i, digitalRead( i+2) );
265 for (
int i = 0; i < 3 ; i++ ){
266 if ( directions & (1 << i) ){
267 pinMode( i+10, OUTPUT );
268 digitalWrite( i+10, ( (
registers[9] & (1 << i) ) >> i ) );
270 int mode = (pullups & (1 << i) )?INPUT_PULLUP:INPUT;
271 pinMode( i+10, mode );
272 bitWrite(
registers[9], i, digitalRead( i+10) );
#define ARDUINO_TYPE
Only for debug display.
void requestEvent()
I2C transmit handler for Read request.
nanoI2CIOexpander porject configuration file
void setup()
ARDUINO setup function.
#define MAXREG
Maximum number of register.
void updateDigitals()
update digital registers and digital outputs
void regInit()
initialisation of the register bank
#define MI_VERSION
Minor version.
#define I2CADD
I2C base address to be completed by D12..D10 pin states.
void receiveEvent(int howMany)
i2c receiver handler
int i2cBuildAddress()
Build i2c slave address with base ored with D12..D10 pin state.
int reg
global variable to track the registers address for i2c requests
byte registers[MAXREG]
Main registers bank. See config.h MAXREG macro for full mapping;.
all macros that i use tu print debug message on ARUDINO
int octetsRec
number of i2C received bytes
#define MA_VERSION
project version not file version
void updateAnalogs()
as its name tells us update analog registers with analog inputs values
void loop()
ARDUINO loop, cyclicly update analog registers and digital.