NRF24 DRAWING TOO MUCH CURRENT

I am trying to make a remote control with NRF24 and Atmega328p. The full name of the NRF24 I am using is E01-ML01SP2. I fixed everything but it draws too much current. I have a remote control made by someone else and it draws 10 mAh but mine draws 70mAh. I am using Arduino IDE as a studio. I want to share my transmitter software with you.

#include "PinChangeInterrupt.h"
#include <avr/sleep.h>
#include <avr/interrupt.h>
#include  <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>

 
RF24 kablosuz(9, 10);
const byte adres[] = "arkis";
 
#define BTN0_PIN  5
#define BTN1_PIN  3
#define BTN2_PIN  4
#define BTN3_PIN  2

#define LED0_PIN  7

int led_yak1[1];
int led_yak2[1];
int led_yak3[1];
int led_yak4[1];

int led_sondur[1];

//PİL DEĞER OKUMA

const int ledPin = 6;
const int sensorPin = A0;
int sensorValue = 0;
const int threshold = 530;  //1.71V


void BTN0_ISR(void)
{
  wakeUp();
    sensorValue = analogRead(sensorPin);
  if (sensorValue > threshold) {

  while (digitalRead(BTN0_PIN) == HIGH)
  {
    kablosuz.write(led_yak1, 1);
    digitalWrite(LED0_PIN,HIGH);
  }
  kablosuz.write(led_sondur, 1);
  digitalWrite(LED0_PIN,LOW);
  }
  else{
  digitalWrite(ledPin,HIGH);
  delay(500);
  digitalWrite(ledPin,LOW);
  }
  }
 
void BTN1_ISR(void)
{
  wakeUp();
  sensorValue = analogRead(sensorPin);
  if (sensorValue > threshold) {

  while (digitalRead(BTN1_PIN) == HIGH)
  {
    kablosuz.write(led_yak2, 1);
    digitalWrite(LED0_PIN,HIGH);
  }
    kablosuz.write(led_sondur, 1);
    digitalWrite(LED0_PIN,LOW);
  }
  else{
  digitalWrite(ledPin,HIGH);
  delay(500);
  digitalWrite(ledPin,LOW);
  }
}
 
void BTN2_ISR(void)
{
  wakeUp();
  sensorValue = analogRead(sensorPin);
  if (sensorValue > threshold) {
  while (digitalRead(BTN2_PIN) == HIGH)
  {
    kablosuz.write(led_yak3, 1);
    digitalWrite(LED0_PIN,HIGH);
  }
  kablosuz.write(led_sondur, 1);
  digitalWrite(LED0_PIN,LOW);
  }
    else{
  digitalWrite(ledPin,HIGH);
  delay(500);
  digitalWrite(ledPin,LOW);
  }
}
 
void BTN3_ISR(void)
{
  wakeUp();
  sensorValue = analogRead(sensorPin);
  if (sensorValue > threshold) {
  while (digitalRead(BTN3_PIN) == HIGH)
  {
    kablosuz.write(led_yak4, 1);
    digitalWrite(LED0_PIN,HIGH);
  }
  kablosuz.write(led_sondur, 1);
  digitalWrite(LED0_PIN,LOW);
  }
      else{
  digitalWrite(ledPin,HIGH);
  delay(500);
  digitalWrite(ledPin,LOW);
  }
}

void wakeUp() {
  // Bu fonksiyon boş olabilir, sadece uyandırma için kullanılıyor
}

void setup()
{
  kablosuz.begin();
  kablosuz.openWritingPipe(adres);

  led_yak1[0] = 100;
  led_yak2[0] = 125;
  led_yak3[0] = 150;
  led_yak4[0] = 175;

  led_sondur[0] = 0;

  pinMode(LED0_PIN, OUTPUT);

  pinMode(BTN0_PIN, INPUT);
  pinMode(BTN1_PIN, INPUT);
  pinMode(BTN2_PIN, INPUT);
  pinMode(BTN3_PIN, INPUT);

  attachPCINT(digitalPinToPCINT(BTN0_PIN), BTN0_ISR, RISING);
  attachPCINT(digitalPinToPCINT(BTN1_PIN), BTN1_ISR, RISING);
  attachPCINT(digitalPinToPCINT(BTN2_PIN), BTN2_ISR, RISING);
  attachPCINT(digitalPinToPCINT(BTN3_PIN), BTN3_ISR, RISING);

  pinMode(ledPin, OUTPUT);
  pinMode(sensorPin, INPUT);
}
 
void loop()
{
  set_sleep_mode(SLEEP_MODE_PWR_DOWN);
  sleep_enable();
  sleep_mode();


  sleep_disable();
 


  // Tekrar uyutma hazırlığı
  attachInterrupt(digitalPinToInterrupt(BTN0_PIN), wakeUp, RISING);
  attachInterrupt(digitalPinToInterrupt(BTN1_PIN), wakeUp, RISING);
  attachInterrupt(digitalPinToInterrupt(BTN2_PIN), wakeUp, RISING);
  attachInterrupt(digitalPinToInterrupt(BTN3_PIN), wakeUp, RISING);



}
Parents Reply Children
Related