Ви не увійшли.
Я бы попытался заменить строку:
bufs = printFile.readStringUntil('\n');
на
bufs = (String) printFile.readStringUntil('\n');
И так. Заменил.
if (bufs == buf)// Если Строка bufs == переменной buf то выводим Yes!
{
Serial.println("Yes!");
}
На такой костыль.
bufs.trim();
if (bufs.compareTo(buf)== 0)
{
Serial.println("Ok");
break;
}
Функция trim() удаляет лишние пробелы в конце переменной String.
После функцией сравнения переменных типа String compareTo() которая в случае совпадения по алфавитно содержимого этих переменных возвращает "0" проверяю свои переменные.
Возможно все это костыль, возможно можно было и проще сделать.
Нет
Я конечно извиняюсь за глупый вопрос, в файле у Вас цифры в кавычках?
Есть такой код
#include <SD.h>
#include <SPI.h>
File printFile;
String bufs;
String buf = "14";
boolean SDfound;
void setup() {
Serial.begin(9600);
if (SDfound == 0) {
if (!SD.begin(8)) {
Serial.print("SD not found");
while(1);
}
}
}
void loop() {
SDfound = 1;
printFile = SD.open("id.txt");
if (!printFile) {
Serial.print("file cannot be opened");
while(1);
}
while (printFile.available()) {
bufs = printFile.readStringUntil('\n');
Serial.println(bufs); //Вывод строки
if (bufs == buf)// Если Строка bufs == переменной buf то выводим Yes!
{
Serial.println("Yes!");
}
delay(2000);
}
printFile.close();
delay(2000);
}
Файл id.txt на SD карте содержит цифры от 1 до 20 каждая цифра с новой строки.
Приведенный код работает отлично в сериал передает все эти цифры как и хотелось.
Но вот кусок
if (bufs == buf)// Если Строка bufs == переменной buf то выводим Yes!
{
Serial.println("Yes!");
}
По какой то причинен НЕ проверяет равенство этих строк.
Почему? Где ошибка? Как ее исправить? Помогите пж.