// Способ 1: Использовать compareTo с проверкой на 0
if(myStr.compareTo("hello") == 0) { }// Способ 2: Использовать оператор == (рекомендуется)
if(myStr == "hello") { }// Способ 3: Использовать equals()
if(myStr.equals("hello")) { }
но я вроде читал что надо создавать переменную для строки, что бы потом другую переменную с этой переменной сравнивать, но может мне и кажется…
if (Serial.available() > 0) {
String strMy = Serial.readStringUntil('\n');
strMy.trim(); // Обязательно чистим!
Serial.print("Получено: ");
Serial.println(strMy);
}
p.s. джава зло! используйте с++
public class Main {
public static void main(String[] args) {
String myStr = "hello";
// ❌ НЕПРАВИЛЬНО - compareTo возвращает int, а if ожидает boolean
// if(myStr.compareTo("hello")) { } // Ошибка компиляции!
// ✅ ПРАВИЛЬНЫЕ СПОСОБЫ:
// Способ 1: compareTo с проверкой на 0 (стандартный)
if(myStr.compareTo("hello") == 0) {
System.out.println("Строки равны!");
} // Способ 2: equals() метод (РЕКОМЕНДУЕТСЯ)
if(myStr.equals("hello")) { System.out.println("Строки равны!");
}// Способ 3: equalsIgnoreCase() - без учета регистра
if(myStr.equalsIgnoreCase("HELLO")) {
System.out.println("Строки равны (регистр игнорируется)!");
}
// ❌ НЕ используйте == для сравнения содержимого строк!
if(myStr == "hello") { // Сравнивает ссылки, а не содержимое!
System.out.println("Может не сработать!");
}
}
}
и т.д. чаг Гэпете подскажет...
if(myStr.equals("hello")) { System.out.println("Строки равны!");
Спасибо, друзья, просто не знаю как правильно прочитать из консоли ввода ввывода в myStr: myStr=Serial.readString();
Ведь нужно сказать, что MyStr типа String.
Помогите?
Как же правильно прочитать переменную из Монитора порта , если известно, что она типа String myStr?
Ребят, все рвано не получается!
Нужно при вводе через монитор порта слова: “hello” менялся цвет. на жёлтый.
Штрихкодами символов ‘1’,‘2’ получается, но целым словом нет.
//author: Alunts Arthur Arthurovich;
#include <Adafruit_NeoPixel.h> // подключаем библиотеку
Adafruit_NeoPixel strip (24, 10, NEO_GRB + NEO_KHZ800); //PIN: 5 //LED число LED'ов: 24
int ExitValue0=101;
int val;
short flag = 1;
short flag0 = 0;
short flag1 = 1;
short dd = 1;
int tt = 0;
int i = 0;
int RR=0;
int BB=0;
int GG=0;
int ff=20;
int ii=12;
int ya=7;
int FL=0;
char data0; //variable to store incoming data from JAVA
String myStr;
void L1() {
}
void L0(){
RR=RR+ff;
ya++;
if (RR+ff>255) {RR=0; GG=GG+ff;}
if (GG+ff>255) {GG=0; BB=BB+ff; }
if (BB+ff>255) {BB=0;}
//if(ya>255){ //ccd }
}
void setup() {
Serial.begin(9600);
strip.setBrightness(ya); //указываем яркость (max: 255);
Serial.setTimeout(0);
strip.begin(); // инициализируем объект NeoPixel
//strip.show();
////part 23//////
}
void Main_L(){
i=0;
}
void L2(){
if (i < 3*2 ) {
strip.clear();
strip.setPixelColor(i, strip.Color(RR,GG,BB));
strip.setPixelColor(i + 3*2, strip.Color(RR,GG,BB));
strip.setPixelColor(i + 6*2, strip.Color(RR,GG,BB));
strip.setPixelColor(i + 9*2, strip.Color(RR,GG,BB));
strip.show();
i++;
delay(tt);
}
else {
i = 0;
strip.show();
}
if (flag == 1) {
tt = tt + dd;
}
if (flag == 0) {
tt = tt - dd;
}
if (tt >= 100) {
flag = 0;
}
if (tt == 0) {
flag = 1;
}
strip.show();
}
void loop() {
//L0();
L1();
L2();
while(Serial.available()>0){ //if data has been written to the Serial stream
//data0=Serial.read();
data0=Serial.read();
myStr=Serial.read();
if(data0==('1')){
strip.clear();
RR=0;GG=255;BB=0;
strip.show();
//delay(2000);
}
if(data0==('2')){
strip.clear();
RR=0;GG=0;BB=255;
strip.show();
}
String MyStr = Serial.readString();
if(MyStr.compareTo("hello") == 1) {
strip.clear();
RR=222;GG=0;BB=0;
strip.setPixelColor(1, strip.Color(RR,GG,BB));
strip.show();
Serial.println (MyStr);
}
}}
А глобально там уроки переделались: как-то красивше и логичней/удобней стало , правда появилась приписка “Дополнительный контент доступен владельцам набора”, но и за это спасибо.
data0 объявите String
В цикле loop() принимайте всё как String ,
затем сравнивайте …
P.S.
Передавать одиночные символы нужно тоже как строки.
String data0;
void loop() {
if (Serial.available() > 0) { //if data has been written to the Serial stream
data0 = Serial.readString();
if (data0 == ("1")) {
Serial.println (data0);
}
if (data0 == ("2")) {
Serial.println (data0);
}
if (data0 == "hello") {
Serial.println (data0);
}
}
}
String inputString = ""; // строка для хранения входящих данных
bool stringComplete = false; // флаг для обозначения завершения строки
void setup() {
// инициализация серийного порта с определенной скоростью (например, 9600 бод)
Serial.begin(9600);
// резервируем место для хранения строки (достаточно места)
inputString.reserve(200);
Serial.println("Серийный порт инициализирован. Ожидание данных...");
}
void loop() {
// если есть доступные для чтения байты
if (Serial.available()) {
char inChar = (char)Serial.read(); // считываем один байт
inputString += inChar; // добавляем его к нашей строке
// если символ - символ новой строки, значит, строка завершена
if (inChar == '\n') {
stringComplete = true; // устанавливаем флаг завершения строки
}
}
// если строка получена полностью
if (stringComplete) {
// выводим полученную строку в монитор порта
Serial.print("Получена строка: ");
Serial.println(inputString);
// здесь можно парсить и обрабатывать строку, например:
// 1. Парсинг как целое число
// Пример: если приходит "123"
int parsedInt = inputString.toInt();
Serial.print("Число (toInt): ");
Serial.println(parsedInt);
// 2. Парсинг строки по разделителю (пример: "value:100")
// Для этого нужно сначала удалить пробельные символы и символы новой строки
inputString.trim();
if (inputString.startsWith("value:")) {
// извлекаем подстроку, начиная с 6-го символа (после "value:")
String valueStr = inputString.substring(6);
int value = valueStr.toInt();
Serial.print("Извлеченное значение: ");
Serial.println(value);
}
// очищаем строку для получения следующих данных
inputString = "";
stringComplete = false;
}
}