Пожалуйсто помогите разобратся с ошибкой

4224danil
Offline
Зарегистрирован: 25.04.2018

Ребят хотел создать програму для радиоуправляемой машинки

но програма при проверке кода выдает следущую ошибку

Arduino: 1.8.5 (Windows 7), Плата:"Arduino/Genuino Uno"
 
C:\Users\дети\Desktop\Проукт дуино\Projects\3 канальное управление\TX\TX - копия.ino:12:11: error: redefinition of 'RF24 radio'
 
C:\Users\дети\Desktop\Проукт дуино\Projects\3 канальное управление\TX\TX.ino:12:6: note: 'RF24 radio' previously declared here
 
C:\Users\дети\Desktop\Проукт дуино\Projects\3 канальное управление\TX\TX - копия.ino:15:17: error: redefinition of 'byte address [][6]'
 
C:\Users\дети\Desktop\Проукт дуино\Projects\3 канальное управление\TX\TX.ino:14:6: note: 'byte address [6][6]' previously defined here
 
C:\Users\дети\Desktop\Проукт дуино\Projects\3 канальное управление\TX\TX - копия.ino:21:21: error: conflicting declaration 'byte transmit_data [3]'
 
C:\Users\дети\Desktop\Проукт дуино\Projects\3 канальное управление\TX\TX.ino:25:6: note: previous declaration as 'byte transmit_data [6]'
 
C:\Users\дети\Desktop\Проукт дуино\Projects\3 канальное управление\TX\TX - копия.ino:22:19: error: conflicting declaration 'byte latest_data [3]'
 
C:\Users\дети\Desktop\Проукт дуино\Projects\3 канальное управление\TX\TX.ino:26:6: note: previous declaration as 'byte latest_data [6]'
 
C:\Users\дети\Desktop\Проукт дуино\Projects\3 канальное управление\TX\TX - копия.ino:23:9: error: redefinition of 'boolean flag'
 
C:\Users\дети\Desktop\Проукт дуино\Projects\3 канальное управление\TX\TX.ino:27:9: note: 'boolean flag' previously declared here
 
C:\Users\дети\Desktop\Проукт дуино\Projects\3 канальное управление\TX\TX - копия.ino: In function 'void setup()':
 
C:\Users\дети\Desktop\Проукт дуино\Projects\3 канальное управление\TX\TX - копия.ino:25:6: error: redefinition of 'void setup()'
 
C:\Users\дети\Desktop\Проукт дуино\Projects\3 канальное управление\TX\TX.ino:29:6: note: 'void setup()' previously defined here
 
C:\Users\дети\Desktop\Проукт дуино\Projects\3 канальное управление\TX\TX - копия.ino: In function 'void loop()':
 
C:\Users\дети\Desktop\Проукт дуино\Projects\3 канальное управление\TX\TX - копия.ino:48:6: error: redefinition of 'void loop()'
 
C:\Users\дети\Desktop\Проукт дуино\Projects\3 канальное управление\TX\TX.ino:55:6: note: 'void loop()' previously defined here
 
exit status 1
Ошибка компиляции для платы Arduino/Genuino Uno.
 
Этот отчёт будет иметь больше информации с
включенной опцией Файл -> Настройки ->
"Показать подробный вывод во время компиляции"
 
Вот мой код для радиомодуля NRF24L01 который является передтчиком
 
/*   Данный скетч делает следующее: передатчик (TX) отправляет массив
     данных, который генерируется согласно показаниям с кнопки и с
     двух потенциомтеров. Приёмник (RX) получает массив, и записывает
     данные на реле, сервомашинку и генерирует ШИМ сигнал на транзистор.
*/
 
