system
March 9, 2012, 2:45am
1
when i run this code i get zero why ??
analogHigh = Serial.read( );
analogLow = Serial.read();
x = (analogLow + (analogHigh * 256));
X = ((x/1024)*1.2);
Serial.print("x=");
Serial.print( X, DEC);
Serial.print(" , ");
but when i delete X = ((x/1024)*1.2);
i get the value right but i want it to do the above equation ? any suggestion ?
If you have declared x and X (bad choice of names by the way) to be integers then (x/1024) will be zero whenever x is less than 1024.
Pete
system
March 9, 2012, 3:21am
3
thnx for answering .
i actually have it less then 1024
the answer should be = 0.5859
so i should declare my X to double or float ??
am confused with double and float which one should i use ??
thanks
John_S
March 9, 2012, 3:40am
4
Use float. In Arduino, double does the same thing though.
Just wanted to add, in most cases, it is best to multiply before dividing when working with integers.
if x = 20, (x/100)25 = 0 ...but (x 25)/100 = 5
One way ot fix it is to change 1024 to 1024.0 which will then force the division as floating point instead of integer.
And declare X to be float or double. Float gives about 6 digits of precision and double gives about 12 (IIRC).
You will also have to change Serial.print( X, DEC); to Serial.print( X, 4); so that X is printed as a floating point number with 4 digits after the decimal point (or however many you want).
Pete
system
March 9, 2012, 3:57am
7
thanks for that . well can i do like if i have x= 0.26 how can i make it = 0.3 which to a proximation value ??
x = x + roundingNr;
x = int(x*Factor)/Factor;
homework: find the two variables roundingNr and Factor ...
John_S
March 10, 2012, 3:34am
9
Float gives about 6 digits of precision and double gives about 12 (IIRC).
Although that may be the case in other programming languages, in Arduino float and double are essentially the same
http://arduino.cc/en/Reference/Double