Я запускал ваш код с помощью инструмента UNIX indent
.Это доступно для большинства платформ.Отступы предназначены не только для того, чтобы сделать их красивыми, но и для чтения кода.Также есть много редакторов-программистов, которые найдут «совпадающие» скобки / скобки (например: '%' в vim
).
Код выглядит для меня так, как будто отсутствует условие if
или что-то подобноеif ( digitalRead( pirPin ) == HIGH )
, поскольку в {
есть блок - или, по крайней мере, раздел внутри * без явной причины.
По сути, в вашем коде отсутствует 3 лота }
, один из которых закрывает вышеупомянутыйблок.Это не должно быть трудно восстановить с тщательным чтением.Но если это не удастся, просто добавьте их в конце.
void loop( )
{
if ( digitalRead( pirPin ) == HIGH )
{
digitalWrite( ledPin, HIGH ); //the led visualizes the sensors output pin state
if ( lockLow )
{
//makes sure we wait for a transition to LOW before any further output is made:
lockLow = false;
Serial.println( "---" );
Serial.print( "motion detected at " );
Serial.print( millis( ) / 1000 );
Serial.println( " sec" );
delay( 50 );
}
takeLowTime = true;
}
if ( digitalRead( pirPin ) == LOW )
{
digitalWrite( ledPin, LOW ); //the led visualizes the sensors output pin state
if ( takeLowTime )
{
lowIn = millis( ); //save the time of the transition from high to LOW
takeLowTime = false; //make sure this is only done at the start of a LOW phase
}
//if the sensor is low for more than the given pause,
//we assume that no more motion is going to happen
if ( !lockLow && millis( ) - lowIn > pause )
{
//makes sure this block of code is only executed again after
//a new motion sequence has been detected
lockLow = true;
for ( int pos1 = 0; pos1 <= 89; pos1 += 1 )
{
servo1.write( pos1 );
delay( 10 );
}
for ( int pos1 = 89; pos1 >= 1; pos1 -= 1 )
{
servo1.write( pos1 );
delay( 10 );
}
Serial.print( "motion ended at " ); //output
Serial.print( ( millis( ) - pause ) / 1000 );
Serial.println( " sec" );
delay( 50 );
{
if ( digitalRead( pirPin ) == HIGH )
{
digitalWrite( ledPin, HIGH ); //the led visualizes the sensors output pin state
if ( lockLow )
{
//makes sure we wait for a transition to LOW before any further output is made:
lockLow = false;
Serial.println( "---" );
Serial.print( "motion detected at " );
Serial.print( millis( ) / 1000 );
Serial.println( " sec" );
delay( 50 );
}
takeLowTime = true;
}
if ( digitalRead( pirPin ) == LOW )
{
digitalWrite( ledPin, LOW ); //the led visualizes the sensors output pin state
if ( takeLowTime )
{
lowIn = millis( ); //save the time of the transition from high to LOW
takeLowTime = false; //make sure this is only done at the start of a LOW phase
}
//if the sensor is low for more than the given pause,
//we assume that no more motion is going to happen
if ( !lockLow && millis( ) - lowIn > pause )
{
//makes sure this block of code is only executed again after
//a new motion sequence has been detected
lockLow = true;
for ( int pos1 = 0; pos1 <= 89; pos1 += 1 )
{
servo1.write( pos1 );
delay( 10 );
}
for ( int pos1 = 89; pos1 >= 1; pos1 -= 1 )
{
servo1.write( pos1 );
delay( 10 );
}
Serial.print( "motion ended at " ); //output
Serial.print( ( millis( ) - pause ) / 1000 );
Serial.println( " sec" );
delay( 50 );
}
}
} //THE ISSUE IS HERE