私はArduinoに新しいです、私は現在この作業をしようとしています..しかし、私はすでにこれを1時間行っています私の側には運がありません... ここに私がやっていることの要約があります:私は、Gizduino + 644(ATmega 644のPhilでここにArduinoのコピー)、IR近接センサー(3 PIN - VCC 、GRND、OUT)、2個のLED(赤と黄色)、2個の100オームの抵抗。LEDを最初からオフに設定する方法(Arduino)
これまでのところ、これは私が何ができるかです:ArduinoのIDEで
- 、私は「QRIN」を入力するとした場合持っている - 近接および赤色LEDがオンになりますが...もしその範囲内の近接感があります。黄色のLEDが点灯します。私は「QROUT」と入力した場合 - 近接はすぐにオフになり、赤のLEDが10秒間点灯し、...
をオフにし、これが問題です:
- 黄色のLED (IDEのアップロードボタンをクリックするだけです)、非常に大きな問題です...ケースを入力するとオフになります: 'QRIN'と 'QROUT '..
私のコードでは、名前は次のとおりです。
- レッドLED - LOCK
- 黄色のLED - PROX_SENSOR_LED
- 近接 - PROX
これはIDEで私のコードです:
int LOCK = 13; //RED LED, in pin 13
int PROX = 12; //PROXIMITY, in pin 12
int ANALOG = 0; //OUT of Proximity, in Analog 0
int PROX_SENSOR_LED = 7; //Yellow LED, in pin 7
int val = 0; //value to store
void setup()
{
Serial.begin(9600);
pinMode(LOCK, OUTPUT); //set the pin # as output (VCC of the hardware)
pinMode(PROX, OUTPUT); //set the pin # as output (VCC of the hardware)
pinMode(PROX_SENSOR_LED, OUTPUT); //set the pin # as output (VCC of the hardware)
}
void loop()
{
digitalWrite(PROX_SENSOR_LED, LOW); //sets the output pin initially to LOW (but doesnt work.. T_T)
val = analogRead(ANALOG); //read the input pin 0 to 1023
if (val > 800) //if the sensor value is higher threshold set OUTPUT HIGH
{
digitalWrite(PROX_SENSOR_LED, HIGH); //sets output pin HIGH
delay(100); //waits for .1 second
}
char data = Serial.read(); //read 9600
switch (data) //start of case... like 'ON' 'OFF'
{
case 'QRIN': //this is my 'ON'
digitalWrite(PROX, HIGH); //turn the proximity to ON
digitalWrite(LOCK, HIGH); //turn the lock to ON
break;
case 'QROUT': //this is my off 'OFF'
digitalWrite(PROX, LOW); //turn the proximity to OFF
digitalWrite(LOCK, HIGH); //turn the lock to ON
delay(10000); //for 10 seconds
digitalWrite(LOCK, LOW); //then off
if (ANALOG = HIGH) // I need this 'if' condition because if
{ //this is not here... the Yellow LED is turn ON...
digitalWrite(PROX_SENSOR_LED, LOW); //I don't know why.. T_T
}
break;
}
}
また、シリアルケースの読み込みに問題がないかどうかを確認するために、プリントをスイッチケースに入れてください。 – cagdas
リセット後、出力はトライステートになり、出力をデフォルトにロウに設定すると、セットアップに余分なコードを追加する必要はありません。おそらくループの最初の回ではアナログ0から読み込み、800より大きい値をとり、アナログ1からの読み取りに続いて(ANALOG = HIGHエラー、HIGHが1であるため)、値が大きくなることはありません800より大きいので、次の質問はなぜ> 800の値ですか - センサーの出力が反転しているのでしょうか? –
@PeteKirkhamはい、あなたはanalog readがおそらく5vを1024として割り当てられると思います。だから私は、ユーザに余分なデバッグ行をswitch文に入れるようにしたいと思います。 – cagdas