Show the correct Value

Hi. I have the following Problem. I want to show my Sensor Value from 0.0-100.0mm. But the Display shows just 0.-100. On the Serial.print its correct. I guess its because of toCharArray... What could i do instead? Hope you can help :slight_smile:
Here is my program:

float analogPin = A6;
char printout[4];
byte led = 5;//byte: 8 bit (0-255)
#include <TFT.h>
#include <SPI.h>
#define CS 9 //TX
#define DC 0 //RX
#define RESET 1


TFT screen = TFT(CS, DC, RESET);
void setup() {
  // put your setup code here, to run once:


  Serial.begin(9600);


  screen.begin();
  screen.background(0, 0, 0); //Schwarzer Hintergrund

  screen.setTextSize(2);
  screen.stroke(255, 255, 255); //Weiß
  screen.text("mm", 0, 30);
  screen.setTextSize(3);


  screen.stroke(255, 0, 0); //Rot
  screen.line(0, 45, screen.width(), 45); //Rote Linie
}

void loop() {
  // put your main code here, to run repeatedly:

[b]  analogPin = (100.0 / 1023 * analogRead(A6)); //Teilung des Analogwertes auf 0-100[/b]
  boolean overwrite;
  Serial.println(analogPin);
  Serial.println(overwrite);

[b]

  String analogPin = String (100.0 / 1023 * analogRead(A6));
  analogPin.toCharArray (printout, 4);
 [/b]
  screen.stroke(255, 255, 255); //Weiß
  screen.text(printout, 0, 5); //Analoger Wert an Display; Position x0y0




  if (analogRead(A6) >= 0 && (analogRead(A6) <= 11))
  {
    overwrite = true;
  }
  else if (analogRead(A6) >= 20 && (analogRead(A6) <= 31))
  {
    overwrite = true;
  }
  else if (analogRead(A6) >= 40 && (analogRead(A6) <= 51))
  {
    overwrite = true;
  }
  else if (analogRead(A6) >= 60 && (analogRead(A6) <= 71))
  {
    overwrite = true;
  }
  else if (analogRead(A6) >= 80 && (analogRead(A6) <= 91))
  {
    overwrite = true;
  }
  else if (analogRead(A6) >= 100 && (analogRead(A6) <= 111))
  {
    overwrite = true;
  }
  else if (analogRead(A6) >= 120 && (analogRead(A6) <= 131))
  {
    overwrite = true;
  }
  else if (analogRead(A6) >= 140 && (analogRead(A6) <= 151))
  {
    overwrite = true;
  }
  else if (analogRead(A6) >= 160 && (analogRead(A6) <= 171))
  {
    overwrite = true;
  }
  else if (analogRead(A6) >= 180 && (analogRead(A6) <= 191))
  {
    overwrite = true;
  }
  else if (analogRead(A6) >= 200 && (analogRead(A6) <= 211))
  {
    overwrite = true;
  }
  else if (analogRead(A6) >= 220 && (analogRead(A6) <= 231))
  {
    overwrite = true;
  }
  else if (analogRead(A6) >= 240 && (analogRead(A6) <= 251))
  {
    overwrite = true;
  }
  else if (analogRead(A6) >= 260 && (analogRead(A6) <= 271))
  {
    overwrite = true;
  }
  else if (analogRead(A6) >= 280 && (analogRead(A6) <= 291))
  {
    overwrite = true;
  }
  else if (analogRead(A6) >= 300 && (analogRead(A6) <= 311))
  {
    overwrite = true;
  }
  else if (analogRead(A6) >= 320 && (analogRead(A6) <= 331))
  {
    overwrite = true;
  }
  else if (analogRead(A6) >= 340 && (analogRead(A6) <= 351))
  {
    overwrite = true;
  }
  else if (analogRead(A6) >= 360 && (analogRead(A6) <= 371))
  {
    overwrite = true;
  }
  else if (analogRead(A6) >= 380 && (analogRead(A6) <= 391))
  {
    overwrite = true;
  }
  else if (analogRead(A6) >= 400 && (analogRead(A6) <= 411))
  {
    overwrite = true;
  }
  else if (analogRead(A6) >= 420 && (analogRead(A6) <= 431))
  {
    overwrite = true;
  }
  else if (analogRead(A6) >= 440 && (analogRead(A6) <= 451))
  {
    overwrite = true;
  }
  else if (analogRead(A6) >= 460 && (analogRead(A6) <= 471))
  {
    overwrite = true;
  }
  else if (analogRead(A6) >= 480 && (analogRead(A6) <= 491))
  {
    overwrite = true;
  }
  else if (analogRead(A6) >= 500 && (analogRead(A6) <= 511))
  {
    overwrite = true;
  }
  else if (analogRead(A6) >= 520 && (analogRead(A6) <= 531))
  {
    overwrite = true;
  }
  else if (analogRead(A6) >= 540 && (analogRead(A6) <= 551))
  {
    overwrite = true;
  }
  else if (analogRead(A6) >= 560 && (analogRead(A6) <= 571))
  {
    overwrite = true;
  }
  else if (analogRead(A6) >= 580 && (analogRead(A6) <= 591))
  {
    overwrite = true;
  }
  else if (analogRead(A6) >= 600 && (analogRead(A6) <= 611))
  {
    overwrite = true;
  }
  else if (analogRead(A6) >= 620 && (analogRead(A6) <= 631))
  {
    overwrite = true;
  }
  else if (analogRead(A6) >= 640 && (analogRead(A6) <= 651))
  {
    overwrite = true;
  }
  else if (analogRead(A6) >= 660 && (analogRead(A6) <= 671))
  {
    overwrite = true;
  }
  else if (analogRead(A6) >= 680 && (analogRead(A6) <= 691))
  {
    overwrite = true;
  }
  else if (analogRead(A6) >= 700 && (analogRead(A6) <= 711))
  {
    overwrite = true;
  }
  else if (analogRead(A6) >= 720 && (analogRead(A6) <= 731))
  {
    overwrite = true;
  }
  else if (analogRead(A6) >= 740 && (analogRead(A6) <= 751))
  {
    overwrite = true;
  }
  else if (analogRead(A6) >= 760 && (analogRead(A6) <= 771))
  {
    overwrite = true;
  }
  else if (analogRead(A6) >= 780 && (analogRead(A6) <= 791))
  {
    overwrite = true;
  }
  else if (analogRead(A6) >= 800 && (analogRead(A6) <= 811))
  {
    overwrite = true;
  }
  else if (analogRead(A6) >= 820 && (analogRead(A6) <= 831))
  {
    overwrite = true;
  }
  else if (analogRead(A6) >= 840 && (analogRead(A6) <= 851))
  {
    overwrite = true;
  }
  else if (analogRead(A6) >= 860 && (analogRead(A6) <= 871))
  {
    overwrite = true;
  }
  else if (analogRead(A6) >= 880 && (analogRead(A6) <= 891))
  {
    overwrite = true ;
  }
  else if (analogRead(A6) >= 900 && (analogRead(A6) <= 911))
  {
    overwrite = true;
  }
  else if (analogRead(A6) >= 920 && (analogRead(A6) <= 931))
  {
    overwrite = true;
  }
  else if (analogRead(A6) >= 940 && (analogRead(A6) <= 951))
  {
    overwrite = true;
  }
  else if (analogRead(A6) >= 960 && (analogRead(A6) <= 971))
  {
    overwrite = true;
  }
  else if (analogRead(A6) >= 980 && (analogRead(A6) <= 991))
  {
    overwrite = true;
  }
  else if (analogRead(A6) >= 1000 && (analogRead(A6) <= 1011))
  {
    overwrite = true;
  }
  else if (analogRead(A6) >= 1020)
  {
    overwrite = true;
  }

  if (overwrite = true)
  { screen.stroke(0, 0, 0);
    screen.text(printout, 0, 5);
  }
  else
  { (screen.stroke(255, 255, 255));
    screen.text(printout, 0, 5);
  }

}

