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----------------------