#include <SPI.h>
#include "nRF24L01.h"
#include "RF24.h"
#define CE_PIN   9 // Подключаем пин D9 Ардуино UNO к выходу CE модуля NRF24L01
#define CSN_PIN 10 // Подключаем пин D10 Ардуино UNO к выходу CSN модуля NRF24L01
RF24 radio(CE_PIN, CSN_PIN); // "создать" модуль на пинах 9 и 10 Для Уно
//RF24 radio(9,53); // для Меги
byte address[][6] = {"1Node", "2Node", "3Node", "4Node", "5Node", "6Node"}; //возможные номера труб
 
byte JOYSTICK_X = A1; // Ось X джойстика 
//byte JOYSTICK_Y;   A0 // Ось Y джойстика
byte buttonA = 2;  // кнопка на 2 цифровом
byte buttonB = 3;  // кнопка на 3 цифровом
byte buttonC = 4;  // кнопка на 4 цифровом
byte buttonD = 5;  // кнопка на 5 цифровом
//byte buttonE = 6;  // кнопка на 6 цифровом
//byte buttonF = 7;  // кнопка на 7 цифровом
 
byte transmit_data[6]; // массив, хранящий передаваемые данные
byte latest_data[6]; // массив, хранящий последние переданные данные
boolean flag; // флажок отправки данных
 
void setup() {
  Serial.begin(9600); //открываем порт для связи с ПК
 
  pinMode(buttonA, INPUT_PULLUP); // настроить пин кнопки A
  pinMode(buttonB, INPUT_PULLUP); // настроить пин кнопки B
  pinMode(buttonC, INPUT_PULLUP); // настроить пин кнопки C
  pinMode(buttonD, INPUT_PULLUP); // настроить пин кнопки D
 
  radio.begin(); //активировать модуль
  radio.setAutoAck(1);         //режим подтверждения приёма, 1 вкл 0 выкл
  radio.setRetries(0, 15);    //(время между попыткой достучаться, число попыток)
  radio.enableAckPayload();    //разрешить отсылку данных в ответ на входящий сигнал
  radio.setPayloadSize(32);     //размер пакета, в байтах
 
  radio.openWritingPipe(address[0]);   //мы - труба 0, открываем канал для передачи данных
  radio.setChannel(0x60);  //выбираем канал (в котором нет шумов!)
 
  radio.setPALevel (RF24_PA_MAX); //уровень мощности передатчика. На выбор RF24_PA_MIN, RF24_PA_LOW, RF24_PA_HIGH, RF24_PA_MAX
  radio.setDataRate (RF24_250KBPS); //скорость обмена. На выбор RF24_2MBPS, RF24_1MBPS, RF24_250KBPS
  //должна быть одинакова на приёмнике и передатчике!
  //при самой низкой скорости имеем самую высокую чувствительность и дальность!!
 
  radio.powerUp(); //начать работу
  radio.stopListening();  //не слушаем радиоэфир, мы передатчик
}
 
void loop() {
 
  transmit_data[0] = digitalRead(buttonA);  //  Считываем значение кнопки A и записываем в массив transmit_data.
  transmit_data[1] = digitalRead(buttonB);  //  Считываем значение кнопки B и записываем в массив transmit_data.
  transmit_data[2] = digitalRead(buttonC);  //  Считываем значение кнопки C и записываем в массив transmit_data.
  transmit_data[3] = digitalRead(buttonD);  //  Считываем значение кнопки D и записываем в массив transmit_data.
  transmit_data[4] = analogRead(JOYSTICK_X); // Считываем значение оси X джойстика и записываем в массив transmit_data. 
 
  for (int i = 0; i < 6; i++) { // в цикле от 0 до числа каналов
    if (transmit_data[i] != latest_data[i]) { // если есть изменения в transmit_data
      flag = 1; // поднять флаг отправки по радио
      latest_data[i] = transmit_data[i]; // запомнить последнее изменение
    }
  }
 
  if (flag == 1) {
    radio.powerUp(); // включить передатчик
    radio.write(&transmit_data, sizeof(transmit_data)); // отправить по радио
    flag = 0; //опустить флаг
    radio.powerDown(); // выключить передатчик
  }
 
}

 