Hi. I have the following Problem. I want to show my Sensor Value from 0.0-100.0mm. But the Display shows just 0.-100. (for example not 22.9, just 22) On the Serial.print its correct. I guess its because of toCharArray... What could i do instead? Hope you can help :slight_smile:
Here is my program:

float analogPin = A6;
char printout[4];
byte led = 5;//byte: 8 bit (0-255)
#include <TFT.h>
#include <SPI.h>
#define CS 9 //TX
#define DC 0 //RX
#define RESET 1


TFT screen = TFT(CS, DC, RESET);
void setup() {
  // put your setup code here, to run once:


  Serial.begin(9600);


  screen.begin();
  screen.background(0, 0, 0); //Schwarzer Hintergrund

  screen.setTextSize(2);
  screen.stroke(255, 255, 255); //Weiß
  screen.text("mm", 0, 30);
  screen.setTextSize(3);


  screen.stroke(255, 0, 0); //Rot
  screen.line(0, 45, screen.width(), 45); //Rote Linie
}

void loop() {
  // put your main code here, to run repeatedly:

  analogPin = (100.0 / 1023 * analogRead(A6)); //Teilung des Analogwertes auf 0-100
  boolean overwrite;
  Serial.println(analogPin);
  Serial.println(overwrite);


  String analogPin = String(100.0 / 1023 * analogRead(A6));
  analogPin.toCharArray(printout, 4);


  screen.stroke(255, 255, 255); //Weiß
  screen.text(printout, 0, 5); //Analoger Wert an Display; Position x0y0




  if (analogRead(A6) >= 0 && (analogRead(A6) <= 11))
  {
    overwrite = true;
  }
  else if (analogRead(A6) >= 20 && (analogRead(A6) <= 31))
  {
    overwrite = true;
  }
  else if (analogRead(A6) >= 40 && (analogRead(A6) <= 51))
  {
    overwrite = true;
  }
  else if (analogRead(A6) >= 60 && (analogRead(A6) <= 71))
  {
    overwrite = true;
  }
  else if (analogRead(A6) >= 80 && (analogRead(A6) <= 91))
  {
    overwrite = true;
  }
  else if (analogRead(A6) >= 100 && (analogRead(A6) <= 111))
  {
    overwrite = true;
  }
  else if (analogRead(A6) >= 120 && (analogRead(A6) <= 131))
  {
    overwrite = true;
  }
  else if (analogRead(A6) >= 140 && (analogRead(A6) <= 151))
  {
    overwrite = true;
  }
  else if (analogRead(A6) >= 160 && (analogRead(A6) <= 171))
  {
    overwrite = true;
  }
  else if (analogRead(A6) >= 180 && (analogRead(A6) <= 191))
  {
    overwrite = true;
  }
  else if (analogRead(A6) >= 200 && (analogRead(A6) <= 211))
  {
    overwrite = true;
  }
  else if (analogRead(A6) >= 220 && (analogRead(A6) <= 231))
  {
    overwrite = true;
  }
  else if (analogRead(A6) >= 240 && (analogRead(A6) <= 251))
  {
    overwrite = true;
  }
  else if (analogRead(A6) >= 260 && (analogRead(A6) <= 271))
  {
    overwrite = true;
  }
  else if (analogRead(A6) >= 280 && (analogRead(A6) <= 291))
  {
    overwrite = true;
  }
  else if (analogRead(A6) >= 300 && (analogRead(A6) <= 311))
  {
    overwrite = true;
  }
  else if (analogRead(A6) >= 320 && (analogRead(A6) <= 331))
  {
    overwrite = true;
  }
  else if (analogRead(A6) >= 340 && (analogRead(A6) <= 351))
  {
    overwrite = true;
  }
  else if (analogRead(A6) >= 360 && (analogRead(A6) <= 371))
  {
    overwrite = true;
  }
  else if (analogRead(A6) >= 380 && (analogRead(A6) <= 391))
  {
    overwrite = true;
  }
  else if (analogRead(A6) >= 400 && (analogRead(A6) <= 411))
  {
    overwrite = true;
  }
  else if (analogRead(A6) >= 420 && (analogRead(A6) <= 431))
  {
    overwrite = true;
  }
  else if (analogRead(A6) >= 440 && (analogRead(A6) <= 451))
  {
    overwrite = true;
  }
  else if (analogRead(A6) >= 460 && (analogRead(A6) <= 471))
  {
    overwrite = true;
  }
  else if (analogRead(A6) >= 480 && (analogRead(A6) <= 491))
  {
    overwrite = true;
  }
  else if (analogRead(A6) >= 500 && (analogRead(A6) <= 511))
  {
    overwrite = true;
  }
  else if (analogRead(A6) >= 520 && (analogRead(A6) <= 531))
  {
    overwrite = true;
  }
  else if (analogRead(A6) >= 540 && (analogRead(A6) <= 551))
  {
    overwrite = true;
  }
  else if (analogRead(A6) >= 560 && (analogRead(A6) <= 571))
  {
    overwrite = true;
  }
  else if (analogRead(A6) >= 580 && (analogRead(A6) <= 591))
  {
    overwrite = true;
  }
  else if (analogRead(A6) >= 600 && (analogRead(A6) <= 611))
  {
    overwrite = true;
  }
  else if (analogRead(A6) >= 620 && (analogRead(A6) <= 631))
  {
    overwrite = true;
  }
  else if (analogRead(A6) >= 640 && (analogRead(A6) <= 651))
  {
    overwrite = true;
  }
  else if (analogRead(A6) >= 660 && (analogRead(A6) <= 671))
  {
    overwrite = true;
  }
  else if (analogRead(A6) >= 680 && (analogRead(A6) <= 691))
  {
    overwrite = true;
  }
  else if (analogRead(A6) >= 700 && (analogRead(A6) <= 711))
  {
    overwrite = true;
  }
  else if (analogRead(A6) >= 720 && (analogRead(A6) <= 731))
  {
    overwrite = true;
  }
  else if (analogRead(A6) >= 740 && (analogRead(A6) <= 751))
  {
    overwrite = true;
  }
  else if (analogRead(A6) >= 760 && (analogRead(A6) <= 771))
  {
    overwrite = true;
  }
  else if (analogRead(A6) >= 780 && (analogRead(A6) <= 791))
  {
    overwrite = true;
  }
  else if (analogRead(A6) >= 800 && (analogRead(A6) <= 811))
  {
    overwrite = true;
  }
  else if (analogRead(A6) >= 820 && (analogRead(A6) <= 831))
  {
    overwrite = true;
  }
  else if (analogRead(A6) >= 840 && (analogRead(A6) <= 851))
  {
    overwrite = true;
  }
  else if (analogRead(A6) >= 860 && (analogRead(A6) <= 871))
  {
    overwrite = true;
  }
  else if (analogRead(A6) >= 880 && (analogRead(A6) <= 891))
  {
    overwrite = true ;
  }
  else if (analogRead(A6) >= 900 && (analogRead(A6) <= 911))
  {
    overwrite = true;
  }
  else if (analogRead(A6) >= 920 && (analogRead(A6) <= 931))
  {
    overwrite = true;
  }
  else if (analogRead(A6) >= 940 && (analogRead(A6) <= 951))
  {
    overwrite = true;
  }
  else if (analogRead(A6) >= 960 && (analogRead(A6) <= 971))
  {
    overwrite = true;
  }
  else if (analogRead(A6) >= 980 && (analogRead(A6) <= 991))
  {
    overwrite = true;
  }
  else if (analogRead(A6) >= 1000 && (analogRead(A6) <= 1011))
  {
    overwrite = true;
  }
  else if (analogRead(A6) >= 1020)
  {
    overwrite = true;
  }

  if (overwrite = true)
  { screen.stroke(0, 0, 0);
    screen.text(printout, 0, 5);
  }
  else
  { (screen.stroke(255, 255, 255));
    screen.text(printout, 0, 5);
  }

}

