Arduino и Nextion дисплей с десятичными числами

У меня есть Arduino MEGA с одним из этих дисплеев Nextion. Я создал хороший дисплей, и моя цель - показать аналоговые входы. Однако я заметил, что этот дисплей не может отображать десятичные дроби (используя число "виджет"). Так что я использую виджет "текст", чтобы сделать это, к сожалению, это не работает, кто-нибудь знает почему?

#include "Nextion.h"
#define RES 1023
#define AREF 5
int voltage_pin=A0;
int raw_voltage;
double voltage;
String voltage2;

void setup() {
  Serial.begin(9600);
}

void loop() {
  raw_voltage=analogRead(voltage_pin);
  voltage=raw_voltage*AREF/RES;
  Serial.print("n3.val=");
  Serial.print(raw_voltage);
  Serial.write(0xff);
  Serial.write(0xff);
  Serial.write(0xff);
  String voltage2=String(voltage);
  Serial.print("t10.txt=");
  Serial.print(voltage2);
  Serial.write(0xff);
  Serial.write(0xff);
  Serial.write(0xff);
  delay(100);
}

Заранее спасибо!:)

2 ответа

Если вы используете текстовый объект, команда должна быть Serial.print("n3.txt=\"yourtext\"");

Это может помочь:

value1 = analogRead(A1);

  vout1 = (value1 * AREF) / 1023.0; 

  vin1 = vout1 / (R2 / (R1 + R2));

  memset(buffer, 0, sizeof(buffer));

  dtostrf(vin1,5, 2, buffer);

  t4.setText(buffer);

  vin1 = map(vin1, 8, 15, 0, 100);

  send_ProgressBar("j2", vin1);

Вы можете использовать виджет Xfloat и отправить значение так же, как и число, но вам нужно изменить параметры "vvs0" и "vvs1" в редакторе nextion, чтобы виджет изменил значение. Например, если вы хотите показать значение 2,53, умножьте его на 100, а затем установите параметр "vvs0" на 1 и "vvs1" на 2.

Другие вопросы по тегам