Реклама:
Хочешь стать куратором любимой темы?
0 Пользователи и 1 Гость просматривают эту тему.
Конечно интересно!
// Регулятор-стабилизатор с градусниками для БК// (c) dunkel// Wemos 9V#define ver 9190926 // version/datachar auth[] = "сюда свой код"; //blynk String Hostname = "сюда свой мак-адрес"; //narmon#include <ESP8266WiFi.h>#include <BlynkSimpleEsp8266.h>char ssid[] = "точка доступа";char pass[] = "пароль";#include <ArduinoOTA.h>#include <TimeLib.h>#include <WidgetRTC.h>#define BLYNK_PRINT SerialWidgetTerminal terminal(V21);WidgetRTC rtc;#include <OneWire.h>#include <DallasTemperature.h>#define ONE_WIRE_BUS 13#define TEMPERATURE_PRECISION 12OneWire oneWire(ONE_WIRE_BUS);DallasTemperature sensors(&oneWire);DeviceAddress insideThermometer = { 0x28, 0xA8, 0x15, 0x94, 0x97, 0x14, 0x3, 0xC5 };DeviceAddress outsideThermometer = { 0x28, 0x99, 0x64, 0x94, 0x97, 0xE, 0x3, 0xB4 };//Адреса DS18b20//PAR: 28A81594971403C5 28 A8 15 94 97 14 3 C5//VODA: 28996494970E03B4 28 99 64 94 97 E 3 B4float tempPAR = 0;float tempVODA = 0;const int analogInPin = A0; // ESP8266 Analog Pin ADC0 = A0bool Full = 0; // Форсажbool Stop = 0;int sensorValue = 0; // value read from the potfloat Uin = 0;float Uout = 100;float t = 0; //пауза, секfloat t2 = 0; //лишняя пауза, секint pinSSR = 12;unsigned long tim = 0;#define postingInterval 310000 // интервал между отправками данных в миллисекундах (5 минут)unsigned long lastConnectionTime = 0; // время последней передачи данныхBLYNK_CONNECTED() { // синхронизация значений с сервером Blynk Blynk.syncVirtual(V14, V15, V16);}// получаем значения от сервера BLYNKBLYNK_WRITE(V14) // кнопка{ Stop = param.asInt();}BLYNK_WRITE(V15) // кнопка{ Full = param.asInt();}BLYNK_WRITE(V16) // слайдер{ Uout = param.asFloat();}void setup() { Serial.begin(115200); pinMode(pinSSR, OUTPUT); // - на реле digitalWrite(pinSSR, LOW); // Blynk.begin(auth, ssid, pass); rtc.begin(); ArduinoOTA.begin(); sensors.begin(); sensors.setResolution(insideThermometer, TEMPERATURE_PRECISION); sensors.setResolution(outsideThermometer, TEMPERATURE_PRECISION); Serial.println(WiFi.localIP()); Serial.println(WiFi.macAddress()); Serial.print("Narodmon ID: "); Serial.println(Hostname); // вывод в терминал Blynk terminal.print("START BK "); terminal.print(Hostname); terminal.print(" "); terminal.println(WiFi.localIP()); terminal.println(ver); terminal.flush();}void loop() { Blynk.run(); ArduinoOTA.handle(); //////////////////////// НАГРЕВ 1сек. /////////////////////// if (!Stop) digitalWrite(pinSSR, HIGH); tim = millis(); // Опрос DS18b20 sensors.requestTemperatures(); tempPAR = sensors.getTempC(insideThermometer); tempVODA = sensors.getTempC(outsideThermometer); // // ИЗМЕРЕНИЕ НАПРЯЖЕНИЯ sensorValue = 0; for (int j = 1; j <= 10; j++) { sensorValue += analogRead(analogInPin); } Uin = sensorValue * 0.0396; ///// КОЭФ. БП // t = Uin * Uin / Uout / Uout - 1; // Вычисляем длительность паузы Serial.print("Uin = "); Serial.print(Uin); Serial.print(" t = "); Serial.println(t); Serial.print("TempPAR: "); Serial.print(tempPAR); Serial.print(" TempVODA: "); Serial.print(tempVODA); Serial.println(); Serial.println(millis() - tim); Serial.println(); do { yield(); // пустой цикл } while (millis() - tim < 1000); if (!Full) digitalWrite(pinSSR, LOW); ////////////////////////////////////////////////////////// /////////////// ПАУЗА В НАГРЕВЕ //////////////////////// tim = millis(); //Отправка в Blynk Blynk.virtualWrite(V0, Uin); //напр. вх. Blynk.virtualWrite(V1, t); //пауза Blynk.virtualWrite(V2, tempPAR); Blynk.virtualWrite(V3, tempVODA); // //Народный мониторинг - отправка каждые 5мин. if ((millis() - lastConnectionTime) > postingInterval) { if (Full) Uout = Uin; SendToNarodmon(); lastConnectionTime = millis(); String currentTime = String(hour()) + ":" + minute() + ":" + second() + " "; terminal.print(currentTime); terminal.print(" P "); terminal.print(tempPAR); terminal.print(" V "); terminal.print(tempVODA); terminal.print(" U "); terminal.println(Uout); terminal.flush(); } // t2 = (millis() - tim) / 1000 - t; //лишняя пауза if ( t2 < 0 ) { //продолжаем паузу t do { yield(); // пустой цикл } while ((millis() - tim) < (t * 1000)); } else { //компенсируем лишнюю паузу digitalWrite(pinSSR, HIGH); delay(t2 / t * 1000); digitalWrite(pinSSR, LOW); } ////////////////////////////////////////////////////////} ///////////////////////////////////////////////////////////////loopvoid SendToNarodmon() { WiFiClient client; String buf; buf = "#" + Hostname + "\r\n"; // заголовок buf = buf + "#Uin#" + String(Uin) + "\r\n"; //напр. buf = buf + "#Uout#" + String(Uout) + "\r\n"; //напр. buf = buf + "#tpa#" + String(t) + "\r\n"; // buf = buf + "#PAR#" + String(tempPAR) + "\r\n"; // buf = buf + "#VVOD#" + String(tempVODA) + "\r\n"; // buf = buf + "##\r\n"; // закрываем пакет if (!client.connect("narodmon.ru", 8283)) { // попытка подключения Serial.println("connection failed"); } else { client.print(buf); // и отправляем данные while (client.available()) { String line = client.readStringUntil('\r'); // если что-то в ответ будет - все в Serial Serial.print(line); } }}
А будете хамить, сами знаете что будет)
Думаю, на сегодня хватит. Все равно никто ничего не понял. Завтра буду объяснять.
Пока писал, хвосты пошли в отбор.
Все поняли. Вон там колонна, вон там холодильник.
Все равно никто ничего не понял
но зато чисто вся стеклянная , Simax.
По поводу описания процессов в колонне , вряд ли кому то тут это все будет интересно , уж слишком профиль форума не подходящий.
В стеклянной колонне интересно наблюдать как движутся фронты различных фракций по насадкам
особенно когда разгонял смесь воды ,ацетона , изопропанола и этанола
и есть обычный самогон. И некоторые его пьют!