run loop once then ask for serial

hello like the title said i want to run loop once then ask for serial then run loop again , can i do that?

//-------------------------variabile-------------------
int stp = 8; 
int dir = 9; 
int led1=2;
int x = 0; 
int i = 0;  
const byte numChars = 32;
char receivedChars[numChars]; 
boolean newData = false;
unsigned long previousMillis = 0;       
const long interval = 5000;  

unsigned long previousMillis1 = 0;       
const long interval1 = 3000;  

//-------------------------variabile-------------------



//-------------------------setup-----------------------
void setup() 
{ pinMode(led1,OUTPUT);
  pinMode(stp, OUTPUT);
  pinMode(dir, OUTPUT);  
  Serial.begin(9600);
  Serial.println("Ready!");
}
//-------------------------setup-----------------------


//-------------------------loop------------------------
void loop()
{ 
  recvWithEndMarker();
  showNewNumber();
  unsigned long currentMillis = millis();
 

  if (currentMillis - previousMillis >= interval) {
     previousMillis = currentMillis;
  motor();
  }

}
//-------------------------loop------------------------


//-----------------------functii----------------------
void recvWithEndMarker() {
    static byte ndx = 0;
    char endMarker = '\n';
    char rc;
    
    if (Serial.available() > 0) {
        rc = Serial.read();

        if (rc != endMarker) {
            receivedChars[ndx] = rc;
            ndx++;
            if (ndx >= numChars) {
                ndx = numChars - 1;
            }
        }
        else {
            receivedChars[ndx] = '\0'; // terminate the string
            ndx = 0;
            newData = true;
        }
    }
}

void showNewNumber() {
    if (newData == true) {
        x = 0;            
        x = atoi(receivedChars);   
        Serial.print("Unghiul ... ");    
        Serial.println(x);     
        newData = false;
    }
}

void motor()
{//--------------------------------trigonometric---------------------
  unsigned long currentMillis1 = millis();
  
  digitalWrite(dir,LOW);
  if(x<100){
     for(i=0;i<=x;i++){
          digitalWrite(stp,HIGH);
          delay(8);
          digitalWrite(stp,LOW);
          delay(8);
          if(x==i)
          digitalWrite(led1,HIGH);
  else
  digitalWrite(led1,LOW);
     } 
     if (currentMillis1 - previousMillis1 >= interval1) 
     previousMillis1 = currentMillis1;
 
       digitalWrite(dir,HIGH);
       for(i=0;i<=x;i++){
          digitalWrite(stp,HIGH);
          delay(8);
          digitalWrite(stp,LOW);
          delay(8);
          if(x==i)
          digitalWrite(led1,LOW);
  else
  digitalWrite(led1,LOW);
     } 


}
 //----------------------------------orar--------------------------
  

  digitalWrite(dir,HIGH);
 if(x>100){
      for(i=0;i<=200-x;i++){
          digitalWrite(stp,HIGH);
          delay(10);
          digitalWrite(stp,LOW);
          delay(10);
          if(x==i)
          digitalWrite(led1,HIGH);
  else
  digitalWrite(led1,LOW);
                 }
                 if (currentMillis1 - previousMillis1 >= interval1) 
     previousMillis1 = currentMillis1;
          digitalWrite(dir,LOW);       
          for(i=0;i<=200-x;i++){
          digitalWrite(stp,HIGH);
          delay(10);
          digitalWrite(stp,LOW);
          delay(10);
          if(x==i)
          digitalWrite(led1,LOW);
  else
  digitalWrite(led1,LOW);}
                 }
}

//-----------------------functii----------------------

how do i do that can you give me an exemple.Thank you

(deleted)

i serched on google didn't find anything on while loop with a serial...

While loop code:

char data = 0;
bool trigger = false;

while(!trigger)
{
   if(data = whatyouwant)
   {
      trigger = true;
   }
   else
   {
      if(Serial.available())
      {
         data = Serial.read();
      }
   }
}

trigger = false;

Boom. Right there.

mihaita212:
hello like the title said i want to run loop once then ask for serial then run loop again , can i do that?

I see some elements of one of my Threads in your code but I don't actually understand what you want to do.

Normally your code should allow loop() to run hundreds or thousands of times per second.

If you want some function only to work once the usual way is to use a flag variable - something like

void myFunction() {
   if (thisJobDone == false) {
      thisJobDone = true;
      // other code

   }
}

And when the next user input arrives it can set thisJobDone = false

...R