// ****************************************************************************************** // // SETTINGS // // ****************************************************************************************** // // SERIAL COMMUNICATION #include #define RX 7 // For beaver board = 1 // For Master = 8 (in network = 7) #define TX 8 // For beaver board = 0 // For Master = 7 (in network = 8) SoftwareSerial Serial(RX,TX); // Other variables char ID; // Beaver int randomNum; // Random number int pin_random = 6; // Spare pin (used for reading random noise for the seed) char ACK = 'n'; // We use this variable to acknowledge communication between boards int pin_R = 3; // LED red - used for debugging int pin_G = 2; // LED green - used for debuggin int pin_B = 1; // LED blue - used for debuggin int pin_W = 0; // LED white - used for debuggin // ****************************************************************************************** // // SETUP // // ****************************************************************************************** // void setup() { // Set pin modes pinMode(pin_random, INPUT); pinMode(pin_R, OUTPUT); // LED R pinMode(pin_G, OUTPUT); // LED G pinMode(pin_B, OUTPUT); // LED B pinMode(pin_W, OUTPUT); // LED W // Start serial communication Serial.begin(9600); //Sets the data rate in bits per second (baud) for serial data transmission Serial.println("Init master"); // Random number generator randomSeed(analogRead(pin_random)); } // ****************************************************************************************** // // LOOP // // ****************************************************************************************** // void loop() { ID = '1'; beaverUP(ID); ID = '3'; beaverUP(ID); ID = '2'; beaverUP(ID); ID = '4'; beaverUP(ID); } // ****************************************************************************************** // // OTHER FUNCTIONS // // ****************************************************************************************** // // BLINK void blink1(int pin_color) { digitalWrite(pin_color, HIGH); // turn the LED on (HIGH is the voltage level) delay(200); // wait for a second digitalWrite(pin_color, LOW); // turn the LED on (HIGH is the voltage level) } // CALL BEAVER UP AND WAIT FOR IT TO HIDE void beaverUP(char ID) { // Call the beaver continuously unntil it replies while(Serial.available() == 0){ Serial.write(ID); delay(1000); Serial.write('u'); delay(1000); if(ID == '1'){blink1(pin_R); blink1(pin_W);} if(ID == '2'){blink1(pin_G); blink1(pin_W);} if(ID == '3'){blink1(pin_B); blink1(pin_W);} if(ID == '4'){blink1(pin_W); blink1(pin_W);} } blink1(pin_W); while(ACK == 'n'){ // Wait until beaver sends a warning blink1(pin_R); if(Serial.available()){ char val = Serial.read(); blink1(pin_G); if(val == 'H'){ // If the warning = hides (H) ... ACK = 'y'; // escape the loop! blink1(pin_B); } } } ACK = 'n'; // Reset ACK flag for next time blink1(pin_W); }