1

Topic: Не стабильная работа

здравствуйте помогите разобраться с проблемой!

компоненты:arduino nano, bt- HC-06, термодатчики ds18b20 -2 шт. и DHT-11, и блок реле на 8 реле кажется...
питание от usb ноутбука, или от двух амперной зарядки от телефона 5В

вот такой простой, тестовый скетч работает отлично:

// определение режима соединения и подключение библиотеки RemoteXY 
#define REMOTEXY_MODE__SOFTSERIAL
#include <SoftwareSerial.h>

#include <RemoteXY.h>

#include "OneWire.h"
#include "DallasTemperature.h"

#define ONE_WIRE_BUS 6
OneWire oneWire(ONE_WIRE_BUS); 
DallasTemperature sensors(&oneWire);
DeviceAddress sensor1 = { 0x28, 0xAA, 0xA4, 0x8D, 0x53, 0x14, 0x1, 0xF3 };

// настройки соединения 
#define REMOTEXY_SERIAL_RX 2
#define REMOTEXY_SERIAL_TX 3
#define REMOTEXY_SERIAL_SPEED 9600


// конфигурация интерфейса  
#pragma pack(push, 1)
uint8_t RemoteXY_CONF[] =
  { 255,11,0,12,0,28,0,10,13,1,
  67,4,6,7,37,13,2,26,11,7,
  36,6,38,37,13,2,26,2,11,65,
  10,6,59,9,9 };
  // структура определяет все переменные и события вашего интерфейса управления 
struct {
 // input variables
  char edit_1[11];  // =строка UTF8 оканчивающаяся нулем  

    // output variables
  char temp1[11];  // =строка UTF8 оканчивающаяся нулем 
 uint8_t led_1_g; // =0..255 яркость зеленого цвета индикатора 
    // other variable
  uint8_t connect_flag;  // =1 if wire connected, else =0 





} RemoteXY;
#pragma pack(pop)

/////////////////////////////////////////////
//           END RemoteXY include          //
/////////////////////////////////////////////



void setup() 
{
  RemoteXY_Init (); 
  
  
  sensors.begin();
  Serial.begin(9600);
 
  pinMode(8, OUTPUT); 
 

}

void loop() 
{ 
  RemoteXY_Handler ();
  
  
 sensors.requestTemperatures();
 dtostrf(sensors.getTempC(sensor1), 0, 1, RemoteXY.temp1);
  int value = atoi (RemoteXY.edit_1);
  int temp = atoi (RemoteXY.temp1);

Serial.println(value);
 Serial.println(temp); 

   if (value == 0)
   {
    
     
       RemoteXY.led_1_g = 0; 
       digitalWrite(8, LOW);
       
 } else if (value> temp) {

    
       RemoteXY.led_1_g = 0; 
       digitalWrite(8, LOW);
           
  
   }
   else
     {

    
      RemoteXY.led_1_g = 225; 
      digitalWrite(8, HIGH);

      }
         }

но в конечном варианте все это работать не хочет. перестает отображаться температура, переключатели срабатывают 1 раз из 5, и не работает поле ввода...
вот окончательный вариант, который отказывается работать

// определение режима соединения и подключение библиотеки RemoteXY 
#define REMOTEXY_MODE__SOFTSERIAL
#include <SoftwareSerial.h>

#include <RemoteXY.h>
#include "DHT.h"
#define DHTPIN 5 // номер пина, к которому подсоединен датчик
DHT dht(DHTPIN, DHT11);

#include "OneWire.h"
#include "DallasTemperature.h"
 
#define ONE_WIRE_BUS 7
OneWire oneWire(ONE_WIRE_BUS); 
DallasTemperature sensors(&oneWire);
DeviceAddress sensor1 = { 0x28, 0xFF, 0x7C, 0x5B, 0xB2, 0x17, 0x1, 0x67 };
DeviceAddress sensor2 = { 0x28, 0xAA, 0x7F, 0xA0, 0x53, 0x14, 0x1, 0x30 };



// настройки соединения 
#define REMOTEXY_SERIAL_RX 2
#define REMOTEXY_SERIAL_TX 3
#define REMOTEXY_SERIAL_SPEED 9600


