Прошу прощения если задал вопрос не в той ветке ! Нужна помощь ! Хочу собрать следующую конструкцию: PROCESSING берёт некую информацию из виртуального midi порта и отправляет её в serialport Код (Text): //Import libraries import processing.serial.*; import promidi.*; Serial myPort; MidiIO midiIO; //Message to be sent int message=0; void setup() { myPort = new Serial(this, "COM4", 9600); midiIO = MidiIO.getInstance(this); //Line that prints I/O devices in console midiIO.printDevices(); //Receive input from Virtual MIDI Ports midiIO.openInput(0,0); } void draw() {} void noteOn(Note note, int deviceNum, int midiChan){ int vel = note.getVelocity(); int pitch = note.getPitch(); if(vel>0){ // If velocity > 0 set message value to note's pitch if(pitch==60){ message=1; } else if(pitch==62){ message=2; } else if(pitch==64){ message=3; } else if(pitch==65){ message=4; } else if(pitch==67){ message=5; } else message=0; } else { message=0;} //Send message to Arduino myPort.write(message); } arduino с радио модулем NRF24I01+ на борту подключенная к ПК слушает serialport получает данные { message=1; }{ message=2; }{ message=3; }.... и отправляет их следующей arduino с такой же конструцией. Она получает данные и выполняет определённое действие (вкл/выкл LED). Теперь вопрос если не использовать радиомодуль а раотать непосредственно напрямую через serialport всё отлично работатет "PROCESSING ---->>> ARDUINO " (код arduino): Код (Text): // Data received from the serial port int val; //LEDs are connected to the following pins int pins[] = {2,3,4,5,6}; void setup() { for(int i=0; i<5; i++){ pinMode(pins[i], OUTPUT); // Set pins as OUTPUTs } Serial.begin(9600); // Start serial communication at 9600 bps } void loop() { if (Serial.available()) { // If data is available to read, val = Serial.read(); // read it and store it in val // Turn on LEDs, depending on pitches received if (val == 1) { digitalWrite(pins[0],HIGH); } else if (val == 2) { digitalWrite(pins[1],HIGH); } else if (val == 3) { digitalWrite(pins[2],HIGH); } else if (val == 4) { digitalWrite(pins[3],HIGH); } else if (val == 5) { digitalWrite(pins[4],HIGH); } else if (val==0) { resetLEDs(); } } } //Function that turns all the LEDs off void resetLEDs(){ for(int i=0; i<5; i++){ digitalWrite(pins[i],LOW); } } Тперь цепляю NRF24I01+ получаю следующую конструкцию "PROCESSING-->>ARDUINOпередаёт---->>ARDUINOпринимает" код processing оставляю тот же код ARDUINOперед: Код (Text): #include <SPI.h> #include "RF24.h" RF24 radio(9, 10); const uint64_t pipe= { 0xF0F0F0F000LL};// адреса каналов приема и передачи void setup(){ Serial.begin(9600); radio.begin(); radio.setDataRate(RF24_250KBPS); // Скорость передачи radio.setChannel(100); // Номер канала от 0 до 127 radio.setRetries(15,15); // Кол-во попыток и время между попытками radio.openWritingPipe(pipe); // Открываем канал передачи radio.startListening(); // Начинаем слушать эфир } void loop(){ if(Serial.available()){ char data[32] = ""; byte i = 0; while(Serial.available()){ data[i] = Serial.read(); //получаем данные из сериал. i++; delay(2); } data[i] = 0; radio.stopListening(); radio.write(&data, 32); //и отправляем их в Arduino №2 radio.startListening(); } } код ARDUINOприемнка: Код (Text): #include <SPI.h> #include "RF24.h" RF24 radio(9, 10); //пины куда подключены светодиоды int pins[] = {1,2,3,4,5,6,7,8}; const uint64_t pipe = { 0xF0F0F0F000LL};// адреса каналов приема и передачи void setup(){ for(int i=0; i<8; i++){ pinMode(pins[i], OUTPUT); // Set pins as OUTPUTs } radio.begin(); radio.setDataRate(RF24_250KBPS); // Скорость передачи radio.setChannel(100); // Номер канала от 0 до 127 radio.setRetries(15,15); // Кол-во попыток и время между попытками radio.openReadingPipe(1,pipe); // Открываем один из 6-ти каналов приема radio.startListening(); // Начинаем слушать эфир } void loop(){ if(radio.available()){ char data[32] = ""; radio.read(&data, 32); //принимает пакет с Arduino №1 //Если пришла цифра 1 включаем светодиод if (data[0] == '1') { digitalWrite(pins[0],HIGH); } else if (data[0] == '2') { digitalWrite(pins[1],HIGH); } else if (data[0] == '3') { digitalWrite(pins[2],HIGH); } else if (data[0] == '4') { digitalWrite(pins[3],HIGH); } else if (data[0] == '5') { digitalWrite(pins[4],HIGH); } else if (data[0] == '6') { digitalWrite(pins[5],HIGH); } else if (data[0] == '7') { digitalWrite(pins[6],HIGH); } else if (data[0] == '8') { digitalWrite(pins[7],HIGH); } else if (data[0] == '0') { resetLEDs(); } } } void resetLEDs(){ for(int i=0; i<8; i++){ digitalWrite(pins[i],LOW); } } Запускаю и на приёмнике тишина. Работает только когда данные передаешь сам через Подскажите где ошибка в чем не прав ???? по возможности исправить код !
Т.е. 1 байт. Тогда при формировании пакета для передатчика цикл не нужен, нужно просто записывать данные в первый байт пакета и отправлять его.