Arduino serial to Nextion text box

Hi

Does anyone know how I can get the float number from my accelerometer into a taxt box on the Nextion HMI Screen. I know its a long shot but thought I would try.

Thanks
Andy

Nextion_Acelerometer.ino (879 Bytes)

This is probably the how-to you want to read:

Shows how to use that display with an Arduino.

IndianaTux:
This is probably the how-to you want to read:

Nextion Display with Arduino - Getting Started | Random Nerd Tutorials

Shows how to use that display with an Arduino.

Thank you for the lead. However I have some knowledge and have almost completed my project but can't seem to get my head around this problem, just thought someone may have had a similar experience.

Thanks
Andy

Do you have the Nextion HMI Screen connected to the Arduino and working ?

IndianaTux:
Do you have the Nextion HMI Screen connected to the Arduino and working ?
[Hi
Yes all working good, and most of my project is completed just need to get code for this and then im done
Thanks
Andy]

To what I read it would be as simple as:

static char buffer[6];
dtostrf(accelerometer_value_to_display, 6, 2, buffer);
your_text_box_id.setText(buffer);

IndianaTux:
To what I read it would be as simple as:

static char buffer[6];

dtostrf(accelerometer_value_to_display, 6, 2, buffer);
your_text_box_id.setText(buffer);



[Hi
As the float is in the loop i am not sure how to code this, in your example it asks for the accelerometer value which is in fact a float, so would I place the float in that part of the code?
Thanks
Andy]

andyturner:

IndianaTux:
To what I read it would be as simple as:

static char buffer[6];

dtostrf(accelerometer_value_to_display, 6, 2, buffer);
your_text_box_id.setText(buffer);



[Hi
As the float is in the loop i am not sure how to code this, in your example it asks for the accelerometer value which is in fact a float, so would I place the float in that part of the code?
Thanks
Andy]
[

static char buffer[6];
dtostrf(((float)y - 329.5) / 68.5 * 9.8, 0), 6, 2, buffer);
t0.setText(buffer);

gives an error of 
c:\program files (x86)\arduino\hardware\tools\avr\avr\include\stdlib.h:666:14: note: declared here

extern char *dtostrf(double __val, signed char __width,

^

exit status 1
too few arguments to function 'char* dtostrf(double, signed char, unsigned char, char*)'

Thanks]

How about:

#include <ADXL335.h>
#include <Nextion.h>
#include <Arduino.h>

#define SerialNxtn.Serial2;  // <== Change Serial1 to what you are using

NexText t0 = NexText(0, 1, "t0");

char buffer[100] = {0};

int val;
int xpin = A0;                  // x-axis of the accelerometer
int ypin = A1;                  // y-axis
int zpin = A2;                  // z-axis (only on 3-axis models)

void setup()
{
  Serial.begin(9600);
  dbSerialPrintln("setup done");
}

void loop()
{
  int x = analogRead(xpin);  //read from xpin
  int y = analogRead(ypin);  //read from ypin
  int z = analogRead(zpin);  //read from zpin
  static char buffer[6];

  float zero_G = 512.0; //ADC is 0~1023  the zero g output equal to Vs/2
  float scale = 102.3;  //ADXL335330 Sensitivity is 330mv/g
  float accel_y = ((float)y - 329.5) / 68.5 * 9.8;

  Serial.print(accel_y);
  Serial.println("%");
  
  dtostrf(accel_y, 6, 2, buffer);
  t0.setText(buffer);

  delay(2000);
}

Should compile just fine.

Did it work ?

Hi

Sorry for the late reply, had a little issue with the serial connections on the Nextion. All sorted now and YES the code works a treat, does exactly what I wanted. Thank you very much for your help.

Andy

Hi IndianaTux

While you are on a roll, I don't suppose you would know how to control a single servo using the outputted result from the text box populated with the accelerometer reading? I currently have the following but not working.

#include <Servo.h>
#include <Nextion.h>

NexButton b0 = NexButton(0, 1, "b0");

NexText t0 = NexText(0, 1, "t0");

char buffer[100] = {0};

int xpin = A0; // x-axis of the accelerometer
int ypin = A1; // y-axis
int zpin = A2; // z-axis (only on 3-axis models)

NexTouch *nex_listen_list[] =
{
&b0,
NULL // String terminated
};

Servo myservo; // create servo object to control a servo

int pos = 0; // variable to store the servo position

void b0PushCallback(void *ptr) // Press event for button b1
{
pos = 90;
myservo.write(pos);
delay(100);
} // End of press event

void setup() {
myservo.attach(9); // attaches the servo on pin 9 to the servo object
dbSerialPrintln("setup done");
nexInit();
Serial.begin(9600);// Start serial comunication at baud=9600
Serial.write(0xff); // We always have to send this three lines after each command sent to nextion.
Serial.write(0xff);
Serial.write(0xff);

nexInit();

b0.attachPush(b0PushCallback);

}

void loop() {
nexLoop(nex_listen_list);

int x = analogRead(xpin); //read from xpin
int y = analogRead(ypin); //read from ypin
int z = analogRead(zpin); //read from zpin

float zero_G = 512.0; //ADC is 0~1023 the zero g output equal to Vs/2
float scale = 102.4; //ADXL335330 Sensitivity is 330mv/g
float accel_y = ((y - 329.5)/68.5*9.8);

Serial.print(accel_y);
Serial.println("%");

dtostrf(accel_y, 2, 1, buffer);
t0.setText(buffer);

delay(2000);

pos = t0.setText(buffer);

Thanks

Andy