#include "Arduino.h" #include #include #include "RTClib.h" int datasent[7]; int datarec [7]; int data1 = 0; unsigned long int data2 = 0; int data3 = 0; int data4 = 0; int data5 = 0; int data6 = 0; int datarec1 = 0; unsigned long int datarec2 = 0; int datarec3 = 0; int datarec4 = 0; int datarec5 = 0; int datarec6 = 0; int mth = 0; int dy = 0; int hr = 0; int mn = 0; int sc = 0; //Variables for reading time int mn1 = 0; //Temp Variable to store constant minute to check out stations int pinState = 0; // Read pin HIGH or LOW // Debug Only int z = 0; // Variable for FOR loop // ..........................TRANSMITTER.....................TRANSMITTER //,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,RTC DR3231,,,,,,,,,,,,,,,,,,,,,,,, RTC_DS3231 rtc; char daysOfTheWeek[7][12] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"}; //,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,NRF24,,,,,,,,,,,,,,,,,,,,,,,, RF24 radio(9, 10); byte addresses[][6] = {"1Node", "2Node"}; //,,,,,,,,,,,,,,,,,,,,,,MANUAL STATION INPUT BY PUSH BUTTON AND POTENTIOMETER,,,,,,,,,,,,,,,,,,,,,,,, const int buttonPin = 2; // the number of the pushbutton pin const int ledPin = 13; // the number of the LED pin int sensorPin1 = A0; // select the input pin for the potentiometer int sensorValue1 = 0; // variable to store the value coming from the sensor int buttonState1 = 0; // variable for reading the pushbutton status int sensorPin2 = A1; // select the input pin for the potentiometer int sensorValue2 = 0; // variable to store the value coming from the sensor int buttonState2 = 0; // variable for reading the pushbutton status int dataA4 = 0; // variable station Number Manual Start int dataA5 = 0; // variable station run time in minutes int flashLED = 0; // variable to keep manually selected LED flashing void setup() { Serial.begin(9600); Serial.println(" .....TRANSMITTER..... "); pinMode (6, OUTPUT); digitalWrite (6, LOW); pinMode (7, OUTPUT); digitalWrite (7, LOW); //,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,NRF24,,,,,,,,,,,,,,,,,,,,,,,, radio.begin(); radio.setPALevel(RF24_PA_MIN); radio.setDataRate(RF24_2MBPS); radio.setChannel(124); radio.openWritingPipe(addresses[1]); radio.openReadingPipe(1, addresses[0]); //,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,RTC DR3231,,,,,,,,,,,,,,,,,,,,,,,, #ifndef ESP8266 while (!Serial); // for Leonardo/Micro/Zero #endif Serial.begin(9600); delay(1000); // wait for console opening if (! rtc.begin()) { Serial.println("Couldn't find RTC"); while (1); } if (rtc.lostPower()) { Serial.println("RTC lost power, lets set the time!"); } // following line sets the RTC to the date & time this sketch was compiled //rtc.adjust(DateTime(F(__DATE__), F(__TIME__))); // This line sets the RTC with an explicit date & time, for example to set //January 21, 2014 at 3am you would call: //rtc.adjust(DateTime(2019, 6, 7, 19, 33, 0)); //,,,,,,,,,,,,,,,,,,,,,,MANUAL STATION INPUT BY PUSH BUTTON AND POTENTIOMETER,,,,,,,,,,,,,,,,,,,,,,,, pinMode(ledPin, OUTPUT); pinMode(buttonPin, INPUT_PULLUP); for (int z = 26; z < 36; z++) { pinMode (z, OUTPUT); digitalWrite(z, LOW); // Set output Pins //Serial.println (z); //Debug Only delay(10); } } void transMit() { radio.stopListening(); if (radio.write( &datasent, sizeof(datasent) )) Serial.print ("SENT ... "); Serial.print (datasent[0]); Serial.print ("/"); Serial.print (datasent[1]); Serial.print ("/"); Serial.print (datasent[2]); Serial.print ("/"); Serial.print (datasent[3]); Serial.print ("/"); Serial.print (datasent[4]); digitalWrite (((datasent[0]) + 16) ,HIGH) ; digitalWrite (6, HIGH); delay(500); digitalWrite(6, LOW); radio.startListening(); } void loop() { //,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,RTC DR3231,,,,,,,,,,,,,,,,,,,,,,,, DateTime now = rtc.now(); // Use only if Current Time needs to be Serially Printed //Serial.print(now.year(), DEC); //Serial.print('/'); //Serial.print(now.month(), DEC); //Serial.print('/'); //Serial.print(now.day(), DEC); //Serial.print(" ("); //Serial.print(daysOfTheWeek[now.dayOfTheWeek()]); //Serial.print(") "); //Serial.print(now.hour(), DEC); //Serial.print(':'); //Serial.print(now.minute(), DEC); //Serial.print(':'); //Serial.print(now.second(), DEC); //Serial.println(); sc = (now.second()); delay(1000); //,,,,,,,,,,,,,,,,,,,,,,MANUAL STATION INPUT BY PUSH BUTTON AND POTENTIOMETER,,,,,,,,,,,,,,,,,,,,,,,, // PUSH BUTTON TO GROUND: //CHECK PB ON or OFF //Serial.println (" READ BUTTON"); data4 = 0; data5 = 0; // Reset input data prior to Pin Read buttonState1 = digitalRead(buttonPin); // pinState = (digitalRead(26));Serial.print ("Pin State ");Serial.println(pinState); // Debug Only if (buttonState1 == HIGH) { //Serial.println (" HIGH"); //Debug Only //digitalWrite(ledPin, LOW); //Serial.println (buttonState1); } if (buttonState1 == LOW) { //Serial.println (" LOW"); //Debug Only //digitalWrite(ledPin, HIGH); //Serial.println (buttonState1); //Debug Only // READ ANALOGUE PIN A0 (STATION NUMBER) sensorValue1 = ((255. / 1023.) * (analogRead(sensorPin1))); sensorValue1 = ((sensorValue1 / 17) + 10); // GIVE A RESULT BETWEEN 10 and 25 (the station numbers) //Serial.print(" Station Number ");Serial.print (sensorValue1); //Debug Only delay (100); // READ ANALOGUE PIN A1 (STATION TIME ON) sensorValue2 = ((255. / 1023.) * (analogRead(sensorPin2))); //Serial.print(" sensorValue2 is ");Serial.println(sensorValue2); sensorValue2 = ((sensorValue2 / 4)); // GIVE A RESULT BETWEEN 0 and 60 (minutes station on) //Serial.print(" TIME ON IS ");Serial.println(sensorValue2); //Debug Only //Serial.print(" Station Number ");Serial.print (sensorValue1); //Debug Only //Serial.print(" and is ON for ");Serial.print (sensorValue2);Serial.println(" Minutes "); //Debug Only int statManual = sensorValue1; //TO TRANSMIT MANUAL STATION NUMBER unsigned long int timeOnManual = sensorValue2; //TO TRANSMIT MANUAL TIME ON //Serial.print (" StatM ");Serial.print(statManual);Serial.print (" TimeOn ");Serial.println(timeOnManual); data4 = statManual; data5 = timeOnManual; //Serial.print (" See this only if BUTTON STATE is LOW"); //Debug Only } //,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, STATIONS ,,,,,,,,,,,,,,,,,,,,,, mn1 ++; Serial.print(" MN1 IS "); Serial.println(mn1); if (mn1 > 100) { mn1 = 0; } if (mn1 < 6) { if (mn1 == 1) { datasent[0] = 10; datasent[1] = 1; datasent[2] = 0; } if (mn1 == 2) { datasent[0] = 11; datasent[1] = 2; datasent[2] = 0; } if (mn1 == 3) { datasent[0] = 12; datasent[1] = 3; datasent[2] = 0; } if (mn1 == 4) { datasent[0] = 13; datasent[1] = 4; datasent[2] = 0; } if (mn1 == 5) { datasent[0] = 14; datasent[1] = 4; datasent[2] = 0; } } //,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,NRF24,,,,,,,,,,,,,,,,,,,,,,,, //,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,TRANSMITTING,,,,,,,,,,,,,,,,,,,,,,,, if (mn1<6) { transMit(); } //,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,RECEIVING,,,,,,,,,,,,,,,,,,,,,,,, radio.startListening(); while ( radio.available()) radio.read( &datarec, sizeof(datarec) ); digitalWrite (7, HIGH); delay(500); digitalWrite(7, LOW); Serial.print (" received "); Serial.print(datarec[0]); Serial.print ("/"); Serial.print(datarec[1]); Serial.print ("/"); Serial.print(datarec[2]); Serial.print ("/"); Serial.print(datarec[3]); Serial.print ("/"); Serial.println(datarec[4]); //Serial.print("datarec1 ");Serial.print(datarec1); //Debug Only //Serial.print("datarec3 ");Serial.println(datarec3); //Debug Only //if ((datarec[0] == 10) && (datarec[2] == 0)) { // Turn on Pin for Manual selection //Serial.println(data4); //if (data4 > 0) // { // flashLED = (data4); //} // if ((flashLED) == 19) // { digitalWrite((flashLED + 7), HIGH); delay(750); digitalWrite((flashLED + 7), LOW); // } // delay (100); //radio.stopListening(); // if (radio.write( &datasent, sizeof(datasent) )) // Serial.print ("SENT ... "); Serial.print (datasent[0]); Serial.print ("/"); Serial.print (datasent[1]); // Serial.print ("/"); Serial.print (datasent[2]); Serial.print ("/"); Serial.print (datasent[3]); // Serial.print ("/"); Serial.print (datasent[4]); // digitalWrite (6, HIGH); delay(500); digitalWrite(6, LOW); }