Светятся все три светодиода ардуино

Может и нет. Но настораживает “аккумулятор от машины”.

@Arduino

Я вижу у вас выбор - либо купить мешок ардуин и менять их каждый час, либо разобраться, почему они горят.
Для второго варианта нужно нарисовать подробную схему с указанием всех подключений, включая питание и обозначенными номерами пинов. И выложить свой код ПОЛНОСТЬЮ. не забывайте про правила вставки кода в сообщение.

2 лайка

О! Мне из ремонта прислали хрустальный шар!
Модуль имеет фиксированные напряжения 3.3,5,9,12в Легко запутаться,т.к. визуально модули не отличаются.
И МК как раз запитан от 9в,т.к. при 5в не сгорел бы,а от 12в.сгорел бы сразу.

Сейчас нарисую схему

у меня mini560 на 5v. На выходе выдает 5,06v

может и не 13, но у меня ведь понижающий модуль на 5в.

Сейчас нарисую

На nrf24l01 припаяно ещё: электролитический конденсатор 100мкФ, керамический конденсатор(104) на 0,1 мкф



//--------------------- НАСТРОЙКИ ----------------------
#define CH_NUM 0x60   // номер канала (должен совпадать с передатчиком)
//--------------------- НАСТРОЙКИ ----------------------

//--------------------- ДЛЯ РАЗРАБОТЧИКОВ -----------------------
// УРОВЕНЬ МОЩНОСТИ ПЕРЕДАТЧИКА
// На выбор RF24_PA_MIN, RF24_PA_LOW, RF24_PA_HIGH, RF24_PA_MAX
#define SIG_POWER RF24_PA_MIN

// СКОРОСТЬ ОБМЕНА
// На выбор RF24_2MBPS, RF24_1MBPS, RF24_250KBPS
// должна быть одинакова на приёмнике и передатчике!
// при самой низкой скорости имеем самую высокую чувствительность и дальность!!
// ВНИМАНИЕ!!! enableAckPayload НЕ РАБОТАЕТ НА СКОРОСТИ 250 kbps!
#define SIG_SPEED RF24_1MBPS
//--------------------- ДЛЯ РАЗРАБОТЧИКОВ -----------------------

//--------------------- БИБЛИОТЕКИ ----------------------
#include <SPI.h>
#include "nRF24L01.h"
#include "RF24.h"
#include <EEPROM.h>
RF24 radio(10, 9);   // "создать" модуль на пинах 9 и 10 для НАНО/УНО

#include <DigiPotX9Cxxx.h>
DigiPot potLeft(5,6, A3);//inc u/d cs
DigiPot potRight(5,6, A2);


#define leftRele A0
#define rightRele A1
//RF24 radio(9, 53); // для МЕГИ
//--------------------- БИБЛИОТЕКИ ----------------------

//--------------------- ПЕРЕМЕННЫЕ ----------------------
byte pipeNo;
byte address[][6] = {"1Node", "2Node", "3Node", "4Node", "5Node", "6Node"}; // возможные номера труб

byte connected = false;
bool entermenu = false;

byte connect_R_T = false;//соединение
unsigned long connecttimer = 0;


int recieved_data[5];   // массив принятых данных
int telemetry[5];       // массив данных телеметрии (то что шлём на передатчик)
//--------------------- ПЕРЕМЕННЫЕ ----------------------

struct paramStatus {
  byte sharpness = 0;
  byte autoMove = 0;
  byte overheating_protection = 0;
  byte discharge_protection = 0;
  byte maxCurrent = 0;
  byte obstacleSensor = 0;
};
paramStatus ParamSt;

void setup() {
  Serial.begin(9600);
  radioSetup();
  for(byte i = 0; i < 100; i++)
  {
    potLeft.decrease(1);
    delayMicroseconds(100);
    potRight.decrease(1);
  }
  EEPROM.get(20, ParamSt);

  pinMode(leftRele, OUTPUT);//реле
  pinMode(rightRele, OUTPUT);//реле
  digitalWrite(leftRele, HIGH);
  digitalWrite(rightRele, HIGH);
}

