remotexy wrote:Скиньте сюда код вашего проекта, только тот код который выдает редактор RemoteXY, в котором не работает RemoteXY.connect_flag
Я поставлю весь код, потому что он не большой.
//Хефест
//нано
#define REMOTEXY_MODE__SOFTSERIAL
#include <SoftwareSerial.h>
#include <RemoteXY.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <stdlib.h>
// RemoteXY
#define REMOTEXY_SERIAL_RX 5
#define REMOTEXY_SERIAL_TX 4
#define REMOTEXY_SERIAL_SPEED 9600
//PCF8574A / LiquidCrystal_I2C
#define I2C_ADDR 0x3F
LiquidCrystal_I2C lcd(0x3F,16,2);
// RemoteXY
#pragma pack(push, 1)
uint8_t RemoteXY_CONF[] =
{ 255,3,0,11,0,92,0,8,13,1,
1,2,7,22,50,15,94,8,208,147,
208,190,209,128,208,181,0,1,2,7,
46,50,15,94,8,208,148,208,190,208,
187,208,181,0,67,1,19,6,26,9,
19,26,11,2,1,8,84,48,10,31,
13,24,8,208,163,208,186,209,153,209,
131,209,135,208,181,208,189,208,190,0,
208,152,209,129,208,186,209,153,209,131,
209,135,208,181,208,189,208,190,0 };
struct {
uint8_t Gore;
uint8_t Dole;
uint8_t uslov;
char text_1[8];
uint8_t connect_flag;
bool Stanje_gore;
bool Stanje_dole;
bool Stanje_uslov;
} RemoteXY;
#pragma pack(pop)
unsigned char rbmerenja;
float suma,mereno;
uint8_t stanje_veze_flag;
#define PIN_GORE 7
#define PIN_DOLE 6
void print_at(byte y,byte x,char *string)
{
lcd.setCursor(y,x);
lcd.print(string);
}
void setup()
{
pinMode(A0,INPUT);
pinMode(PIN_GORE,OUTPUT);
pinMode(PIN_DOLE,OUTPUT);
digitalWrite(PIN_GORE,HIGH);
digitalWrite(PIN_DOLE,HIGH);
RemoteXY_Init();
lcd.init();
lcd.backlight();
lcd.home();
lcd.clear();
suma=0;
rbmerenja=255;
stanje_veze_flag=!RemoteXY.connect_flag;
}
void loop()
{
if (rbmerenja)
{
suma+=100*(float)analogRead(A0)/1023;
}
else
{
suma/=255;
}
RemoteXY_Handler ();
if(RemoteXY.connect_flag!=stanje_veze_flag)//RemoteXY.connect_flag всегда равен нулю !!!!!!!!!!
{ //LCD и I2C не задействованы, если только это не требуется, чтобы ускорить реакцию обработчика.
if(RemoteXY.connect_flag){print_at(0,0,"Veza DA");}else{print_at(0,0,"Veza NE");}
}
stanje_veze_flag=RemoteXY.connect_flag;
if(RemoteXY.connect_flag)//RemoteXY.connect_flag всегда равен нулю !!!!!!!!!!
{
if(RemoteXY.uslov)
{
if (rbmerenja)
{
dtostrf(suma,3,1,RemoteXY.text_1);
suma=0;
rbmerenja=255;
}
if((RemoteXY.Gore)&&(!RemoteXY.Stanje_dole))
{
RemoteXY.Stanje_gore=1;
digitalWrite(PIN_GORE,LOW);
digitalWrite(PIN_DOLE,HIGH);
}
else
{
RemoteXY.Stanje_gore=0;
digitalWrite(PIN_GORE,HIGH);
}
if((RemoteXY.Dole)&&(!RemoteXY.Stanje_gore))
{
RemoteXY.Stanje_dole=1;
digitalWrite(PIN_DOLE,LOW);
digitalWrite(PIN_GORE,HIGH);
}
else
{
RemoteXY.Stanje_dole=0;
digitalWrite(PIN_DOLE,HIGH);
}
}
else
{
dtostrf(0,3,0,RemoteXY.text_1);
digitalWrite(PIN_GORE,HIGH);
digitalWrite(PIN_DOLE,HIGH);
}
}
else
{//работает, только если он подключен
digitalWrite(PIN_GORE,HIGH);
digitalWrite(PIN_DOLE,HIGH);
}
}