Переменные Arduino, загруженные с SD-карты
Я пытаюсь загрузить некоторые переменные с SD-карты при запуске моего arduino Uno. Мне дали несколько советов, но я не могу общаться в то же время. Используя этот совет, я отредактировал следующий код, но он не работает, и я считаю, что проблема в моей реализации. Любая помощь будет высоко оценена.
myFile = SD.open("test.txt", FILE_READ);
if (myFile) {
while (myFile.available()) {
myFile.read();
km = myFile.parseInt();
kmTemp = myFile.parseFloat();
kmrevs = myFile.parseInt();
miles = myFile.parseInt();
milesTemp = myFile.parseFloat();
milesrevs = myFile.parseInt();
}
myFile.close();
}
else {
Serial.println("Read Error");
}
@user4163554, 👍0
Обсуждение1 ответ
Лучший ответ:
В вашем предыдущем вопросе, где я ответил, в содержимом файла-примера не было запятых или новых строк. parseInt и parseFloat по умолчанию игнорируют только пробелы.
удалите запятые или прочитайте их или проигнорируйте с помощью параметра parseInt SKIP_ALL
km = myFile.parseInt(SKIP_ALL);
Привет, там нет запятых, это просто в разделе комментариев, всякий раз, когда я нажимаю Enter, сообщение публикуется вместо того, чтобы начинать новую строку... поэтому я использовал запятые для разделения различных данных., @user4163554
Привет, Юрай. Признаюсь, я никогда ничего не анализировал так глубоко, как ваши два ответа. Чувствую, что мои выходные не прошли даром, ведь я наконец-то понял, что вы имели в виду. Теперь всё идёт как по маслу, и это именно то, чего я хотел. Спасибо., @user4163554
- Arduino: загрузка переменных со значениями, считанными с SD-карты
- Сохранение файла .txt на SD-карту и чтение данных каждого содержимого в файл txt, а затем сохранение его в переменной
- Объявленная переменная внутри void setup не видится в void loop
- Изменить/объявить константу в setup и использовать ее в цикле loop
- Как использовать SPI на Arduino?
- Как получить тип данных переменной?
- Библиотека DHT.h не импортируется
- Светодиоды: разница между общим анодом и общим катодом
Почему не работает? Опишите подробнее. И что на самом деле написано в файле, который вы хотите прочитать?, @chrisl
Программа собирает/вычисляет 6 фрагментов данных, которые затем сохраняются в текстовый файл на SD-карте. Текстовый файл отображает 6 фрагментов данных в виде вертикального списка. При включении Arduino я пытаюсь заставить программу считывать эти 6 бит данных, присваивая значения 6 различным переменным, прежде чем программа перейдет в цикл (этот скрипт находится в setup(), если это снимает вопросы)., @user4163554
При запуске и перезапуске выходные данные соответствуют значениям программы по умолчанию: «0» и «0,000000», где применяются числа с плавающей точкой, а не данные, которые сохраняются на диске., @user4163554
Вы всё ещё не указали файл на SD-карте. Убедитесь, что вы используете для этого простой текстовый редактор. Например, Microsoft Word или Adobe Framemaker добавят невероятное количество ресурсов, что запутает библиотеку анализа., @st2000
что на самом деле написано в файле, который вы хотите прочитать?пожалуйста, ответьте на этот вопрос., @GerbenПосле parseInt следующим символом будет разделитель. Например, запятая (
,). При следующем вызове parseInt функция обнаружит запятую и вернёт 0. Попробуйте добавитьmyFile.read();между каждым parseInt/parseFloat., @GerbenmyFile = SD.open("test.txt", FILE_WRITE); если (мойФайл) { myFile.println(км); myFile.println(kmTemp, 6); myFile.println(kmrevs); myFile.println(мили); myFile.println(milesTemp, 6); myFile.println(milesrevs); мойФайл.закрыть(); } еще { // ОШИБКА СОХРАНЕНИЯ SD Serial.println("Ошибка сохранения"); }, @user4163554
Вот как я его сохраняю. Файл test.txt содержит следующие примеры чисел: 1, 0,001600, 12, 0, 0,072000, 0. Они перечислены вертикально в текстовом файле с помощью println() в только что опубликованном методе сохранения., @user4163554
Gerben - Я попробовал myFile.read(), но это не дало никаких результатов., @user4163554