void loop() {
  connect_R_T = false;
  while (radio.available()) {                    // слушаем эфир
    radio.read(&recieved_data, sizeof(recieved_data));  // чиатем входящий сигнал
    
    // формируем пакет данных телеметрии 
    telemetry[0] = 20;
    telemetry[1] = 30;

    radio.writeAckPayload(1, &telemetry, sizeof(telemetry));

    if(recieved_data[0] == 1234 && recieved_data[1] == 4321 && !entermenu) 
    {
      for(byte i = 0; i < recieved_data_len; i++) {recieved_data[i] = 0;}
      recieved_data[0] = 1234;
      recieved_data[1] = 4321;      
      entermenu = true; 
      changePotVal(0, 0); 
      changePotVal(0,1);
    }
    else if(recieved_data[0] == 4321 && recieved_data[1] == 1234 && entermenu) {for(byte i = 0; i < recieved_data_len; i++) {recieved_data[i] = 0;}entermenu = false;}


    if(entermenu)
    {
      int8_t pointer = recieved_data[2];
      int8_t paramSetting = recieved_data[3];

      static int8_t oldpointer = 0;
      static int8_t oldparamSetting = 0;

      if(pointer != 0 && paramSetting != 0)
      {
        if(oldpointer != pointer || oldparamSetting != paramSetting)
        {
          oldpointer = pointer;
          oldparamSetting = paramSetting;

          if(paramSetting == -1) paramSetting = 0;

          if(pointer == -1) ParamSt.sharpness = paramSetting;
          else if(pointer == 1) ParamSt.autoMove = paramSetting;
          else if(pointer == 2) ParamSt.overheating_protection = paramSetting;
          else if(pointer == 3) ParamSt.discharge_protection = paramSetting;
          else if(pointer == 4) ParamSt.maxCurrent = paramSetting;
          else if(pointer == 5) ParamSt.obstacleSensor = paramSetting;

          paramSetting = oldparamSetting;

          //EEPROM.put(20, ParamSt);

          recieved_data[2] = 0;
          recieved_data[3] = 0;
          
        }
      } 
    }

    connect_R_T = true;
    connecttimer = millis();
    //radio.writeAckPayload (1, &ackData, sizeof(ackData) ); // Помещаем данные всего массива ackData в буфер FIFO для их отправки на следующее получение данных от передатчика на 1 трубе.


    //recieved_data[1] - "ход"
    //recieved_data[2] - влево/вправо
    if(recieved_data[2] == 0)//если не двигаемся влево или вправо
    {
      if(recieved_data[3] == 0)//передний ход
      {
        digitalWrite(leftRele, HIGH);
        digitalWrite(rightRele, HIGH);
      }
      else if(recieved_data[3] == 1)//задний ход
      {
        digitalWrite(leftRele, LOW);
        digitalWrite(rightRele, LOW);
      }
      changePotVal(recieved_data[1], 0);
      changePotVal(recieved_data[1], 1);
    }
    else//если двигаемся влево или вправо
    {
      if(recieved_data[2] < 0)//влево
      {
        digitalWrite(leftRele, LOW);
        digitalWrite(rightRele, HIGH);
      }
      if(recieved_data[2] > 0)//вправо
      {
        digitalWrite(leftRele, HIGH);
        digitalWrite(rightRele, LOW);
      }
      changePotVal(abs(recieved_data[2]), 0);
      changePotVal(abs(recieved_data[2]), 1);
    }
    Serial.print(recieved_data[2]);
    Serial.print(",");
    Serial.print(recieved_data[1]);
    Serial.println();
  }

  if(!connect_R_T && millis() - connecttimer >= 1500)
  {
    potLeft.set(0);
    potRight.set(0);
    digitalWrite(leftRele, HIGH);
    digitalWrite(rightRele, HIGH);
  }
}

void changePotVal(byte val, byte type)
{
  if(entermenu == true) return 0;

  if(type == 0) potLeft.set(val);
  else if(type == 1) potRight.set(val);
}

void radioSetup() {             // настройка радио
  radio.begin();                                             // Инициируем работу nRF24L01+
    radio.setChannel      (27);                                // Указываем канал передачи данных (от 0 до 125), 27 - значит передача данных осуществляется на частоте 2,427 ГГц.
    radio.setDataRate     (RF24_1MBPS);                        // Указываем скорость передачи данных (RF24_250KBPS, RF24_1MBPS, RF24_2MBPS), RF24_1MBPS - 1Мбит/сек.
    radio.setPALevel      (RF24_PA_MAX);                       // Указываем мощность передатчика (RF24_PA_MIN=-18dBm, RF24_PA_LOW=-12dBm, RF24_PA_HIGH=-6dBm, RF24_PA_MAX=0dBm).
    radio.enableAckPayload();                                  // Указываем что в пакетах подтверждения приёма есть блок с пользовательскими данными.
//  radio.enableDynamicPayloads();                             // Разрешить динамически изменяемый размер блока данных на всех трубах.
    radio.openReadingPipe (1, 0xAABBCCDD11LL);                 // Открываем 1 трубу с адресом 0xAABBCCDD11, для приема данных.
    radio.startListening  ();                                  // Включаем приемник, начинаем прослушивать открытые трубы.
    radio.writeAckPayload (1, &telemetry, sizeof(telemetry) );
}

И что можно понять в этой наскальной живописи?

А что не так? Не получается у меня красиво провода расположить на рисунке

ардуино какая? черная плата, что за модуль?

А что так? Из всех обозначений только “на вход 12-14 вольт”. Что означают остальные картинки? Если уж рисовать схемы не сподобились, так хоть модули подпишите

Он nrf24 питает от CH341 по ходу дела

1 лайк

ну четы все сразу рассказал, блин…

1 лайк
1 лайк

Arduino
ты хоть ченить понял, в чем твоя ошибка?

nrf24l01, двухмодульный реле, ардуино нано, 2штуки X9C104, mini560 5v

ошибка в том, что питание подавал на 5в?

нет!
вторая попытка…

в этом?

1 лайк

да, если у тебя нано, а черный модуль это nrf24.
выход 3.3 вольта на нано, это выход внутреннего преобразователя CH340, который стоит у ней “на пузе”, он слаботочный, а ты пытаешься от него запитать модуль который в пике жрет ДОХРЕНА!
вот он и сопротивляется))
ставь второй преобразователь на 3.3 вольта и от него питай nrf/

1 лайк