#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 последовательностями для очистк экрана: