私はArduinoを使い慣れていて、私は学校のプロジェクトに取り組んでいます。私は、火を検出し、光、動き、音の形でユーザーに直接フィードバックを与えることができるデバイスを作成しようとしています。サーボ、LED、ブザー付きデジタル炎センサー
私のコードでいくつかの問題が発生しています。私が達成したいのは、私のデバイスが、光(LED)と動き(サーボ)の形で火を検出したが、音ではないことを検出すると、私のデバイスが直接フィードバックを与えることです。
ピエゾブザーとLEDライトを除いてすべてが正常に機能しています。炎センサーが火を検出したが、LEDが輝いていないとき、サーボモーターは180度回転を開始します。なぜ私のledsが輝いているのかわかりません。私のコードに何か問題がありますか?ブザーの問題は、火炎センサーが火を検出したときにブザーを鳴らさなければならないということですが、15分後にのみ消灯します。今すぐそれはただちに消えます。また、サーボの遅延機能は、ピエゾブザーの持続時間に影響を与えるようです。私はそれをお互いに分けておきたいと思います。私は遅延機能を使っていますが、動作していないようです。私はmillis()
関数を使用しなければならないことを知っていますが、遅延関数をmillisに変更する方法はわかりません。
コード:
#include <Servo.h>
Servo myservo;
const int servoPin = D8; // Servo pin op D8
const int flamePin = D6; // Flame sensor pin op D6
const int buzzerPin = D5; // Piezo buzzer op D5
const int ledPin1 = D3; // Led licht 1 op D3
const int ledPin2 = D7; // Led licht 2 op D7
int Flame = HIGH; // De waarde HIGH wordt gekoppeld aan wanneer de vlam aan staat
void setup() {
pinMode(flamePin, INPUT); // Flame sensor is input
myservo.attach(servoPin); // Servo is ouput
pinMode(buzzerPin, OUTPUT); //Piezo buzzer is output
pinMode(ledPin1, OUTPUT); //Led 1 is output
pinMode(ledPin2, OUTPUT); //led 2 is output
} //setup
void loop() {
Flame = digitalRead(flamePin); // Flame waarde wordt gekoppeld aan de waarde die de flamePin leest
if (digitalRead(flamePin) == HIGH) { // Wanneer de flame sensor vuur waarneemt
myservo.write(180); // Draait de servo 180 graden
delay(50); // Doet er 50ms over om naar de positie te komen
noTone(D5);
delay(50000);
tone(D5, 261, 50000);
digitalWrite(ledPin1, HIGH); //Led 1 gaat branden zodra vuur wordt waargenomen
digitalWrite(ledPin2, HIGH); //Led 2 gaat branden zodra vuur wordt waargenomen
}
else if (Flame == LOW){ // Wanneer de flame sensor geen vuur waarneemt
myservo.write(0); // Draait de servo niet
noTone(D5);
digitalWrite(ledPin1, LOW); //Led 1 staat uit
digitalWrite(ledPin2, LOW); //Led 2 staat uit
}
}//loop
あなたがこれまでに試したこと、働いている/働いていないこと、やっていることなどを要約できますか?具体的な質問に答えることはできますが、プロジェクト全体を解決することはできません。 – roelofs
こんにちは、ありがとうございました!ピエゾブザー以外はすべて正常に動作しています。火炎センサーが火を検出してLEDが点灯すると、サーボモーターは180度回転を開始します。問題は、炎センサーが火災を検出したときにブザーをオフにしなければならないが、10分後でなければならないということです。今すぐそれはただちに消えます。また、サーボの遅延機能は、ピエゾブザーの持続時間に影響を与えるようです。私はお互いから別々にしておきたいと思います。 –
追加情報をありがとう!おそらくこの情報であなたの質問を更新(編集)するので、人々はコメントを読む必要はありませんか? – roelofs