The first thing to do is to read the value on A6 once into a variable then use that in the comparisons if you must do them at all. What is the purpose of them ?

Next use strings instead of Strings.

only just started on this forum but i was looking at timekeeping this morning. I was trying to get millis() to show time in seconds, i.e. divide millis() by 1000 and it say 0.003ms. what i had to write was;

Serial.println(time/1000.0,3);

time is just millis() named as time, i've then divided by 1000 to get to ms, then the .0 in the 1000.0 makes arduino recognise it as a floating point variable, and the ,3 is to display to 3 decimal places. At a guess without seeing your code i think you would need to write something like

Serial.println(var/1.0,1)

that worked for me in this very basic code below;

unsigned long time;

void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
}

void loop() {
// put your main code here, to run repeatedly:
Serial.print("Time: ");
time=100;
Serial.println(time/1.0,1);
}

hopefully this helps in some way

@badz, do not cross-post. Threads merged.

Your printout variable is only 4 characters in size. So it can only hold 3 real characters and the terminating nul character.

To hold 100.0, you need 5 plus 1 character. Change the size of printout to 6 and adjust the toCharArray accordingly. That might solve the problem.

(deleted)

badz:
Here is my program:

  if (analogRead(A6) >= 0 && (analogRead(A6) <= 11))

{
   overwrite = true;
 }
...
// A LOT of lines
...
 else if (analogRead(A6) >= 1000 && (analogRead(A6) <= 1011))
 {
   overwrite = true;
 }
 else if (analogRead(A6) >= 1020)
 {
   overwrite = true;
 }

I think you can replace all of those lines with:

  if ((analogRead(A6) % 20) < 11) 
      overwrite = true;

@sterretje yes you were right. I had to change it to at least 5... Thanks :smiley:

@johnwasser i will try your suggestion thanks. i had a problem with flickering and this at least could made it a bit better. i will tell you about my results :smiley:

@johnwasser it works great thanks. but could someone help me to understand what these lines actually do? just overwrite every 20% of analogReads change?
Do you guys know something good the reduce the flickering? Its not thaaat bad, but it could be better :smiley:

badz:
just overwrite every 20% of analogReads change?

% is the C++ modulo operator.