Now its working! tnx to you Nick Gammon :D!
Master
// Written by Nick Gammon
// February 2012
#include <Wire.h>
const byte MY_ADDRESS = 25;
const byte SLAVE_ADDRESS = 42;
String capSensValues;
String analogSensValues;
int analogInPin[16]; //array para abrir as 4 portas analogicas
void setup()
{
Wire.begin (MY_ADDRESS);
Wire.onReceive (receiveEvent);
Serial.begin(9600);
} // end of setup
void loop()
{
Wire.beginTransmission (SLAVE_ADDRESS);
Wire.write ("A");
Wire.endTransmission ();
while (Wire.available () > 0)
{
byte b;
b = Wire.read ();
capSensValues += b;
}
//if ( Serial.available()) { // Se serial estiver disponivel faca
// char recebido = Serial.read(); // le o que vem da porta serial e atribui em uma variavel do tipo char
// if recebido =
for (int i=0; i<=15;i++){
analogInPin[i] = i;
int analog = analogRead(analogInPin[i])/4; //Atribui o valor do sensor 0,1,2 ou 3 e divide por 4 na variavel analog
analogSensValues += analog;
analogSensValues += ",";
}
analogSensValues += capSensValues;
Serial.println(analogSensValues);
analogSensValues = "";
capSensValues = "";
}
void receiveEvent (int howMany)
{
/* while (Wire.available () > 0)
{
byte b;
b = Wire.read ();
capSensValues += b;
}
//Serial.println(capSensValues);
*/
// end of while available
} // end of receiveEvent
Slave
// Written by Nick Gammon
// February 2012
#include <Wire.h>
#include <CapSense.h>
const byte MY_ADDRESS = 42;
const byte OTHER_ADDRESS = 25;
CapSense cs_2_3 = CapSense(2,3); // 10M resistor between pins 4 & 2, pin 2 is sensor pin, add a wire and or foil if desired
CapSense cs_2_4 = CapSense(2,4); // 10M resistor between pins 4 & 6, pin 6 is sensor pin, add a wire and or foil
CapSense cs_2_5 = CapSense(2,5); // 10M resistor between pins 4 & 8, pin 8 is sensor pin, add a wire and or foil
CapSense cs_2_6 = CapSense(2,6);
CapSense cs_2_7 = CapSense(2,7);
CapSense cs_2_8 = CapSense(2,8);
CapSense cs_2_9 = CapSense(2,9);
CapSense cs_2_10 = CapSense(2,10);
CapSense cs_2_11 = CapSense(2,11);
CapSense cs_2_12 = CapSense(2,12);
CapSense cs_2_13 = CapSense(2,13);
byte p3tr=0;
byte p4tr=0;
byte p5tr=0;
byte p6tr=0;
byte p7tr=0;
byte p8tr=0;
byte p9tr=0;
byte p10tr=0;
byte p11tr=0;
byte p12tr=0;
byte p13tr=0;
void setup ()
{
cs_2_3.set_CS_AutocaL_Millis(0xFFFFFFFF);
cs_2_4.set_CS_AutocaL_Millis(0xFFFFFFFF);
cs_2_5.set_CS_AutocaL_Millis(0xFFFFFFFF);
cs_2_6.set_CS_AutocaL_Millis(0xFFFFFFFF);
cs_2_7.set_CS_AutocaL_Millis(0xFFFFFFFF);
cs_2_8.set_CS_AutocaL_Millis(0xFFFFFFFF);
cs_2_9.set_CS_AutocaL_Millis(0xFFFFFFFF);
cs_2_10.set_CS_AutocaL_Millis(0xFFFFFFFF);
cs_2_11.set_CS_AutocaL_Millis(0xFFFFFFFF);
cs_2_12.set_CS_AutocaL_Millis(0xFFFFFFFF);
cs_2_13.set_CS_AutocaL_Millis(0xFFFFFFFF);
cs_2_3.set_CS_Timeout_Millis(2);
cs_2_4.set_CS_Timeout_Millis(2);
cs_2_5.set_CS_Timeout_Millis(2);
cs_2_6.set_CS_Timeout_Millis(2);
cs_2_7.set_CS_Timeout_Millis(2);
cs_2_8.set_CS_Timeout_Millis(2);
cs_2_9.set_CS_Timeout_Millis(2);
cs_2_10.set_CS_Timeout_Millis(2);
cs_2_11.set_CS_Timeout_Millis(2);
cs_2_12.set_CS_Timeout_Millis(2);
cs_2_13.set_CS_Timeout_Millis(2);
Wire.begin (MY_ADDRESS);
Wire.onReceive (receiveEvent);
Serial.begin(9600);
} // end of setup
void loop()
{
long total3 = cs_2_3.capSense(1000);
long total4 = cs_2_4.capSense(1000);
long total5 = cs_2_5.capSense(1000);
long total6 = cs_2_6.capSense(1000);
long total7 = cs_2_7.capSense(1000);
long total8 = cs_2_8.capSense(1000);
long total9 = cs_2_9.capSense(1000);
long total10 = cs_2_10.capSense(1000);
long total11 = cs_2_11.capSense(1000);
long total12 = cs_2_12.capSense(1000);
long total13 = cs_2_13.capSense(1000);
if (total3>100){
p3tr = 1;
}
else{
p3tr = 0;
}
if(total4>100){
p4tr = 1;
}
else{
p4tr = 0;
}
if(total5>100){
p5tr = 1;
}
else{
p5tr = 0;
}
if(total6>100){
p6tr = 1;
}
else{
p6tr = 0;
}
if(total7>100){
p7tr = 1;
}
else{
p7tr = 0;
}
if(total8>100){
p8tr = 1;
}
else{
p8tr =0;
}
if(total9>100){
p9tr = 1;
}
else{
p9tr = 0;
}
if(total10>100){
p10tr = 1;
}
else{
p10tr = 0;
}
if(total11>100){
p11tr = 1;
}
else{
p11tr = 0;
}
if(total12>100){
p12tr = 1;
}
else{
p12tr = 0;
}
if(total13>100){
p13tr = 1;
}
else{
p13tr = 0;
}
while (Wire.available () > 0)
{
char c;
c = Wire.read ();
if (c=='A'){
Wire.beginTransmission (OTHER_ADDRESS);
byte a[11] = {p3tr,p4tr,p5tr,p6tr,p7tr,p8tr,p9tr,p10tr,p11tr,p12tr,p13tr};
Wire.write(a,11);
Wire.endTransmission ();
Serial.println(c);
}
}
/* Wire.beginTransmission (OTHER_ADDRESS);
byte a[11] = {p3tr,p4tr,p5tr,p6tr,p7tr,p8tr,p9tr,p10tr,p11tr,p12tr,p13tr};
Wire.write(a,11);
Wire.endTransmission ();
*/
delay (1);
} // end of loop
// called by interrupt service routine when incoming data arrives
void receiveEvent (int howMany)
{
/* while (Wire.available () > 0)
{
char c;
c = Wire.read ();
if (c=='A'){
Wire.beginTransmission (OTHER_ADDRESS);
byte a[11] = {p3tr,p4tr,p5tr,p6tr,p7tr,p8tr,p9tr,p10tr,p11tr,p12tr,p13tr};
Wire.write(a,11);
Wire.endTransmission ();
Serial.println(c);
}
}*/ // end of while available
} // end of receiveEvent
I didnt finish yet but its working