Когда приемник включить первым то горит светодиод

Тема в разделе "Arduino & Shields", создана пользователем wawa, 22 фев 2019.

  1. wawa

    wawa Нуб

    Приемник и передатчик на Arduino Nano и NRF24L01. Проблема в следующем, если включить первым приемник то светодиод D2 будет светится пока не включить передатчик. Включаю передатчик светодиод тухнет. Кнопки работают так- SV2 нажал отпустил горит D1, нажал отпустил D1 потух. SV1 нажал D2 горит отпустил D2 потух. Как подправить скетч(и), чтобы независимо что первое включить(приемник или передатчик) светодиод D2 изначально не светился. Помогите лузеру.
    [​IMG]
    Код (C++):
    #include <SPI.h>
    #include <nRF24L01.h>
    #include <RF24.h>
    #define CE_PIN 9
    #define CSN_PIN 10
    const uint64_t pipe = 0xE8E8F0F0E1LL;
    RF24 radio(CE_PIN, CSN_PIN);
    int datos[5];
    void setup(void)
    {
      radio.begin();
      radio.openWritingPipe( pipe);
      Serial.begin(9600);
      pinMode(4, INPUT);//левая кнопка
      digitalWrite(4, HIGH);//левая кнопка нажал отпустил горит
      pinMode(3, INPUT);//правая кнопка
      digitalWrite(3, HIGH);

     
    }
    void loop() {
      datos[0] = analogRead(1);
      datos[1] = analogRead(0);
      datos[2] = analogRead(4);//крутилка ствола
      datos[2] = map(datos[2],0,1023,0,180);
      datos[3] = digitalRead(4);//кнопка D4 левая
      datos[4] = digitalRead(3);//кнопка D3 правая
      bool ok = radio.write(datos, sizeof(datos));
      Serial.println(datos[0]);

    }
    [​IMG]
    Код (C++):
    #include <SPI.h>
    #include <nRF24L01.h>
    #include <RF24.h>
    const uint64_t pipe = 0xE8E8F0F0E1LL;
    #define CE_PIN 9
    #define CSN_PIN 10
    RF24 radio(CE_PIN, CSN_PIN);
    int datos[2];
    byte IsConnect;
    void setup()
    {
      pinMode(14, OUTPUT);
      pinMode(15, OUTPUT);
      radio.begin();
      Serial.begin(9600);
      radio.openReadingPipe(1, pipe);
      radio.startListening();
    }


    void loop() {
      static int8_t buttonState = LOW;
      uint8_t numero_canal;
      if ( radio.available())
      {
        radio.read(datos, sizeof(datos));
        IsConnect = HIGH;
      }
      else{
        IsConnect = LOW;
      }

      if (buttonState == HIGH && datos[0] == LOW) digitalWrite(14, ! digitalRead(14));
       buttonState = datos[0];
       digitalWrite(15, !datos[1]);
    }
     
  2. Daniil

    Daniil Гуру

    А что если в инициализации приемника сразу прописать пин-лед2=low?
     
  3. Попробуйте так:
    Код (C++):
    #include <SPI.h>
    #include <nRF24L01.h>
    #include <RF24.h>
    const uint64_t pipe = 0xE8E8F0F0E1LL;
    #define CE_PIN 9
    #define CSN_PIN 10
    RF24 radio(CE_PIN, CSN_PIN);
    int datos[2];
    byte IsConnect;
    void setup()
    {
      pinMode(14, OUTPUT);
      pinMode(15, OUTPUT);

      digitalWrite(14, LOW);
      digitalWrite(15, LOW);
      radio.begin();
      Serial.begin(9600);
      radio.openReadingPipe(1, pipe);
      radio.startListening();
    }


    void loop() {
      static int8_t buttonState = LOW;
      uint8_t numero_canal;
      if ( radio.available())
      {
        radio.read(datos, sizeof(datos));
        IsConnect = HIGH;

        if (buttonState == HIGH && datos[0] == LOW)
          digitalWrite(14, ! digitalRead(14));
        buttonState = datos[0];
        digitalWrite(15, !datos[1]);
      }
      else {
        IsConnect = LOW;
      }
    }
     
  4. wawa

    wawa Нуб

    Да спасибо попробую! Это только часть кода масив больше на 5 элементов. Там идет управление сервоприводом и пропорциональное управление 2-мя двигателями через L298N. А нельзя ли как в 23 строке приемника прописать изначально, что кнопка не нажата? Вот только дальше в коде не пойму как прописать(33 и 34 строки это для первой кнопки ).
     
  5. wawa

    wawa Нуб

    Код (C++):
    digitalWrite(15, LOW);
    Если добавить в мой код, то никаких изменений
     
  6. parovoZZ

    parovoZZ Гуру

    Если светодиод анодом подключён к плюсу, то на пин надо подавать единицу, чтобы светодиод потушить.
     
    Кириллstrelok нравится это.
  7. wawa

    wawa Нуб

    8 строку приемника изменил на int datos[2] = {0,1};
    Полет нормальный. Спасибо!