//SketchRF.ino 06/05/2022 09:55:18 //https://www.deviceplus.com/arduino/nrf24l01-rf-module-tutorial/ //Arduino Mega 2560 #include #include #include #define CE_PIN 9 #define CSN_PIN 10 byte addresses[][6] = {"Addr0", "Addr1"}; RF24 radio(CE_PIN, CSN_PIN); String sgUsername = ""; String sgDataInput = "";; char cgDataToSend[32]; char cgDataReceived[32]; unsigned long lgUpdateTime; int iFirstRun = 1; // 1 = First run int iAck = 0; // 1 = App is ready void setup() { Serial.begin(9600); radio.begin(); radio.setPALevel(RF24_PA_MAX); radio.setDataRate(RF24_1MBPS); radio.setRetries(3, 5); radio.openWritingPipe(addresses[0]); radio.openReadingPipe(1, addresses[1]); radio.startListening(); lgUpdateTime = millis(); } void loop() { if((iFirstRun == 1) && (iAck == 0)) { if ( Serial.available() ) //Get Acknowledgment from App (App is ready) { iAck = Serial.read(); if (iAck == 1) { iFirstRun = 0; Serial.print("Enter User Name"); Serial.println(); //Set User Name while (sgUsername == "") { if ( Serial.available() ) { sgUsername = Serial.readStringUntil('\n'); Serial.print("Welcome "); Serial.print(sgUsername); Serial.println(); } } } } } else { //Loop radio if(millis() - lgUpdateTime > 500) //Loop approx every 0.5 seconds { lgUpdateTime = millis(); //Listen for radio data radio.startListening(); if (radio.available()) { //Read data from radio radio.read(&cgDataReceived, sizeof(cgDataReceived)); if(Serial.available()) { Serial.print(cgDataReceived); Serial.println(); } } if(Serial.available()) { //Stop listening on radio radio.stopListening(); //Get serial input sgDataInput = "[" + sgUsername + "] " + Serial.readStringUntil('\n'); Serial.print(sgDataInput); Serial.println(); //Send data sgDataInput.toCharArray(cgDataToSend, 32); radio.write(&cgDataToSend, sizeof(cgDataToSend)); } } } }