// конфигурация интерфейса  
#pragma pack(push, 1)
uint8_t RemoteXY_CONF[] =
  { 255,5,0,44,0,170,1,10,207,1,
  130,1,2,61,59,37,179,130,1,2,
  27,59,32,179,130,1,2,2,59,23,
  137,67,5,4,13,22,8,2,26,11,
  67,5,4,33,22,8,2,26,11,129,
  0,23,3,16,4,25,208,186,208,190,
  208,188,208,189,208,176,209,130,208,176,
  0,129,0,10,29,38,4,25,208,145,
  208,190,208,187,209,140,209,136,208,190,
  208,185,32,208,176,208,186,208,178,208,
  176,209,128,208,184,209,131,208,188,0,
  67,5,32,13,22,8,2,26,11,129,
  0,4,7,50,4,25,209,130,208,181,
  208,188,208,191,208,181,209,128,208,176,
  209,130,209,131,209,128,208,176,32,32,
  32,208,178,208,187,208,176,208,182,208,
  189,208,190,209,129,209,130,209,140,0,
  67,5,4,67,22,8,2,26,11,129,
  0,10,63,38,4,25,208,156,208,176,
  208,187,208,181,208,189,209,140,208,186,
  208,184,208,185,32,208,176,208,186,208,
  178,208,176,209,128,208,184,209,131,208,
  188,0,2,0,4,51,18,6,2,26,
  31,31,79,78,0,79,70,70,0,129,
  0,7,45,9,4,25,208,161,208,178,
  208,181,209,130,0,2,0,4,80,18,
  6,2,26,31,31,79,78,0,79,70,
  70,0,2,0,4,90,18,6,2,26,
  31,31,79,78,0,79,70,70,0,129,
  0,4,76,22,4,25,209,129,208,178,
  208,181,209,130,32,208,177,208,181,208,
  187,209,139,208,185,0,129,0,4,86,
  22,4,25,209,129,208,178,208,181,209,
  130,32,209,129,208,184,208,189,208,184,
  208,185,0,2,0,37,51,18,6,2,
  26,31,31,79,78,0,79,70,70,0,
  129,0,35,46,23,4,25,208,146,208,
  181,208,189,209,130,208,184,208,187,209,
  143,209,130,208,190,209,128,0,2,0,
  38,90,18,6,2,26,31,31,79,78,
  0,79,70,70,0,129,0,35,85,23,
  4,25,208,146,208,181,208,189,209,130,
  208,184,208,187,209,143,209,130,208,190,
  209,128,0 };
  
// структура определяет все переменные и события вашего интерфейса управления 
struct {

    // input variables
  uint8_t light1; // =1 если переключатель включен и =0 если отключен 
  uint8_t light2; // =1 если переключатель включен и =0 если отключен 
  uint8_t light3; // =1 если переключатель включен и =0 если отключен 
  char edit_1[11];
  char edit_2[11];

    // output variables
  char outtemp[11];  // =строка UTF8 оканчивающаяся нулем 
  char intemp1[11];  // =строка UTF8 оканчивающаяся нулем 
  char hum[11];  // =строка UTF8 оканчивающаяся нулем 
  char intemp2[11];  // =строка UTF8 оканчивающаяся нулем 
  

    // other variable
  uint8_t connect_flag;  // =1 if wire connected, else =0 

} RemoteXY;
#pragma pack(pop)

/////////////////////////////////////////////
//           END RemoteXY include          //
/////////////////////////////////////////////

#define PIN_LIGHT1 A0
#define PIN_LIGHT2 A1
#define PIN_LIGHT3 A2


void setup() 
{
  RemoteXY_Init (); 
  
  pinMode (PIN_LIGHT1, OUTPUT);
  pinMode (PIN_LIGHT2, OUTPUT);
  pinMode (PIN_LIGHT3, OUTPUT);
   pinMode(8, OUTPUT);
   pinMode(9, OUTPUT);
  // TODO you setup code
   dht.begin();
  sensors.begin();
  Serial.begin(9600);
}

void loop() 
{ 
  RemoteXY_Handler ();
  
  digitalWrite(PIN_LIGHT1, (RemoteXY.light1==0)?LOW:HIGH);
  digitalWrite(PIN_LIGHT2, (RemoteXY.light2==0)?LOW:HIGH);
  digitalWrite(PIN_LIGHT3, (RemoteXY.light3==0)?LOW:HIGH);
  
  // TODO you loop code
  // используйте структуру RemoteXY для передачи данных
  // не используйте функцию delay() 
float hum  =  dht.readHumidity();
    dtostrf(hum, 0, 1, RemoteXY.hum);
    float t = dht.readTemperature();
    dtostrf(t, 0, 1, RemoteXY.outtemp);
 sensors.requestTemperatures();
 dtostrf(sensors.getTempC(sensor1), 0, 1, RemoteXY.intemp1);
 dtostrf(sensors.getTempC(sensor2), 0, 1, RemoteXY.intemp2);
  
   int value1 = atoi (RemoteXY.edit_1);
   int temp1 = atoi (RemoteXY.intemp1);
  
     if (value1 == 0)
   {
         
       digitalWrite(11, LOW);
            
   } else if (value1 > temp1)
    {
      
       digitalWrite(11, LOW);
    }
       else
      {
       
      digitalWrite(11, HIGH);

      }
   
  int value2 = atoi (RemoteXY.edit_2);
  int temp2 = atoi (RemoteXY.intemp2);

       if (value2 == 0)
   {
       digitalWrite(12, LOW);
            
   } else if (value2> temp2)
    {

       digitalWrite(12, LOW);
    }
       else
      {
     
      digitalWrite(12, HIGH);

      }
 
}

помогите с решением, заранее спасибо