Indent your code consistently and it becomes obvious:
void loop()
{
pirStat = digitalRead(pirPin);
if (pirStat == HIGH);
digitalWrite (ledPin, HIGH);
Serial.println("Motion Detected");
for (pos = 0; pos<= 180; pos += 1)
{
myservo.write (pos);
delay(20);
}
digitalWrite(ledPin, LOW);
for (pos = 180; pos >= 0; pos -= 1)
{
myservo.write(pos);
delay (120);
}
}
else
{
}
}
You have a semicolon terminating your
if
:
if (pirStat == HIGH);
So the close curly bracket before the
else
terminates the function.
Try this:
void loop()
{
pirStat = digitalRead(pirPin);
if (pirStat == HIGH)
{
digitalWrite (ledPin, HIGH);
Serial.println("Motion Detected");
for (pos = 0; pos<= 180; pos += 1)
{
myservo.write (pos);
delay(20);
}
digitalWrite(ledPin, LOW);
for (pos = 180; pos >= 0; pos -= 1)
{
myservo.write(pos);
delay (120);
}
}
else
{
}
}
And now the brackets all match up.
It doesn't matter which indentation and bracket placement scheme you use - though some are better than others - as long as you are consistent. Random indentation is useless though.
You should expect to get syntax errors every day, probably many times a day while you are coding - we all do regardless of how much experience we have! Sometimes, we misspell a variable, or a keyword; sometimes we forget to close a string or a code block. Sometimes the cat walks over your keyboard and types something really weird. Sometimes we just forget how many parameters a method call needs.
We all make mistakes.
And because we all do it, we all have to fix syntax errors - and it's a lot quicker to learn how and fix them yourself than to wait for someone else to fix them for you! So invest a little time in learning how to read error messages, and how to interpret your code as written in the light of what the compiler is telling you is wrong - it really is trying to be helpful!
So read this:
How to Write Code to Solve a Problem, A Beginner's Guide Part 2: Syntax Errors[
^] - it should help you next time you get a compilation error!