Этого было бы достаточно))
Вы не обижайтесь и не принимайте близко к сердцу реакцию на ваш проект. Он не особо заинтересовал местный истеблишмент только по одной причине. Вы опубликовали это в разделе “проекты”, а нужно было в “песочнице” и попросить конструктивной критики профессионалов, которые есть тут. Когда вы выходите играть за сборную страны по хоккею, вы же не будете объяснять болельщикам, что всего год на коньках? Если вам не требуется помощь, тогда вовсе не стоило это тут публиковать. работает у вас - ну и пользуйтесь на здоровье.
Ваш проект требует существенной доработки. Если вы примете это как данность, у вас есть все шансы довести его до “проектного” вида
конструктивно, это к примеру взять код передатчика и помочь поправить
#include <SoftwareSerial.h>//передатчик установлен в доме №39(окончательная версия)
SoftwareSerial HC12(10, 11); // HC-12 TX Pin10, HC-12 RX Pin11
#include <GyverNTC.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2); // Задаем адрес и размер дисплея
GyverNTC therm(1, 10000, 3950); // пин, R термистора при 25 градусах, B термистора. (R резистора по умолч. 10000)
#include "EmonLib.h"
#define VOLT_CAL 277
EnergyMonitor emon1;
byte R1 = 4;//включить(R1 = 1) - отключить реле1 (R1 = 0)
byte R2 = 5;//включить(R1 = 1) - отключить реле2 (R2 = 0)
byte R3 = 6;//включить(R1 = 1) - отключить реле3 (R3 = 0)
byte R4 = 7;//включить(R1 = 1) - отключить реле4 (R4 = 0)
byte Sign = 9;//вход срабатывания сигнализации
byte s = 55;//код подтверждения выполнения запроса телеуправления
byte h = 65;//код подтверждения передачи температуры
byte Trev = 75;//код срабатывания сигнализации
float T1;//температура с датчикa NTC
float V1;//напряжение с датчика ZMPT
byte Mig = 8;//мигающий светодиод
void setup()
{
Serial.begin(1200); // Serial port to computer
HC12.begin(1200); // Serial port to HC12
lcd.init(); // Инициализация lcd
lcd.backlight(); // Включаем подсветку
emon1.voltage(0, VOLT_CAL, 1.7); //Напряжение: входной контакт, калибровка, фазовый сдвиг
pinMode(R1,OUTPUT);
pinMode(R2,OUTPUT);
pinMode(R3,OUTPUT);
pinMode(R4,OUTPUT);
pinMode(Sign,INPUT_PULLUP);//включение на ввод с подтягивающим резистором к +5В
pinMode(Mig,OUTPUT);
}
void loop()
{
byte /*y,*/r1,r2,r3,r4;//номера коммутируемых реле
byte c;//признак режима работы
byte Tr = digitalRead(Sign);//вход сигнализации
m2: while (HC12.available()) //ждём запрос от приёмника
{
c = HC12.read();
//Serial.println(c);
if((c!=40)&&(c<16))//выбран режим управления реле
{
r1 = c & B00000001;
r2 = c & B00000010;
r3 = c & B00000100;
r4 = c & B00001000;
if(r1 == 1)digitalWrite(R1,HIGH);
else digitalWrite(R1,LOW);
if(r2 == 2)digitalWrite(R2,HIGH);
else digitalWrite(R2,LOW);
if(r3 == 4)digitalWrite(R3,HIGH);
else digitalWrite(R3,LOW);
if(r4 == 8)digitalWrite(R4,HIGH);
else digitalWrite(R4,LOW);
if(Tr == 1)HC12.write(Trev);//посылаем в приёмник сигнал тревоги 75
else HC12.write(s);//посылаем код подтверждения 55
goto m2;
}
if(c==40)//если выбран режим измерения температуры и напряжения
{
T1 = (therm.getTempAverage());
emon1.calcVI(20,2000); //рассчитать все. Количество полудлин волн (пересечений), тайм-аут
V1 = (emon1.Vrms); //извлечь Vrms в переменную
V1 = V1 -14;//коррекция показаний датчика
lcd.setCursor(0,0);//первая строка,первый символ
lcd.print("T dom ");
lcd.print(T1);
lcd.print(char(223));//выводим символ градуса Цельсия
lcd.print("C");
lcd.setCursor(0,1);
lcd.print("U = ");
lcd.print(V1,0 );
lcd.print(" V");
float y = T1*100;//избавляемся от запятой
int a = (int)(y);//меняем тип переменной с float на int
byte b =(byte)(a & 0xff);//младший байт температуры
HC12.write(b);//передаём младший байт;
//Serial.println(b);
byte c = (byte)(a>>8);//старший байт температуры
//Serial.println(c);
HC12.write(c);//передаём старший байт
int V = (int)V1;
byte v =(byte)(V & 0xff);
HC12.write(v);
if(Tr == 1)HC12.write(Trev);//посылаем в приёмник сигнал тревоги 75
else HC12.write(h);//посылаем код подтверждения 65
//Serial.println(h);
goto m2;
}
}
}
Тема для настоящего ЧЧ
Автор свалил, а ему все пишут)
конструктивно не выкладывать свой код в чужой теме
когда было иначе
это код ТС, я тока одну переменную замаркировал )))
ох упс
Добрый день!
Спасибо Вам за доброжелательный и вразумительный ответ.
Главная моя проблема - это то что я один.
Если Вас не затруднит, просьба подсказать, что нужно доработать в этом проекте.
Начать, безусловно, следует с того, что изложено в сообщении №11.
Потому что пока обсуждать нечего.
Вы просите о помощи, но делаете это без уважения.
Вы получили уже много практических рекомендаций, минимум на неделю работы, но проигнорировали даже просьбу вставить код в читаемом виде. Или вы думаете, что у кого-то тут настолько скучная и пустая жизнь, что они только и ждали вас с возможностью поковыряться в чужом потоке сознания? Вам никто не станет переписывать ваш код. Вам придется делать это самому. С чего начать уже сказали.