Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /* PROGRAM BY: RANDY N. CAÑADA,DEC 2025
- Arduino Uno wiring
- MOSI -> D11
- MISO -> D12
- SCK -> D13
- CSN -> D10
- CE -> D9
- Arduino Uno (Receiver + INA219 Feedback Transmitter)
- */
- #include <SPI.h>
- #include <nRF24L01.h>
- #include <RF24.h>
- #include <Wire.h>
- #include <Adafruit_INA219.h>
- RF24 radio(9, 10); // CE, CSN
- const byte address[][6] = {"00001", "00002"}; // ESP32->Arduino, Arduino->ESP32
- Adafruit_INA219 ina219;
- char receivedText[32];
- int LED = 7;
- void setup() {
- Serial.begin(9600);
- pinMode(LED, OUTPUT);
- radio.begin();
- radio.setPALevel(RF24_PA_MIN);
- radio.openReadingPipe(1, address[0]); // Listen for ESP32 commands
- radio.openWritingPipe(address[1]); // Send feedback to ESP32
- radio.startListening();
- if (!ina219.begin()) {
- Serial.println("Failed to find INA219 chip");
- while (1);
- }
- ina219.setCalibration_32V_2A();
- Serial.println("INA219 ready!");
- }
- void loop() {
- if (radio.available()) {
- radio.read(&receivedText, sizeof(receivedText));
- Serial.print("Received: ");
- Serial.println(receivedText);
- if (strcmp(receivedText, "LED ON") == 0) digitalWrite(LED, HIGH);
- else if (strcmp(receivedText, "LED OFF") == 0) digitalWrite(LED, LOW);
- // --- Measure battery ---
- float busVoltage = ina219.getBusVoltage_V();
- float current_mA = ina219.getCurrent_mA();
- char vStr[10], iStr[10], feedback[32];
- dtostrf(busVoltage, 4, 2, vStr);
- dtostrf(current_mA, 6, 1, iStr);
- snprintf(feedback, sizeof(feedback), "V=%sV I=%smA", vStr, iStr);
- // --- Send feedback ---
- radio.stopListening(); // Switch to TX
- delay(50); // Give ESP32 time to enter RX mode
- bool ok = radio.write(&feedback, sizeof(feedback));
- if (ok) {
- Serial.print("Sent feedback: ");
- Serial.println(feedback);
- } else {
- Serial.println("Feedback send failed.");
- }
- radio.startListening(); // Back to RX
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment