Go Down

Topic: Printing Serial values on a 16x2 LCD. (Read 123 times) previous topic - next topic

shaikhhammadali

hi guys, i have a code that calculates inclination angle of any surface using MPU6050 sensor.
it prints the angle on serial monitor, but i want it on LCD,
somebody please edit my code and add lines that prints angle on LCD.
thanks
i have attached the code below

Newmanx

#1
Mar 22, 2019, 09:08 pm Last Edit: Mar 22, 2019, 09:09 pm by Newmanx
I use
#include "LiquidCrystal_PCF8574.h"
#include "PCF8574.h"

 then

LiquidCrystal_PCF8574   lcd(0x27);   
(check if the address is correct)

and in setup() i do
   lcd.begin(16, 2);
   lcd.setBacklight(128);
   lcd.clear();


Then, when I want to display something, I do
lcd.setCursor(1, 1); // col, row
lcd.print("Hello world");

6v6gt

Have you chosen a specific 16x2 LCD ? Recommended is one with an I2C backpack. Find a "hello world" sketch and get that working. After that, integrate it with your own sketch.

shaikhhammadali

Have you chosen a specific 16x2 LCD ? Recommended is one with an I2C backpack. Find a "hello world" sketch and get that working. After that, integrate it with your own sketch.
no i using the one without I2C.

shaikhhammadali

I use
#include "LiquidCrystal_PCF8574.h"
#include "PCF8574.h"

 then

LiquidCrystal_PCF8574   lcd(0x27);   
(check if the address is correct)

and in setup() i do
   lcd.begin(16, 2);
   lcd.setBacklight(128);
   lcd.clear();


Then, when I want to display something, I do
lcd.setCursor(1, 1); // col, row
lcd.print("Hello world");

i tried this but it didnt work.
the lcd is displaying random characters.

Steveiboy

#5
Mar 22, 2019, 09:49 pm Last Edit: Mar 22, 2019, 09:49 pm by Steveiboy
If Your not using and I2C LCD and using the standard LCD connections then you could try this,
It compiles and not tested as I don't have a normal LCD set up only I2C

But once you have set up your LCD you just reaplce Serial.print with LCD.print once you have set the cursor.

You could have a look here and get your LCD up and running with the link below

https://www.arduino.cc/en/Tutorial/HelloWorld?from=Tutorial.LiquidCrystal

Here is the code you could try has you've not said how your LCD is connected

Code: [Select]
/*
  LiquidCrystal Library

  The circuit:
   LCD RS pin to digital pin 12
   LCD Enable pin to digital pin 11
   LCD D4 pin to digital pin 5
   LCD D5 pin to digital pin 4
   LCD D6 pin to digital pin 3
   LCD D7 pin to digital pin 2
   LCD R/W pin to ground
   LCD VSS pin to ground
   LCD VCC pin to 5V
   10K resistor:
   ends to +5V and ground
   wiper to LCD VO pin (pin 3)



*/

// include the library code:
#include <LiquidCrystal.h>
#include<Wire.h>
const int MPU_addr = 0x68;
int16_t axis_X, axis_Y, axis_Z;
int minVal = 265;
int maxVal = 402;
double x;
double y;
double z;
// initialize the library by associating any needed LCD interface pin
// with the arduino pin number it is connected to
const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
void setup() {
  Wire.begin();
  lcd.begin(16, 2);
  Wire.beginTransmission(MPU_addr);
  Wire.write(0x6B);
  Wire.write(0);
  Wire.endTransmission(true);
  Serial.begin(9600);
}
void loop() {
  Wire.beginTransmission(MPU_addr);
  Wire.write(0x3B);
  Wire.endTransmission(false);
  Wire.requestFrom(MPU_addr, 14, true);
  axis_X = Wire.read() << 8 | Wire.read();
  axis_Y = Wire.read() << 8 | Wire.read();
  axis_Z = Wire.read() << 8 | Wire.read();
  int xAng = map(axis_X, minVal, maxVal, -90, 90);
  int yAng = map(axis_Y, minVal, maxVal, -90, 90);
  int zAng = map(axis_Z, minVal, maxVal, -90, 90);
  x = RAD_TO_DEG * (atan2(-yAng, -zAng) + PI);
  y = RAD_TO_DEG * (atan2(-xAng, -zAng) + PI);
  z = RAD_TO_DEG * (atan2(-yAng, -xAng) + PI);
  lcd.setCursor(0, 1);
  lcd.print("Angle of X axis = ");
  lcd.print(x,2);
  lcd.setCursor(0, 2);
  lcd.print((char)176);

  Serial.print("Angle of inclination in X axis = ");
  Serial.print(x);
  Serial.println((char)176);
  /*  Serial.print("Angle of inclination in Y axis= ");
    Serial.print(y);
    Serial.println((char)176);
    Serial.print("Angle of inclination in Z axis= ");
    Serial.print(z);
    Serial.println((char)176);*/
  Serial.println("-------------------------------------------");
  delay(1000);
}

shaikhhammadali

If Your not using and I2C LCD and using the standard LCD connections then you could try this,
It compiles and not tested as I don't have a normal LCD set up only I2C

But once you have set up your LCD you just reaplce Serial.print with LCD.print once you have set the cursor.

You could have a look here and get your LCD up and running with the link below

https://www.arduino.cc/en/Tutorial/HelloWorld?from=Tutorial.LiquidCrystal

Here is the code you could try has you've not said how your LCD is connected

Code: [Select]
/*
  LiquidCrystal Library

  The circuit:
   LCD RS pin to digital pin 12
   LCD Enable pin to digital pin 11
   LCD D4 pin to digital pin 5
   LCD D5 pin to digital pin 4
   LCD D6 pin to digital pin 3
   LCD D7 pin to digital pin 2
   LCD R/W pin to ground
   LCD VSS pin to ground
   LCD VCC pin to 5V
   10K resistor:
   ends to +5V and ground
   wiper to LCD VO pin (pin 3)



*/

// include the library code:
#include <LiquidCrystal.h>
#include<Wire.h>
const int MPU_addr = 0x68;
int16_t axis_X, axis_Y, axis_Z;
int minVal = 265;
int maxVal = 402;
double x;
double y;
double z;
// initialize the library by associating any needed LCD interface pin
// with the arduino pin number it is connected to
const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
void setup() {
  Wire.begin();
  lcd.begin(16, 2);
  Wire.beginTransmission(MPU_addr);
  Wire.write(0x6B);
  Wire.write(0);
  Wire.endTransmission(true);
  Serial.begin(9600);
}
void loop() {
  Wire.beginTransmission(MPU_addr);
  Wire.write(0x3B);
  Wire.endTransmission(false);
  Wire.requestFrom(MPU_addr, 14, true);
  axis_X = Wire.read() << 8 | Wire.read();
  axis_Y = Wire.read() << 8 | Wire.read();
  axis_Z = Wire.read() << 8 | Wire.read();
  int xAng = map(axis_X, minVal, maxVal, -90, 90);
  int yAng = map(axis_Y, minVal, maxVal, -90, 90);
  int zAng = map(axis_Z, minVal, maxVal, -90, 90);
  x = RAD_TO_DEG * (atan2(-yAng, -zAng) + PI);
  y = RAD_TO_DEG * (atan2(-xAng, -zAng) + PI);
  z = RAD_TO_DEG * (atan2(-yAng, -xAng) + PI);
  lcd.setCursor(0, 1);
  lcd.print("Angle of X axis = ");
  lcd.print(x,2);
  lcd.setCursor(0, 2);
  lcd.print((char)176);

  Serial.print("Angle of inclination in X axis = ");
  Serial.print(x);
  Serial.println((char)176);
  /*  Serial.print("Angle of inclination in Y axis= ");
    Serial.print(y);
    Serial.println((char)176);
    Serial.print("Angle of inclination in Z axis= ");
    Serial.print(z);
    Serial.println((char)176);*/
  Serial.println("-------------------------------------------");
  delay(1000);
}


thanks a ton mate!
it worked

Go Up