2016-05-10 16 views
1

RTCとサーボモータを含むプロジェクトを作成しているので、特定の時刻にのみオンになります。サーボとRTCを備えたArduino

void loop() { 
    DateTime now = rtc.now(); 
    if (DateTime == 19:10) { 
     //Some stuff 
    } else { 
     return(); 
    } 
} 

と私のエラーは、次のとおりです:ループからの抜粋です

Arduino: 1.6.8 (Windows 10), Board: "Arduino/Genuino Uno" 

C:\Users\User\Documents\Arduino\Servo_motor\Servo_motor.ino: In function 'void loop()': 

Servo_motor:36: error: expected primary-expression before '==' token 

    if (DateTime == 19:10) { 

      ^

Servo_motor:36: error: expected ')' before ':' token 

    if (DateTime == 19:10) { 

        ^

Servo_motor:45: error: expected primary-expression before '}' token 

    } 

^

Servo_motor:45: error: return-statement with a value, in function returning 'void' [-fpermissive] 

Servo_motor:45: error: expected ';' before '}' token 

Multiple libraries were found for "RTClib.h" 
Used: C:\Program Files (x86)\Arduino\libraries\RTClib 
Not used: C:\Users\User\Documents\Arduino\libraries\arduino_786051 
exit status 1 
expected primary-expression before '==' token 

This report would have more information with 
"Show verbose output during compilation" 
option enabled in File -> Preferences. 

私は本当に混乱しています。誰かが助けてくれますか?

答えて

1

私はあなたがAdafruit RTClibが、これはおそらくIDEからアクセスできる1であるとして、hereに位置し、またはチュートリアルが使用することを使用していると仮定するつもりです。これは利用可能な他のRTClibのフォークでもあるので、この答えは両方に関係する可能性があります。

RTClib.hにチェックを付けると、DateTimeとすべてのRTCクラスについて一般に公開されているメソッドが見つかります。そうすると、operator==メソッドが存在しないことに気付くでしょう。一般的には、これを比較の形式として使用することはできません。

DateTime.minute()DateTime.hour()を別々に比較する必要があります。しかし

void loop() { 
    DateTime now = rtc.now(); 
    if (now.hour() == 19 && now.minute() == 10) { 
     //Some stuff 
    } else { 
     return; 
    } 
} 

、これは問題ではかなりの数回のコードを実行する可能性があり、このチェックは、RTC、次の分の間ループを実行するたびに成功しますよう、次のようにあなたのループブロックではそれが見えます19時10分に振る。

0

これは、タイプを定数(引用符なしの時間)と比較しているようです。

あなたはこのようなことを言っていませんか?

if (now == "19:10") { 
関連する問題