1 (edited by xxbaykov 2022-12-13 07:59:36)

Topic: Индикация

Подскажите как выполнить текстовую индикацию в проекте с отображением десятых и сотых долей? Обычно получается вывести только целые числа. Необходимо вывести показания датчика давления воды через ESP8266 на телефон с использованием программы FLProg

2

Re: Индикация

Посмотрите документацию, там есть примеры как это можно сделать
https://remotexy.com/en/help/indications/text/

  double val = 1234.321;
  dtostrf(val, 0, 2, RemoteXY.text_1); // result: "1234.32"

3

Re: Индикация

Добрый вечер! я очень далек от программирования. Прошу Вас показать пример простейшей программы программы с выводом на экран телефона текстовой индикации с десятыми долями числа со  входа А0 платы Wemos mini. Может с примера пойму куда вставить текст написанный Вами ранее. У меня пока ничего не получается. Спасибо

4

Re: Индикация

xxbaykov wrote:

Обычно получается вывести только целые числа.

If you are already able to do this, then just follow the already simple example given to replace your normal print output with

dtostrf()

Perhaps... Show us what you DO have working so someone can better explain with what you already know.

Select and enclose your posted code using the editing button <> to make it easier for us to follow along.

"And voila, which is French for.......'and then I found out.'" - Ready Player One

5

Re: Индикация

