dimanche 28 janvier 2018

After checking main If condition unable to reach if and while

I am new to C++. If my details are not clear, kindly modify and update. Hardware reading from scope Thread stored in beforeRightValue. Before that is coming inside void Motion::_Grid() car will stop 2 seconds. Sometimes values will not match so that time I want to calculate error value then I want to make repositioning.

  float degree_check; // calculating error value will store here.

I have created 4 conditions. All condition will check first stored value from hardware (firstdataValue) and current value(beforeRightValue). If any difference happened that will calculate the error value (degree_check), then the car need to move same first degree depends upon the error degree.

That is working fine. That is coming inside if condition. For example condition 1 if, condition 4 if printing. If that is coming inside of main if condition, this condition also true only, but that is not coming inside of this if condition, not inside of the while. I was unable to understand the mistake.

void Motion::_Grid()
{
  float beforeRightValue = ScopeThread::data; 

  if((int)beforeRightValue != (int)firstdataValue) 
    {
      float degree_check; // calculating error value will store here.

        if(firstdataValue > 0 && beforeRightValue > 0) 
        {
          degree_check = (firstdataValue)-(beforeRightValue); 

          if(degree_check > 0)
            {
              cout<<"condition 1 if : "<<degree_check<<endl;

              if(!beforeRightValue == firstYawValue) 
                {
                    softPwmWrite(Motr2, 0);
                    softPwmWrite(Motr1, 0);
                    delay(200);

                    softPwmWrite(Motr1,5);
                    softPwmWrite(Motr2,0);

                   while(true)
                    {
                cout<<"2nd while : "<<firstdataValue<<endl;

                      if(int(ScopeThread::data) == firstdataValue)
                        {
                            softPwmWrite(Motr2, 0);
                            softPwmWrite(Motr1, 0);
                            delay(2000);
                            break;
                        }
                      break;
                    }
                }
            }

          else if(degree_check < 0)
            {
               cout<<"condition 1 else : "<<degree_check<<endl;

                if(int(ScopeThread::data) != (int)firstdataValue)
                {
                    softPwmWrite(Motr2, 0);
                    softPwmWrite(Motr1, 0);
                    delay(200);

                    softPwmWrite(Motr1,0);
                    softPwmWrite(Motr2,5);

                   while(true)
                    {
                      if(int(ScopeThread::data) == firstdataValue)
                        {
                            cout<<"2nd while : "<<firstdataValue<<endl;

                            softPwmWrite(Motr2, 0);
                            softPwmWrite(Motr1, 0);
                            delay(2000);
                            break;
                        }
                      break;
                    }
                }
            }
        }

        else if(firstdataValue < 0 && beforeRightValue < 0)
        {
          degree_check = (firstdataValue) - (beforeRightValue);

          if(degree_check < 0)
            {
              cout<<"condition 2 if : "<<degree_check<<endl;

                if(int(ScopeThread::data) != (int)firstdataValue)
                {
                    softPwmWrite(Motr2, 0);
                    softPwmWrite(Motr1, 0);
                    delay(200);

                    softPwmWrite(Motr1,5);
                    softPwmWrite(Motr2,0);

                   while(true)
                    {
                      if(int(ScopeThread::data) == firstdataValue)
                        {
                            cout<<"3rd while : "<<firstdataValue<<endl;

                            softPwmWrite(Motr2, 0);
                            softPwmWrite(Motr1, 0);
                            delay(2000);
                            break;
                        }
                      break;
                    }
                }
            }

          else if(degree_check > 0)
            {
                cout<<"condition 2 else : "<<degree_check<<endl;

                if(int(ScopeThread::data) != (int)firstdataValue)
                {
                    softPwmWrite(Motr2, 0);
                    softPwmWrite(Motr1, 0);
                    delay(200);

                    softPwmWrite(Motr1,0);
                    softPwmWrite(Motr2,5);

                   while(true)
                    {
                      if(int(ScopeThread::data) == firstdataValue)
                        {
                            cout<<"4th while : "<<firstdataValue<<endl;

                            softPwmWrite(Motr2, 0);
                            softPwmWrite(Motr1, 0);
                            delay(2000);
                            break;
                        }
                      break;
                    }
                }
            }
        }

        else if(firstdataValue > 0 && beforeRightValue < 0)
        {
          degree_check = (firstdataValue) - (beforeRightValue);

          if(beforeRightValue < -90)
            {
              cout<<"condition 3 if : "<<degree_check<<endl;

                if(int(ScopeThread::data) != (int)firstdataValue)
                {
                    softPwmWrite(Motr2, 0);
                    softPwmWrite(Motr1, 0);
                    delay(200);

                    softPwmWrite(Motr1,5);
                    softPwmWrite(Motr2,0);

                   while(true)
                    {
                      if(int(ScopeThread::data) == firstdataValue)
                        {
                            cout<<"5th while : "<<firstdataValue<<endl;

                            softPwmWrite(Motr2, 0);
                            softPwmWrite(Motr1, 0);
                            delay(2000);
                            break;
                        }
                      break;
                    }
                }
            }

          else if(beforeRightValue > -90 && beforeRightValue <= 0)
            {
                cout<<"condition 3 else : "<<degree_check<<endl;

                if(int(ScopeThread::data) != (int)firstdataValue)
                {
                    softPwmWrite(Motr2, 0);
                    softPwmWrite(Motr1, 0);
                    delay(200);

                    softPwmWrite(Motr1,0);
                    softPwmWrite(Motr2,5);

                   while(true)
                    {
                      if(int(ScopeThread::data) == firstdataValue)
                        {
                            cout<<"6th while : "<<firstdataValue<<endl;

                            softPwmWrite(Motr2, 0);
                            softPwmWrite(Motr1, 0);
                            delay(2000);
                            break;
                        }
                      break;
                    }
                }
            }
        }

        else if(firstdataValue < 0 && beforeRightValue > 0)
        {
          degree_check = (firstdataValue) - (beforeRightValue);

          if(beforeRightValue > 90)
            {
                cout<<"condition 4 if : "<<degree_check<<endl;

                if(int(ScopeThread::data) != (int)firstdataValue)
                {
                    softPwmWrite(Motr2, 0);
                    softPwmWrite(Motr1, 0);
                    delay(200);

                    softPwmWrite(Motr1,0);
                    softPwmWrite(Motr2,5);

                   while(true)
                    {
                      if(int(ScopeThread::data) == firstdataValue)
                        {
                            cout<<"7th while : "<<firstdataValue<<endl;

                            softPwmWrite(Motr2, 0);
                            softPwmWrite(Motr1, 0);
                            delay(2000);
                            break;
                        }
                      break;
                    }
                }
            }

          else if(beforeRightValue < 90 && beforeRightValue >= 0)
            {
              cout<<"condition 3 if : "<<degree_check<<endl;

                if(int(ScopeThread::data) != (int)firstdataValue)
                {
                    softPwmWrite(Motr2, 0);
                    softPwmWrite(Motr1, 0);
                    delay(200);

                    softPwmWrite(Motr1,5);
                    softPwmWrite(Motr2,0);

                   while(true)
                    {
                      if(int(ScopeThread::data) == firstdataValue)
                        {
                            cout<<"8th while : "<<firstdataValue<<endl;

                            softPwmWrite(Motr2, 0);
                            softPwmWrite(Motr1, 0);
                            delay(2000);
                            break;
                        }
                      break;
                    }
                }
            }
        }
    }
}

Aucun commentaire:

Enregistrer un commentaire