BuonanotteMasha
BuonanotteMasha аватар
Offline
Зарегистрирован: 02.01.2018

Изучите: http://arduino.ru/forum/obshchii/vstavka-programmnogo-koda-v-temukommentarii

Достаточно byte address[6] = {"1Node", "2Node", "3Node", "4Node", "5Node", "6Node"}; //возможные номера труб

Ворота
Ворота аватар
Offline
Зарегистрирован: 10.01.2016

4224danil пишет:

хотел создать програму для радиоуправляемой машинки

Создать или стянуть в сети готовую?

И кстати, в таком виде код никто читать не будет, вставь нормально.

BuonanotteMasha
BuonanotteMasha аватар
Offline
Зарегистрирован: 02.01.2018

Вставьте правильно код, сколько раз повторять надо...

 http://arduino.ru/forum/obshchii/vstavka-programmnogo-koda-v-temukommentarii

Так вам смогут указать в какой строке у вас ошибка. 

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

Приходя на форум надо не бросаться изливать свои проблемы, а сначала почитать его, познакомится с правилами. Свой код, например, надо вставлять в сообщение как написано здесь: Вставка программного кода в тему/комментарий Вопли капсом тоже неуместны.

По Вашей проблеме. Хоть в приведённых кракозябрах фиг разберёшься, но кажется мне, что Вы в одну папку свалили два скетча, очевидно для приёмника и передатчика. Вот система и пытается это скомпилировать как один проект и ругается на одинаковые переменные и т.п. Для каждого скетча Arduino IDE при сохранении создаёт свою папку. Сохраните Ваши скетчи как положено, по отдельности.

4224danil
Offline
Зарегистрирован: 25.04.2018

/*   Данный скетч делает следующее: передатчик (TX) отправляет массив
     данных, который генерируется согласно показаниям с кнопки и с
     двух потенциомтеров. Приёмник (RX) получает массив, и записывает
     данные на реле, сервомашинку и генерирует ШИМ сигнал на транзистор.
*/

#include <nRF24L01.h>
#include <printf.h>
#include <RF24.h>
#include <RF24_config.h>



#define CE_PIN   9 // Подключаем пин D9 Ардуино UNO к выходу CE модуля NRF24L01
#define CSN_PIN 10 // Подключаем пин D10 Ардуино UNO к выходу CSN модуля NRF24L01
RF24 radio(CE_PIN, CSN_PIN); // "создать" модуль на пинах 9 и 10 Для Уно
//RF24 radio(9,53); // для Меги
const uint64_t pipe = 0xE8E8F0F0E1LL; //номер трубы, должен быть одинаковый у передатчика и приёмника!!! 

byte JOYSTICK_X = A1; // Ось X джойстика 
byte buttonA = 2;  // кнопка на 2 цифровом
byte buttonB = 3;  // кнопка на 3 цифровом
byte buttonC = 4;  // кнопка на 4 цифровом
byte buttonD = 5;  // кнопка на 5 цифровом

byte transmit_data[5]; // массив, хранящий передаваемые данные
byte latest_data[5]; // массив, хранящий последние переданные данные
boolean flag; // флажок отправки данных

