Не работает скетч.

Vil
Offline
Зарегистрирован: 26.07.2017

Это скетч для радиоаппаратуры для р/у на ардуино.

Проблема такова: элерон не отклоняется, а все остальное работает.Аналоговый вход работает, и серва элерона тоже.

Скетч передатчика:


#include <Servo.h>
#include <SPI.h>
#include "nRF24L01.h"
#include "RF24.h"
long an0;
long an1;
long an2;
long an3;




const uint64_t pipe = 0xF0F1F2F3F4LL; // индитификатор передачи, "труба"

RF24 radio(8, 10); // CE, CSN
byte data[3];


void setup() {




  pinMode(A0, INPUT);
  pinMode(A6, INPUT);
  pinMode(A2, INPUT);
  pinMode(A3, INPUT);


  radio.begin();
  delay(2);
  radio.setChannel(9); // канал (0-127)

  // скорость, RF24_250KBPS, RF24_1MBPS или RF24_2MBPS
  // RF24_250KBPS на nRF24L01 (без +) неработает.
  // меньше скорость, выше чувствительность приемника.
  radio.setDataRate(RF24_1MBPS);

  // мощьность передатчика, RF24_PA_MIN=-18dBm, RF24_PA_LOW=-12dBm, RF24_PA_MED=-6dBM,
  radio.setPALevel(RF24_PA_HIGH);

  radio.openWritingPipe(pipe); // открываем трубу на передачу.

}

void loop() {
  an0 = analogRead(A2);
  an0 = constrain(an0, 140, 712);

  an1 = analogRead(A3);
  an1 = constrain(an1, 133, 685);

  an2 = analogRead(A0);
  an2 = constrain(an2, 55, 916);

  an3 = analogRead(A6);
  an3 = constrain(an3, 200, 798);



  data[0] = map(an0, 140, 712, 0, 180);
  data[1] = map(an3, 200, 798, 0, 180);
  data[2] = map(an2, 55, 916, 0, 180);
  data[3] = map(an1, 70, 902, 0, 180);




  radio.write( &data, sizeof(data) );         // передаем сигнал

}

скетч приемника:

#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h> 
#include <Servo.h>
const uint64_t pipe = 0xF0F1F2F3F4LL; // индитификатор передачи, "труба"
unsigned long time;
RF24 radio(4, 10); // CE, CSN
byte data[3];
Servo motor;
Servo eleron;
Servo visota;
Servo povorot;


void setup() {


  motor.attach(9, 800, 2200);
  povorot.attach(6);
  eleron.attach(3);
  visota.attach(5);

  radio.begin();
  delay(2);
  radio.setChannel(9); // канал (0-127)

  // скорость, RF24_250KBPS, RF24_1MBPS или RF24_2MBPS
  // RF24_250KBPS на nRF24L01 (без +) неработает.
  // меньше скорость, выше чувствительность приемника.
  radio.setDataRate(RF24_1MBPS);

  // мощьность передатчика RF24_PA_MIN=-18dBm, RF24_PA_LOW=-12dBm, RF24_PA_MED=-6dBM,
  radio.setPALevel(RF24_PA_HIGH);

  radio.openReadingPipe(1, pipe); // открываем первую трубу с индитификатором "pipe"
  radio.startListening(); // включаем приемник, начинаем слушать трубу
}

//  radio.stopListening(); // останавливает приём (нужно перед началом передачи)

void loop() {

  if ( radio.available()) {  // слушаем эфир со всех труб
    radio.read( &data, sizeof(data) );         // чиатем входящий сигнал
    time = millis();

  }
  if (millis() - time > 1000) {


    data[0] = 0;
    data[1] = 0;
    data[2] = 0;
    data[3] = 0;



  }

  motor.write(data[0]);
  eleron.write(data[1]);
  visota.write(data[2]);
  povorot.write(data[3]);


}

 

fogary
Offline
Зарегистрирован: 05.03.2016
byte data[3];

Опечатка?

eleron.attach(3);

Если 3 - это номер пина, то на другой цеплять пробовали?

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Передатчик, строка 64

Приёмник, строки 54 и 63

Выход за границы массива.

Исправьте, а там посмотрим.

Vil
Offline
Зарегистрирован: 26.07.2017

Короче, добавил ещё один канал для вида ,так как заметил, что последний канал не работает, и все заработало

kalapanga
Offline
Зарегистрирован: 23.10.2016

Vil пишет:

Короче, добавил ещё один канал для вида ,так как заметил, что последний канал не работает, и все заработало

Ну для какого ещё вида! Вам даже строки указали, где у Вас ошибка. Объявлен массив из трёх элементов, а обращаетесь к четвёртому!

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

kalapanga пишет:

Ну для какого ещё вида! 

А он добавил ещё один канал, кторым не пользуется и выход за границы перестал проявляться, самым старшим-то каналом не пользуются :)))))

Vil
Offline
Зарегистрирован: 26.07.2017

kalapanga пишет:

Vil пишет:

Короче, добавил ещё один канал для вида ,так как заметил, что последний канал не работает, и все заработало

Ну для какого ещё вида! Вам даже строки указали, где у Вас ошибка. Объявлен массив из трёх элементов, а обращаетесь к четвёртому!

Спасибо Вам огромное!!