So I'm facing this problem a lot in my code where the program is not getting into the if else loop properly and just returning the same answer again and again.
void loop() {
double X_value = ((double)(analogRead(X_pin)-487))/540.00;
double Y_value = ((double)(529-analogRead(Y_pin)))/540.00;
double theta_rad = atan((double)Y_value/(double)X_value);
double theta_deg = ((double) theta_rad)*180.00/3.1416;
double temp = (double)abs(tan((double)theta_rad));
if (temp == 0.00) {
temp2 = 0.00;
} else {
double temp2 = min(temp,1.00/temp);
}
Serial.print("Theta = ");
Serial.print(theta_deg);
Serial.print("\n");
Serial.print("temp 2 = ");
Serial.print(temp2);
Serial.print("\n");
delay(1000);
}
The answer keeps on coming 0 even when temp is non zero.
If anyone knows the reason please help...

elsebranch has scope only within theelsebranch and is not available outside it.atan2()instead ofatan().temp2declared? andX-pinandY_pin3.1416for PI? 1) in arduino doubles are only 32 bit floats not true 64 bit doubles so the constant casting to double is unnecessary. 2) a 32 bit float is accurate to more than 5 figures so that Pi value is the limiting factor in your accuracy.