void setup() {
  Serial.begin(9600); //открываем порт для связи с ПК

  pinMode(buttonA, INPUT_PULLUP); // настроить пин кнопки A
  pinMode(buttonB, INPUT_PULLUP); // настроить пин кнопки B
  pinMode(buttonC, INPUT_PULLUP); // настроить пин кнопки C
  pinMode(buttonD, INPUT_PULLUP); // настроить пин кнопки D
  pinMode(JOYSTICK_X, INPUT); // настроить пин оси джойстика Х

  radio.begin(); //активировать модуль
  radio.setAutoAck(1);         //режим подтверждения приёма, 1 вкл 0 выкл
  radio.setRetries(0, 15);    //(время между попыткой достучаться, число попыток)
  radio.enableAckPayload();    //разрешить отсылку данных в ответ на входящий сигнал
  radio.setPayloadSize(32);     //размер пакета, в байтах

  radio.openWritingPipe(pipe[0]);   //мы - труба 0, открываем канал для передачи данных
  radio.setChannel(0x60);  //выбираем канал (в котором нет шумов!)

  radio.setPALevel (RF24_PA_MAX); //уровень мощности передатчика. На выбор RF24_PA_MIN, RF24_PA_LOW, RF24_PA_HIGH, RF24_PA_MAX
  radio.setDataRate (RF24_250KBPS); //скорость обмена. На выбор RF24_2MBPS, RF24_1MBPS, RF24_250KBPS
  //должна быть одинакова на приёмнике и передатчике!
  //при самой низкой скорости имеем самую высокую чувствительность и дальность!!

  radio.powerUp(); //начать работу
  radio.stopListening();  //не слушаем радиоэфир, мы передатчик
}

void loop() {

  transmit_data[0] = digitalRead(buttonA);  //  Считываем значение кнопки A и записываем в массив transmit_data.
  transmit_data[1] = digitalRead(buttonB);  //  Считываем значение кнопки B и записываем в массив transmit_data.
  transmit_data[2] = digitalRead(buttonC);  //  Считываем значение кнопки C и записываем в массив transmit_data.
  transmit_data[3] = digitalRead(buttonD);  //  Считываем значение кнопки D и записываем в массив transmit_data.
  transmit_data[4] = analogRead(JOYSTICK_X); // Считываем значение оси X джойстика и записываем в массив transmit_data. 

  for (int i = 0; i < 5; i++) { // в цикле от 0 до числа каналов
    if (transmit_data[i] != latest_data[i]) { // если есть изменения в transmit_data
      flag = 1; // поднять флаг отправки по радио
      latest_data[i] = transmit_data[i]; // запомнить последнее изменение
    }
  }

  if (flag == 1) {
    radio.powerUp(); // включить передатчик
    radio.write(&transmit_data, sizeof(transmit_data)); // отправить по радио
    flag = 0; //опустить флаг
    radio.powerDown(); // выключить передатчик
  }

}
DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

ну хоть протрезвел, наконец-то. 

4224danil
Offline
Зарегистрирован: 25.04.2018

Arduino: 1.8.5 (Windows 7), Плата:"Arduino/Genuino Uno"

C:\Users\F3AB~1\AppData\Local\Temp\arduino_modified_sketch_412632\sketch_apr25b.ino: In function 'void setup()':

sketch_apr25b:46: error: invalid types 'const uint64_t {aka const long long unsigned int}[int]' for array subscript

radio.openWritingPipe(pipe[0]); //мы - труба 0, открываем канал для передачи данных

^

Несколько библиотек найдено для "nRF24L01.h"
Используется: C:\Users\дети\Documents\Arduino\libraries\RF24-master
Не используется: C:\Program Files\Arduino\libraries\RF24-master
Не используется: C:\Program Files\Arduino\libraries\RF24-master
Не используется: C:\Program Files\Arduino\libraries\RF24-master
Не используется: C:\Program Files\Arduino\libraries\RF24-master
exit status 1
invalid types 'const uint64_t {aka const long long unsigned int}[int]' for array subscript

Этот отчёт будет иметь больше информации с
включенной опцией Файл -> Настройки ->
"Показать подробный вывод во время компиляции"

IgorS
Offline
Зарегистрирован: 25.04.2018

Похоже, у вас установлено несколько похожих библиотек, удалите лишние. И возможно, стоит использовать папки у которых нет кирилицы(русских букв) в названии подпапок. И в некоторых старых версиях IDE нужно удалять слово "-master" из названия и внутри самого архива.

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

4224danil пишет:
radio.openWritingPipe(pipe[0]); //мы - труба 0, открываем канал для передачи данных

У Вас pipe не массив. Просто openWritingPipe(pipe)