Go Down

Topic: [SOLVED] I2C Coms multiple values (Read 364 times) previous topic - next topic

robtillaart

Well done,
now you figured out yourself  you will never forget ;)
Rob Tillaart

Nederlandse sectie - http://arduino.cc/forum/index.php/board,77.0.html -
(Please do not PM for private consultancy)

grantastley

Never mind everyone.
I have managed to figure this out myself.

I used an array to send the data.  
Bellow is the code for anyone else wanting to know how to accomplish this.

Master
Code: [Select]
// Master
#include <Wire.h>

int x=0;
int Trims=0;
int I2Cdata[2];

void setup()
{
 Serial.begin(9600);
 
 Wire.begin();  // Start I2C as Master
}

void loop()
{
 
 if(digitalRead(3)==HIGH){
   Wire.requestFrom(5,4);
   
   I2Cdata[0]=Wire.read();
   I2Cdata[1]=Wire.read();
     
     x = I2Cdata[0];
     Trims = (I2Cdata[1]);
 }
 
 Serial.print("x = ");
 Serial.println(x);
 Serial.print("Trims = ");
 Serial.println(Trims);
 
 if(digitalRead(3)==LOW) x=10;
 
 delay(500);
 
}


Slave
Code: [Select]
// Slave
#include <Wire.h>

int x=0;
int Trims=0;

unsigned char I2Cdata[2];

void setup()
{
 pinMode(3, INPUT);
 pinMode(4, INPUT);
   
 Wire.begin(5);  // Start I2C as slave with address 5
 
 Wire.onRequest(RequestData);
}

void loop()
{
 Trims = analogRead(0);
 map(Trims, 0, 1024, 0, 255);
 constrain(Trims, 0, 255);
 
 if(digitalRead(3)==HIGH) x=3;
 else if(digitalRead(4)==HIGH) x=4;
 else x=6;
 
 I2Cdata[0] = x;
 I2Cdata[1] = Trims;
   
 delay(100);  
}

void RequestData()
{
Wire.write(I2Cdata,2);
}


Cheers
Grant....

grantastley

Could I do this by sending an array of data? Something like
Code: [Select]

int I2Cdata[]={x, Trims}; then
Wire.write(I2Cdata[]);  // in void RequestData ()

grantastley

So if I am requesting 2 ints it should be 4 bytes?

anyone know how to send to ints at the same time, or one straight after the other?

robtillaart

Quote
//Also not sure how many bits I should be requesting


a typical int is 2 bytes
Rob Tillaart

Nederlandse sectie - http://arduino.cc/forum/index.php/board,77.0.html -
(Please do not PM for private consultancy)

Go Up