Hi,
I try to use the seeeduino mega as slave receiver, and the stalker as master sender.
The demo code as following, you can refer to them.
the seeeduino mega as slave receiver:
[code]#include <Wire.h>
void setup()
{
// Wire.onReceive(receiveEvent); // register event
Wire.begin(4); // join i2c bus with address #4
Wire.onReceive(receiveEvent); // register event
Serial.begin(9600); // start serial for output
}
void loop()
{
// delay(100);
}
// function that executes whenever data is received from master
// this function is registered as an event, see setup()
void receiveEvent(int howMany)
{
while(1 < Wire.available()) // loop through all but the last
{
byte c = Wire.receive(); // receive byte as a character
Serial.print©; // print the character
}
byte c= Wire.receive(); // receive byte as an integer
Serial.println(’ '); // print the integer
}[/code]
the stalker as master sender:
[code]#include “FileLogger.h”
#include “DS1307.h”
#include <WProgram.h>
#include <Wire.h>
#define Timing 0
#define Accept 1
#define Record 2
byte start[7]= { ‘B’,‘e’,‘g’,‘i’,‘n’,0x0D,0x0A};
byte buffer[20];
int temp;
byte ASCII[10]={‘0’,‘1’,‘2’,‘3’,‘4’,‘5’,‘6’,‘7’,‘8’,‘9’};
unsigned char result;
unsigned char state;
int time=0;
int oldtime=0;
byte x = 0;
int i;
void setup()
{
Serial.begin(9600); // start serial for output
Wire.begin(); // join i2c bus (address optional for master)
RTC.stop();
RTC.set(DS1307_MIN,30); //set the minutes
RTC.set(DS1307_HR,10); //set the hours
RTC.set(DS1307_DATE,22); //set the date
RTC.set(DS1307_MTH,12); //set the month
RTC.set(DS1307_YR,9); //set the year
RTC.start();
}
void loop()
{
switch(state)
{
case Timing:
time=RTC.get(DS1307_SEC,true);
delay(200);
if(time!=oldtime)
{
oldtime=time;
temp=RTC.get(DS1307_MTH,false);
buffer[0]=ASCII[(temp/10)];
buffer[1]=ASCII[(temp%10)];
buffer[2]='-';
temp=RTC.get(DS1307_DATE,false);
buffer[3]=ASCII[(temp/10)];
buffer[4]=ASCII[(temp%10)];
buffer[5]='-';
temp=RTC.get(DS1307_HR,false);
buffer[6]=ASCII[(temp/10)];
buffer[7]=ASCII[(temp%10)];
buffer[8]='-';
temp=RTC.get(DS1307_MIN,false);
buffer[9]=ASCII[(temp/10)];
buffer[10]=ASCII[(temp%10)];
buffer[11]='-';
//temp=RTC.get(DS1307_SEC,false);
buffer[12]=ASCII[(time/10)];
buffer[13]=ASCII[(time%10)];
buffer[14]=':';
state=Accept;
Wire.beginTransmission(4); // transmit to device #4
Wire.send("data:"); // sends five bytes
for(i=0;i<15;i++)
{
Serial.print(buffer[i]);
Wire.send(buffer[i]); // sends one byte
}
Wire.endTransmission(); // stop transmitting
Serial.println(' ');
}
break;
default:state=Timing;break;
}
}
[/code]
Regards.