 }
 
 
-void interrupt()
+void interrupt() // По каждому прерыванию начинаем собирать данные
 {
   bool dataBit = (digitalRead(PIN_DATA) == HIGH);
   unsigned long ms = millis();
   
-  mt8060_message* message = mt8060_process(ms, dataBit);
+  mt8060_message* message = mt8060_process(ms, dataBit); //Отправляем текущее время и текущий бит в функцию, взамен получаем восхитительное ничего, если битов еще не набралось до полного сообщение, и расшифрованный пакет, если битов достаточно.
 
-  if (message) {
-    if (!message->checksumIsValid)
+  if (message) { //если в ответ получен пакет
+    if (!message->checksumIsValid) //то проверяем, правильно ли рассчитана контрольная сумма
     {
       error_count++;
     }
-    else
+    else // и если правильно...
     {
-      switch (message->type)
+      switch (message->type) //...то в зависимости от типа пакета...
       {
-        case HUMIDITY:
-          hum_value = String((double)message->value / 100, 0);
-          Serial.print("HUM:");
-          Serial.println(hum_value);
+        case HUMIDITY: 
+          hum_value = String((double)message->value / 100, 0); // сохраняем значение влажности
+          Serial.print("HUM:"); 
+          Serial.println(hum_value); // Выводим в UART
           break;
 
         case TEMPERATURE:
-          tmp_value = String((double)message->value / 16 - 273.15, 1);
-          Serial.print("TMP:");
-          Serial.println(tmp_value);
+          tmp_value = String((double)message->value / 16 - 273.15, 1); // конвертируем и сохраняем значение температуры
+          Serial.print("TMP:"); // Смотрите-ка! Сиськи! -> (. )(. )
+          Serial.println(tmp_value); // Выводим в UART
           break;
 
         case CO2_PPM:
-          co2_value = String(message->value, DEC);
+          co2_value = String(message->value, DEC); // сохраняем значение количества CO₂
           Serial.print("CO2:");
-          Serial.println(co2_value);
+          Serial.println(co2_value); // Выводим в UART
           break;
 
         default:

#define PIN_CLOCK  14 //Пин, к которому подключен контакт "С" — тактовый сигнал
#define PIN_DATA   12 //Пин, к которому подключен контакт "D" — данные

#include <ESP8266WiFi.h>
#include <ESP8266WebServer.h>
#include "mt8060_decoder.h"

const char* ssid = "MikroTik-951"; //Имя сети
const char* password = "FERG2N76"; //Пароль сети
String co2_value = ""; //Значение содержания углекислоты в ppm
String tmp_value = ""; //Значение температуры в градусах цельсия
String hum_value = ""; //Значение влажности воздуха в процентах
int error_count = 0; //Счетчик ошибок контрольной суммы


ESP8266WebServer server(80); //Создаем обьект сервера

  while (WiFi.status() != WL_CONNECTED) 
  {
    delay(500);
    Serial.print("."); // Усердно показываем в UART, что мы заняты делом
  }
  Serial.println("");
  Serial.print("WiFi connected, IP ");
  Serial.println(WiFi.localIP());

  server.on("/co2", co2_show); // Устанавливаем адреса страниц и функции, этим адресам соотвествующие
  server.on("/tmp", tmp_show);
  server.on("/hum", hum_show);
  server.on("/json", json_show);
  server.onNotFound(NotFound_show); // Главная страница
  server.begin();

  pinMode(PIN_CLOCK, INPUT); //Настраиваем порты на вход
