GolamMostafa:
Your codes should be like:char data = 0;
#define led 3
#include <Wire.h>
void setup()
{
Wire.begin();
Serial.begin(9600);
pinMode(led, OUTPUT);
}
void loop()
{
if(Serial.available() > 0) // Send data only when you receive data:
{
data = Serial.read();
Serial.print(data);
Serial.print("\n");
digitalWrite(led, HIGH); // flash LED when BT command received
delay(150);
digitalWrite(led, LOW);
Wire.beginTransmission(20);//SlaveAddress(A4); // SDA on Mega
Wire.write(data);
// Wire.endTransmission();
byte x = Wire.endTransmission();
if (x != 0x00)
{
Serial.print("Transmission Problem...!");
while(1); //wait for ever
}
Serial.println("Good Transmission.");//x, DEC);
}
}
**And:**
#include <Wire.h>
#define lights 4
volatile bool flag1 = false;
int data;
void setup()
{
Wire.begin(20); // SDA
Wire.onReceive(receiveEvent);
Serial.begin(9600);
}
void receiveEvent(int bytes)
{
//data = Wire.read();
flag1 = true;//Serial.print(data); //never ever issue print() command in this interrupt handler
}
void loop()
{
if(flag1 == true)
{
data = Wire.read();
if (data == 1)
{
analogWrite(lights,255);
Serial.println(data);
flag1 = false;
}
else
{
flag1 = false;
}
}
}
Just tried it and it still doesn't work. In fact, upon booting the Nano, it will only read the first command and nothing more. I send it the digit 1, it Serial.println's a 1, then prints "Transmission Problem..." as your code states. Then it never prints another digit or flashes the LED until I reboot it, but the LED on the actual BT module itself flashes as if it received a digit. As for the Mega, it still doesn't recognize anything.