hi , i'm trying to make a code that converts an analogue value into an angle in degree's,using given values for an angle with its corresponding voltage. i keep getting -1 one as my answer regardless of what i set my input voltage to be. please help.thanks in advance
Code:
int conversion_select(float voltage){
int select;
if(0.780<voltage<=0.800)
select =0;
else if(0.8<voltage<=0.845)
select =1;
else if(0.845<voltage<=1)
select =2;
else if(1<voltage<=1.69)
select =3;
else
select =4;
return select;
}
/*
* Convert_to_degree() - converts the analogue value into degree's
*
*/
float Convert_to_degree(int A_value){
float voltage[10]={0.78,0.8,0.845,0.920,1,1.13,1.26,1.42,1.55,1.69};
float Angle[10]={0,10,20,30,40,50,60,70,80,90};
float degree,gradient,input_voltage;
int select;
input_voltage = (float)(A_value - 6)/(float)(115) ;
select = conversion_select(input_voltage) ;
delay(20000);
printf("%f",input_voltage);
switch(select){
case 0:
{
gradient=(float)(Angle[1]-Angle[0])/(float)(voltage[1]-voltage[0]);
degree = gradient*(input_voltage-voltage[0])+Angle[0];
}
case 1:
{
gradient=(float)(Angle[2]-Angle[1])/(float)(voltage[2]-voltage[1]);
degree = gradient*(input_voltage-voltage[1])+Angle[1];
}
case 2:
{
gradient=(float)(Angle[4]-Angle[2])/(float)(voltage[4]-voltage[2]);
degree = gradient*(input_voltage-voltage[2])+Angle[2];
}
case 3:
{
gradient=(float)(Angle[9]-Angle[4])/(float)(voltage[9]-voltage[4]);
degree = gradient*(input_voltage-voltage[4])+Angle[4];
}
case 4:
degree = -1;
}
return degree ;
}