Hi all!
I just want to ask how do I communicate between Arduino Mega and Uno. I am trying to send analog data to change the flow of the loop of my Slave board. However, I am unable to do so.
Is it possible?
Here is my Master Code:
#include <Wire.h>
int DA = A0;
int sensorvalue = 0;
void setup() {
Serial.begin(9600);
Wire.begin();
}
void loop() {
sensorvalue = analogRead(DA);
Serial.print("Analog: ");
Serial.println(sensorvalue);
Wire.beginTransmission(5);
Wire.write(sensorvalue);
Wire.endTransmission();
}
And here is my Slave Code:
#include <Wire.h>
int threshold = 532;
byte SlaveReceived = 0;
int North[] = {2, 3, 4};
int West[] = {5, 6, 7};
int South[] = {8, 9, 10};
int East[] = {11, 12, 13};
int redDelay = 5000;
int yellowDelay = 2000;
void setup() {
for (int i = 0; i < 3; i++) {
pinMode(North[i], OUTPUT);
pinMode(West[i], OUTPUT);
pinMode(South[i], OUTPUT);
pinMode(East[i], OUTPUT);
Serial.begin(9600);
Wire.begin(5);
Wire.onReceive(receiveEvent);
}
}
void loop() {
// Making Green LED at signal 1 and red LED's at other signal HIGH
digitalWrite(North[2], HIGH);
digitalWrite(North[0], LOW);
digitalWrite(West[0], HIGH);
digitalWrite(South[0], HIGH);
digitalWrite(East[0], HIGH);
delay(redDelay);
// Making Green LED at signal 1 LOW and making yellow LED at signal 1 HIGH for 2 seconds
digitalWrite(North[1], HIGH);
digitalWrite(North[2], LOW);
delay(yellowDelay);
digitalWrite(North[1], LOW);
//Serial.println(LastGreen);
// Making Green LED at signal 2 and red LED's at other signal HIGH
digitalWrite(North[0], HIGH);
digitalWrite(West[2], HIGH);
digitalWrite(West[0], LOW);
digitalWrite(South[0], HIGH);
digitalWrite(East[0], HIGH);
delay(redDelay);
// Making Green LED at signal 2 LOW and making yellow LED at signal 2 HIGH for 2 seconds
digitalWrite(West[1], HIGH);
digitalWrite(West[2], LOW);
delay(yellowDelay);
digitalWrite(West[1], LOW);
// Serial.println(LastGreen);
// Making Green LED at signal 3 and red LED's at other signal HIGH
digitalWrite(North[0], HIGH);
digitalWrite(West[0], HIGH);
digitalWrite(South[2], HIGH);
digitalWrite(South[0], LOW);
digitalWrite(East[0], HIGH);
delay(redDelay);
// Making Green LED at signal 3 LOW and making yellow LED at signal 3 HIGH for 2 seconds
digitalWrite(South[1], HIGH);
digitalWrite(South[2], LOW);
delay(yellowDelay);
digitalWrite(South[1], LOW);
//Serial.println(LastGreen);
// Making Green LED at signal 4 and red LED's at other signal HIGH
digitalWrite(North[0], HIGH);
digitalWrite(West[0], HIGH);
digitalWrite(South[0], HIGH);
digitalWrite(East[2], HIGH);
digitalWrite(East[0], LOW);
delay(redDelay);
// Making Green LED at signal 4 LOW and making yellow LED at signal 4 HIGH for 2 seconds
digitalWrite(East[1], HIGH);
digitalWrite(East[2], LOW);
delay(yellowDelay);
digitalWrite(East[1], LOW);
}
void receiveEvent(int howMany){
SlaveReceived = Wire.read();
if (SlaveReceived >= threshold) {
digitalWrite(North[1], HIGH);
digitalWrite(West[1], HIGH);
digitalWrite(South[1], HIGH);
digitalWrite(East[1], HIGH);
digitalWrite(North[0], LOW);
digitalWrite(West[0], LOW);
digitalWrite(South[0], LOW);
digitalWrite(East[0], LOW);
delay(yellowDelay);
digitalWrite(North[0], HIGH);
digitalWrite(West[0], HIGH);
digitalWrite(South[0], HIGH);
digitalWrite(East[0], HIGH);
digitalWrite(North[1], LOW);
digitalWrite(West[1], LOW);
digitalWrite(South[1], LOW);
digitalWrite(East[1], LOW);
delay(redDelay);
}
}
Thank you so much! <3