Buenas,
tengo el siguiente codigo en void loop:
float altutud_media2 = meanFilter.AddValue(A);
int dif=(altutud_media2-altutud_media)*100;
//Serial.println(dif);
int act=0;
//Serial.print(media);Serial.print("\t");Serial.print(desviacion);Serial.print("\t");Serial.print(mediana);Serial.print("\t");Serial.println(suma);
if (desviacion < 16.10)
{
act = 1;
}
else
{
if (desviacion <158.898)
{
if (mediana<1005.55)
{
if (media>=968.31)
{
act = 2;
}
else
{
act = 3;
}
}
else
{
act = 4;
}
}
else
{
if (suma<0.66)
{
act = 4;
}
else
{
if (media<972.88)
{
act = 3;
}
else
{
if (desviacion<197.63)
{
act = 4;
}
else
{
act = 5;
}
}
}
}
}
if(((act==4)||(act==5)||(act==3))&&(dif>20)){
act=5;
}
if(((act==4)||(act==5)||(act==3))&&(dif<-20)){
act=4;
}
if(((act==4)||(act==5)||(act==3))&&((dif<20)&&(dif>-20))){
act==3;
}
if((bos==act) || (bos==0)){
bos=act; }
else if(bos==1 && act==2){
bos=2; }
else if(bos==1 && act!=2){
bos=2;}
else if(bos==2){
bos=act;}
else if(bos==3 && act==1){
bos=2;}
else if(bos==3 && act!=1){
bos=act;}
else if(bos==4 && (act==2 || act==3)){
bos=act;}
else if(bos==4 && (act==1 || act==5)){
bos=2;}
else if(bos==5 && (act==2 || act==3)){
bos=act;
}
else if(bos==5 && (act==1 || act==5)){
bos=2;
}
BT.print(bos);BT.print(" ");BT.println(dif);
//Serial.print(bos);Serial.print(" ");Serial.println(difalt);
}
El problema esta en que esta parte no me funciona y no se el por qué:
if(((act==4)||(act==5)||(act==3))&&(dif>20)){
act=5;
}
if(((act==4)||(act==5)||(act==3))&&(dif<-20)){
act=4;
}
if(((act==4)||(act==5)||(act==3))&&((dif<20)&&(dif>-20))){
act==3;
}
La cuestión es que no cumple con la condición de dif. Es decir, si act es 4, 5 o 3, después no cumple que dif sea mayor o menor. He probado también a poner el “<” y “>” como “>>” y “<<”
¿Alguien me podría orientar?