Не могу разобраться с arduino java

#include <SoftwareSerial.h>// библиотека для работы программного Serial
SoftwareSerial mySerial(10, 11);// создаём объект для работы с программным Serial и назначаем ему пины RX и TX
#define BARCODE_SERIAL    mySerial// serial-порт к которому подключён Barcode-модуль
int a=0;
int b=0;
int c=0;


void setup(){
pinMode(LED_BUILTIN, OUTPUT);
Serial.begin(9600);  // открываем последовательный порт для мониторинга действий в программе и передаём скорость 9600 бод
// ждём, пока не откроется монитор последовательного порта для того, чтобы отследить все события в программе
while (!Serial) {}
Serial.print("Serial init OK");
BARCODE_SERIAL.begin(9600);  // открываем Serial-соединение с Barcode-модулем на скорости 9600 бод
Serial.println("Barcode init is OK");  // печатаем строку
Serial.print("GPS init is OK on speed 9600");  // печатаем строку
}
 
void loop() {
if (BARCODE_SERIAL.available()) {// если приходят данные из Barcode-модуля - отправим их в порт компьютера
Serial.write(BARCODE_SERIAL.read());
}

if (Serial.available() > 0){  // если приходят команды в ручную, или с модуля QR кодов

String data = Serial.readStringUntil('\n');
int R, G, B; //
sscanf (data.c_str(), "R%dG%dB%d", &R, &G, &B);

int a = R;
int b = G;
int c = B;

if(b==1){
digitalWrite(LED_BUILTIN, HIGH);   // включаем поршень 2
delay(1000);                       // время работы поршня
digitalWrite(LED_BUILTIN, LOW);    // отключаем поршень
delay(1000);                       // время паузы, или время возврата поршня в начальное положение
}
}

}
а я вот такой парсер сделал, и искал ему домик в хороших проектах, продублирую еще, может кому пригодится))

код для платы 1:

void setup() {
Serial.begin(115200);
}
void loop() {
Serial.println("R1G2B3");
Serial.println(' ');
delay(1000);
Serial.println("R4G5B6");
Serial.println(' ');
delay(1000);
Serial.println("R7G8B9");
Serial.println(' ');
delay(1000);
Serial.println("R10G11B12");
Serial.println(' ');
delay(1000);
Serial.println("R13G14B15");
Serial.println(' ');
delay(1000);
}

код для платы 2:

int a = 0;
int b = 0;
int c = 0;

void setup() {
Serial.begin(115200); // Инициализация последовательного порта на скорости 115200 бод
}

void loop() {
if (Serial.available() > 0) { // Проверяем, есть ли доступные данные
String input = Serial.readStringUntil('\n'); // Читаем строку до символа новой строки
// Проверяем, начинается ли строка с 'R' и содержит 'G' и 'B'
if (input.startsWith("R") && input.indexOf('G') > 1 && input.indexOf('B') > 1) {
// Извлекаем значения
int rIndex = input.indexOf('R') + 1;
int gIndex = input.indexOf('G');
int bIndex = input.indexOf('B');
// Извлекаем числа из строки
a = input.substring(rIndex, gIndex).toInt();
b = input.substring(gIndex + 1, bIndex).toInt();
c = input.substring(bIndex + 1).toInt();

Serial.print(a);
Serial.print(' ');
Serial.print(b);
Serial.print(' ');
Serial.print(c);
Serial.print(' ');
}
}
}//конец

Слово не воробей.

Если ты имеешь ввиду терминал, например TeraTerm или что-то подобное (но не Arduino Serial Monitor), то можешь воспользоваться ANSI ESC последовательностями для очистк экрана:

Serial.printf(“\033[H\033[2J”);

Никак. Это стыдоба а не монитор порта. Единственный способ “очистить“ его, это напчечатать какое-то количество \r\n символов

Ставь нормальный монитор (PuTTY, TeraTerm, minicom …), используй ANSI ESC-sequences. Там тебе будет и очистка экрана, и цвет, и перемещение курсора.

Но лучше, конечно, парсер свой написать для printf и сделать свои теги. Типа такого:

не выйдет, получишь лишь ^H^H^H :slight_smile:

символ новой строки можно передавать сорок раз.

1 лайк

вы про окно вывода? а кнопочку нажать не вариант? там справа, очистка экрана

1 лайк

Whoa.. Да он колдун!

Вспомнился мультфильм “Догада”))

Отличная идея, как на безрыбье, почему-то сам не додумался

P.S. Хотя рано радовался - экран очищает, а назад не возвращается…

нельзя вступить в одну реку дважды, там есть ещё что допиливать )))

Да уж…, а хотелось бы входить - выходить, и не один раз)))

Это действительно стыдоба )))

да ладно, вот ты знал про millis() uint64_t на esp32, а он знает )))

Вот именно! И вообще.. :disguised_face:

я тоже Цербера сломал )))

У меня 1.8.19 и такого нет

переходи на 2.3.6 это уже другой уровень

Эмммм…

Вроде всегда было…

Ну и как эту кнопку задействовать из скетча?

Ей богу, поставь себе TeraTerm и не мучайся больше никогда :).

Смотри, какая красота :slight_smile:

1 лайк

Ребята, вы хоть тему читали?)))
У меня нет вопросов, это ТС спрашивал именно про терминал Arduino IDE