Функция в цикле выполняется за секунду при этом не зависимо от варианта скетча. Подскажите с чем это связано и как ускорить работу. 1ый вариант Код (C++): #include <SPI.h> #include <nRF24L01.h> #include <RF24.h> #include "Wire.h" const uint64_t pipe2 = 0xF0F1F2F3F1LL; RF24 radio(9, 10); // CE, CSN int data = 0; String flags = " "; int flag = 0; String resutX; String resutY; int xAngle = 0; int yAngle = 0; void setup() { //Serial.begin(9600); Serial.begin(1000000); radio.begin(); delay(2); radio.setChannel(9); radio.setDataRate(RF24_1MBPS); // скорость, RF24_250KBPS, RF24_1MBPS или RF24_2MBPS radio.setPALevel(RF24_PA_HIGH); radio.openWritingPipe(pipe2); } void loop() { if (Serial.available() != 0) { long start = millis();//начало таймера String ss = Serial.readString(); Serial.println(ss); resutX = ss.substring(0,3);//берём 3 символа resutY = ss.substring(4,7);//берём 3 символа xAngle=atoi(resutX.c_str());//из Sting в it yAngle=atoi(resutY.c_str());//из Sting в it if ( xAngle > 60)data = 101; else if ( xAngle < 40)data = 111; else if ( yAngle > 60 )data = 131; else if ( yAngle < 40 )data = 121; else data = 0; Serial.println(data); Serial.println(millis()-start);//время выполнения функции radio.write(&data, sizeof(data)); } } 2ой вариент Код (C++): void loop() { if (Serial.available() != 0) { long start = millis(); String ss = Serial.readString(); Serial.println(ss); Serial.println(data); Serial.println(millis()-start); radio.write(&data, sizeof(data)); } }
виновата функция Serial.readString - в ней встроен таймаут 1 секунда Используйте для чтения функцию read() побайтно в цикле - задержки в секунду не будет