oh ... thanks for the advise ... i'm a newbie in the forum.
But here goes:
#include <Time.h>
#include <stdlib.h>
#include <Wire.h>
#include <String.h>
#include <wdt.h>
#include <avr/wdt.h>
#include <EEPROM.h>
char value[4];
int address=0,MUXS1=8,MUXS2=9,MUXU1=5,MUXU2=6,led=13,x=999,y=0,z=0,w=0,q=0;
char v[4],u[4],r[4],t[12];
void setup()
{
Wire.begin(4);
Wire.onRequest(requestEvent); // join i2c bus with address #4
Wire.onReceive(receiveEvent); // register event
Serial.begin(115200); // start serial for output
pinMode(MUXU1, OUTPUT);
digitalWrite(MUXU1,LOW);
pinMode(MUXU2, OUTPUT);
digitalWrite(MUXU2,LOW);
pinMode(MUXS1, OUTPUT);
digitalWrite(MUXS1,LOW);
pinMode(MUXS2, OUTPUT);
digitalWrite(MUXS2,LOW);
watchdogStart();
}
void watchdogStart(void)
{
cli(); // disable all interrupts
wdt_reset(); // reset the WDT timer
// Enter Watchdog Configuration mode:
WDTCSR |= (1<<WDCE) | (1<<WDE); // Set Watchdog settings:
WDTCSR = (0<<WDIE) | (1<<WDE) | (1<<WDP3) | (0<<WDP2) | (1<<WDP1) | (1<<WDP0); //8s WDT
sei();
}
void loop()
{
wdt_reset();
watchdogStart();
}
void receiveEvent(int howMany)
{
//int y=0,z=0,w=0,q=0;
if(1 < Wire.available()) // loop through all but the last
{
while(0<Wire.available()){
char c = Wire.read(); // receive byte as a character
Serial.println(c);
} // print the character
}
else{
x = Wire.read();
}
Serial.println(x); // print the integer
}
void requestEvent()
{
switch (x){
case 0x30://ASCII_0
digitalWrite(MUXS1, HIGH);
digitalWrite(MUXS2, LOW);
for(int k=0;k<3;k++){
value[k] = EEPROM.read(k);
}
value[3]='0';
Serial.println(value);
digitalWrite(MUXS1, HIGH);
digitalWrite(MUXS2, HIGH);
for(int k=0;k<3;k++){
value[k] = EEPROM.read(k);
}
value[3]='0';
Serial.println(value);
break;
case 0x31://ASCII_1
digitalWrite(MUXS1, LOW);
digitalWrite(MUXS2, HIGH);
z=analogRead(1);
z=z>>2;
Wire.write(z);
break;
case 0x32://ASCII_2
itoa(analogRead(0),v,10);//Voltage
itoa(analogRead(1),u,10); //Current
itoa(analogRead(2),r,10);//Temperature
strcat(t, v);
strcat(t, u);
strcat(t, r);
Wire.write(t);
break;
case 0x33://ASCII_3
digitalWrite(MUXS1, LOW);
digitalWrite(MUXS2, HIGH);
Serial.println("Shello");//uC_CMD_SEND_STRING
break;
case 0x34://ASCII_4_ADCS_Data
digitalWrite(MUXS1, LOW);
digitalWrite(MUXS2, HIGH);
Serial.println("Shello");//uC_CMD_SEND_STRING
break;
case 0x35://ASCII_5
Serial.println("Shello");//uC_CMD_SEND_STRING
break;
}
x=999;
delay(100);
}