Внимание!Перед публикацией вашего сообщения необходимо исправить следующие ошибки:
[i— был открыт внутри себя, это недопустимо


Не получается отправить код, каждый раз появляется такая информация на экране

6

Re: Индикация

По той же ссылке самый последний пример. https://remotexy.com/en/help/indications/text/

  // АЦП равен 204.8 на вольт при напряжении питания 5 Вольт
  double val = analogRead(A0) / 204.8; 
  dtostrf(val, 0, 2, RemoteXY.text_1); 

Так же можете посмотреть этот пример https://remotexy.com/ru/examples/temperature/

7 (edited by xxbaykov 2022-12-26 13:54:58)

Re: Индикация

Удалось отправить код. Подскажите, где необходимо исправить? И если возможно, выделите цветом. Спасибо!

#define  REMOTEXY_MODE__ESP8266WIFI_LIB_CLOUD
#include <ESP8266WiFi.h>
#include <RemoteXY.h>
extern "C" 
{
    #include "user_interface.h"
}
#define REMOTEXY_WIFI_SSID "*****"
#define REMOTEXY_WIFI_PASSWORD "******"
#define REMOTEXY_CLOUD_SERVER "cloud.remotexy.com"
#define REMOTEXY_CLOUD_PORT 6376
#define REMOTEXY_CLOUD_TOKEN "f568b4899837f0c"
#pragma pack(push, 1)
uint8_t RemoteXY_CONF[] = {255, 0, 0, 11, 0, 12, 0, 16, 31, 1, 67, 5, 14, 42, 33, 17, 2, 26, 11};
struct 
{
    char text_1[11];
    unsigned char connect_flag;
}
 RemoteXY;
#pragma pack(pop)
int ESP8266_AnalogInputValue;
unsigned long ESP8266_AnalogInputValue_StR;
bool ESPControllerWifiClient_HRD = 0;
bool ESPControllerWifiClient_status = 1;
bool ESPControllerWifiClient_isDHCP = 1;
bool ESPControllerWifiClient_IsNeedReconect = 0;
bool ESPControllerWifiClient_workStatus = 1;
char ESPControllerWifiClient_SSID[40] = "*****";
char ESPControllerWifiClient_password[40] = "*****";
IPAddress ESPControllerWifiClient_ip(0, 0, 0, 0);
IPAddress  ESPControllerWifiClient_dns (0, 0, 0, 1);
IPAddress  ESPControllerWifiClient_gateway (0, 0, 0, 1);
IPAddress ESPControllerWifiClient_subnet (255, 255, 255, 0);
uint8_t ESPControllerWifiClient_mac[6] = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0};
void setup()
{
    RemoteXY_Init ();
    ESP8266_AnalogInputValue_StR = millis() + 500 ;
    WiFi.mode(WIFI_STA);
    _esp8266WifiModuleClientReconnect();
}
void loop()
{
    RemoteXY_Handler  ();
    if(ESPControllerWifiClient_IsNeedReconect) 
    {
        _esp8266WifiModuleClientReconnect();
        ESPControllerWifiClient_IsNeedReconect = 0;
    }
    ESPControllerWifiClient_status = WiFi.status() == WL_CONNECTED;
    if (ESPControllerWifiClient_status) 
    {
         if (! ESPControllerWifiClient_HRD) 
        {
            ESPControllerWifiClient_ip =  WiFi.localIP();
            ESPControllerWifiClient_subnet =  WiFi.subnetMask();
            ESPControllerWifiClient_gateway =  WiFi.gatewayIP();
            ESPControllerWifiClient_dns =  WiFi.dnsIP();
            WiFi.macAddress(ESPControllerWifiClient_mac);
            ESPControllerWifiClient_HRD = 1;
        }
    }
     else 
    {
        ESPControllerWifiClient_HRD = 0;
    }
    if(_isTimer(ESP8266_AnalogInputValue_StR, 500))
    {
        ESP8266_AnalogInputValue_StR = millis();
        ESP8266_AnalogInputValue = analogRead(A0);
    }
    //Плата:1
    ((String(ESP8266_AnalogInputValue, DEC))).toCharArray((RemoteXY.text_1), 11);
}
bool _isTimer(unsigned long startTime, unsigned long period)
{
    unsigned long currentTime;
    currentTime = millis();
    if (currentTime>= startTime) 
    {
        return (currentTime>=(startTime + period));
    }
     else 
    {
        return (currentTime >=(4294967295-startTime+period));
    }
}
int hexStrToInt(String instring)
{
    byte len = instring.length();
    if  (len == 0) return 0;
    int result = 0;
    for (byte i = 0; i < 8; i++)    // только первые 8 цыфар влезуть в uint32
    {
        char ch = instring[i];
        if (ch == 0) break;
        result <<= 4;
        if (isdigit(ch))
        result = result | (ch - '0');
        else result = result | (ch - 'A' + 10);
    }
    return result;
}
void _esp8266WifiModuleClientReconnect()
{
    if(_checkMacAddres(ESPControllerWifiClient_mac)) 
    {
          wifi_set_macaddr(0, const_cast<uint8*>(ESPControllerWifiClient_mac));
    }
    if(ESPControllerWifiClient_isDHCP) 
    {
         WiFi.config(0U, 0U, 0U, 0U, 0U);
    }
     else 
    {
        WiFi.config(ESPControllerWifiClient_ip, ESPControllerWifiClient_gateway, ESPControllerWifiClient_subnet, ESPControllerWifiClient_dns , ESPControllerWifiClient_dns);
    }
    WiFi.begin(ESPControllerWifiClient_SSID, ESPControllerWifiClient_password);
}
bool _checkMacAddres(byte array[])
{
    bool result = 0;
    for (byte i = 0; i < 6; i++)
    {
        if (array[i] == 255) 
        {
            return 0;
        }
        if (array[i] > 0) 
        {
            result = 1;
        }
    }
    return result;
}
void _parseMacAddressString(String value, byte array[])
{
    int index;
    byte buffer[6] = {255, 255, 255, 255, 255, 255};
    byte raz = 0;
    String tempString;
    while ((value.length() > 0) && (raz <= 6)) 
    {
        index = value.indexOf(":");
        if (index == -1) 
        {
            tempString = value;
            value = "";
        }
         else 
        {
            tempString = value.substring(0, index);
            value = value.substring(index + 1);
        }
        buffer[raz] = byte(hexStrToInt(tempString));
        raz++;
    }
    if (_checkMacAddres(buffer))
    {
        for (byte i = 0; i < 6; i++)
        {
            array[i] = buffer[i];
        }
    }
}
bool _compareMacAddreses(byte array1[], byte array2[])
{
    for (byte i = 0; i < 6; i++)
    {
        if (array1[i] != array2[i]) 
        {
            return 0;
        }
    }
    return 1;
}
bool _compareMacAddresWithString(byte array[], String value)
{
    byte buffer[6] = {255, 255, 255, 255, 255, 255};
    _parseMacAddressString(value,  buffer);
    return _compareMacAddreses(array, buffer);
}
bool _checkMacAddresString(String value)
{
    byte buffer[6] = {255, 255, 255, 255, 255, 255};
    _parseMacAddressString(value,  buffer);
    return _checkMacAddres(buffer);
}
String _macAddresToString(byte array[])
{
    String result = "";
    String  temp ="";
    for (byte i = 0; i < 6; i++)
    {
        temp=String(array[i],HEX);
        if (temp.length()  < 2) 
        {
            temp = String("0") + temp;
        }
        result = result + temp;
        if (i < 5) 
        {
               result = result + String(":");
        }
    }
    result.toUpperCase();
    return result;
}

8

Re: Индикация

в очередной раз прошу помощи в своем вопросе

9

Re: Индикация

проблему решил сам

10

Re: Индикация

Glad you figured it out.

"And voila, which is French for.......'and then I found out.'" - Ready Player One