Показаны различия между двумя версиями страницы.
Предыдущая версия справа и слеваПредыдущая версияСледующая версия | Предыдущая версия | ||
products:laboratory_iot_c:exp42 [2024/12/01 15:39] – [Программный код эксперимента] labuser30 | products:laboratory_iot_c:exp42 [2024/12/01 15:59] (текущий) – [Программный код эксперимента] labuser30 | ||
---|---|---|---|
Строка 1: | Строка 1: | ||
+ | ===== Эксперимент 42. Запись данных в файл. Двухзонный регистратор ===== | ||
+ | |||
+ | Добавим функцию записи данных в файл. Для записи выберем формат файла CSV. | ||
+ | CSV (от англ. Comma-Separated Values — значения, | ||
+ | |||
+ | Одна строка файла будет соответствовать одному измерению температуры. Первым числом будет температура в комнате, | ||
+ | |||
+ | < | ||
+ | 23,2;12,0 | ||
+ | 24,2;13,0 | ||
+ | 24,1;13,2 | ||
+ | </ | ||
+ | |||
+ | Формат CSV имеет широкое распространение, | ||
+ | |||
+ | ==== Схема эксперимента ==== | ||
+ | Схема эксперимента остается неизменной | ||
+ | {{ : | ||
+ | // | ||
+ | |||
===== Эксперимент 42. Запись данных в файл. Двухзонный регистратор ===== | ===== Эксперимент 42. Запись данных в файл. Двухзонный регистратор ===== | ||
Строка 65: | Строка 85: | ||
lcd.print(temp_inroom, | lcd.print(temp_inroom, | ||
| | ||
- | Serial.print(" | ||
- | File f = LittleFS.open("/ | ||
String s = String(temp_outodor, | String s = String(temp_outodor, | ||
s.replace(' | s.replace(' | ||
+ | | ||
+ | File f = LittleFS.open("/ | ||
f.print(s); | f.print(s); | ||
f.close(); | f.close(); | ||
+ | | ||
+ | Serial.print(" | ||
delay(2000); | delay(2000); | ||
} | } | ||
Строка 84: | Строка 106: | ||
void loop() { | void loop() { | ||
} | } | ||
+ | </ | ||
+ | |||
+ | По сравнений с прошлой программой мы перенесли код работы с датчиками из бесконечного цикла в конечный, | ||
+ | |||
+ | Создаем строку из чисел для записи в файл. Строка состоит из температуры в комнате, | ||
+ | <code arduino[enable_line_numbers=" | ||
+ | String s = String(temp_outodor, | ||
+ | </ | ||
+ | |||
+ | Arduino использует точку как десятичный разделитель. Однако русские версии программ, | ||
+ | <code arduino[enable_line_numbers=" | ||
+ | s.replace(' | ||
</ | </ | ||
Далее идет работа с файлом. Открываем файл. Дескриптор открытого файла оказывается в переменной f. | Далее идет работа с файлом. Открываем файл. Дескриптор открытого файла оказывается в переменной f. | ||
- | < | + | < |
- | f = open('temp_data.csv', 'a') | + | |
</ | </ | ||
Строка 94: | Строка 128: | ||
Записываем в файл строку: | Записываем в файл строку: | ||
- | < | + | < |
- | | + | f.print(s); |
</ | </ | ||
- | Строка состоит из температуры в комнате, | ||
После записи закрываем файл: | После записи закрываем файл: | ||
- | < | + | < |
- | f.close() | + | f.close(); |
</ | </ | ||
- | Запустим программу и дадим ей некоторое время поработать, | + | Далее открываем файл уже в режиме чтения - '' |
- | <span menu-item> | + | <code arduino[enable_line_numbers=" |
- | <span menu-item> | + | File f = LittleFS.open(" |
- | </span> или иконка {{: | + | while(f.available()) Serial.write(f.read()); |
- | + | f.close(); | |
- | Открывается окно файлового менеджера: | + | </code> |
- | {{ : | + | |
- | Выбираем наш файл | + | Запустим программу и дождемся ее выполнения. Это займет 1 минуту, |
- | {{ : | + | К сожалению при использовании Arduino IDE отсутствует удобный способ скачать созданный файл на компьютер. Поэтому предлагаем создать с помощью блокнота текстовый файл, скопировать в него выведенные в последовательный порт данные и сохранить файл с расширением .csv. |
- | В файле видим то, чего и ожидали. Данные о температуре в формате CSV. Читать такие данные достаточно неудобно, | + | Читать такие данные достаточно неудобно, |
{{ : | {{ : |