Это старая версия документа!
Добавим функцию записи данных в файл. Для записи выберем формат файла CSV. CSV (от англ. Comma-Separated Values — значения, разделённые запятыми) — текстовый формат, предназначенный для представления табличных данных. Строка таблицы соответствует строке текста, которая содержит одно или несколько полей, разделенных запятыми.
Одна строка файла будет соответствовать одному измерению температуры. Первым числом сбудет температура в комнате, а вторым — на улице. Разделителем данных в строке будет символ точки с запятой. Пример записей в файл:
23,2;12,0 24,2;13,0 24,1;13,2
Формат CSV имеет широкое распространение, его можно открыть в Excel или OpenOffice Calc и построить графики. Что мы и сделаем.
from machine import Pin, I2C from esp8266_i2c_lcd import I2cLcd import time import math import onewire import ds18x20 import re _init() Bcoef = 3950 R1 = 10000 Rtnom = 10000 T0 = 273.15 adc = machine.ADC(0) ow = onewire.OneWire(Pin(12)) ds = ds18x20.DS18X20(ow) DEFAULT_I2C_ADDR = 0x3F i2c = I2C(scl=Pin(5), sda=Pin(4), freq=400000) lcd = I2cLcd(i2c, DEFAULT_I2C_ADDR, 2, 16) lcd.backlight_on() while True: value = adc.read() R = (-R1 * value)/(value-1023) temp = 1 / (math.log(R / Rtnom) / Bcoef + 1/(25+T0)) -T0 outodor_temp = round(temp,1) roms = ds.scan() ds.convert_temp() temp = ds.read_temp(roms[0]) inroom_temp = round(temp,1) print("Outodor: " + str(outodor_temp)) print('In room: ' + str(inroom_temp)) lcd.clear() lcd.putstr("Outodor: " + str(outodor_temp)) lcd.move_to(0,1) lcd.putstr("In room: " + str(inroom_temp)) string_inroom_temp = str(inroom_temp) string_outodor_temp = str(outodor_temp) string_inroom_temp = re.sub('\.', ',', string_inroom_temp) string_outodor_temp = re.sub('\.', ',', string_outodor_temp) f = open('temp_data.csv', 'a') written = f.write(string_inroom_temp + ';' + string_outodor_temp + "\n") f.close() time.sleep(5)