2014-09-16 1 views
0

У меня есть свет, подключенный к x2 фоторезисторам, подключенным к моему Arduino. Я имею их на пределе, когда они больше, чем предел, который затем выполняет его команда.Приращение, если заявление arduino

Что бы я хотел сделать, это сделать его более чувствительным, если датчик выполнит свои действия, если его значение изменится, скажем, 5 за один шаг, а не ждет, пока он достигнет предела.

Предложения и небольшая помощь были бы очень признательны.

int sensorPin1 = A5; 
int sensorPin2 = A4; 
int ledPin2 = 7; 
int ledPin1 = 8; 
int moto = 12; 

void setup() { 
    Serial.begin(9600); 
    pinMode(ledPin1, OUTPUT); 
    pinMode(ledPin2, OUTPUT); 
    pinMode(moto, OUTPUT); 
    pinMode(sensorPin1, INPUT); 
    pinMode(sensorPin2, INPUT); 
    digitalWrite(ledPin1, HIGH); 
    digitalWrite(ledPin2, HIGH); 
    digitalWrite(moto, LOW); 
} 

int limit = 450; 

void loop() { 
    // read the value from the sensor: 
    int sensorValue1 = analogRead(sensorPin1); 
    int sensorValue2 = analogRead(sensorPin2); 
    int sensorValue1a = analogRead(sensorPin1 - 2); 
    int sensorValue2a = analogRead(sensorPin2 - 2); 

    if (sensorValue1 > limit) { 
     digitalWrite(moto, LOW); 
     digitalWrite(ledPin1, LOW); 
     digitalWrite(ledPin2, HIGH); 
    } 

    delay(0); 

    if (sensorValue2 > limit) { 
     digitalWrite(moto, HIGH); 
     digitalWrite(ledPin1, HIGH); 
     digitalWrite(ledPin2, LOW); 
    } 

    Serial.println(sensorValue1); 
    // delay(100); 
} 

ответ

1
int sensorPin1 = A5; 
int sensorPin2 = A4; 
int ledPin2 = 7; 
int ledPin1 = 8; 
int moto = 12; 
int sensorValue1last = 0; 
int sensorValue2last = 0; 

void setup() { 
     Serial.begin(9600); 
     pinMode(ledPin1, OUTPUT); 
     pinMode(ledPin2, OUTPUT); 
     pinMode(moto, OUTPUT); 
     pinMode(sensorPin1, INPUT); 
     pinMode(sensorPin2, INPUT); 
     digitalWrite(ledPin1, HIGH); 
     digitalWrite(ledPin2, HIGH); 
     digitalWrite(moto, LOW); 
} 

int limit = 450; 

void loop() { 

    // read the value from the sensor: 
    int sensorValue1 = analogRead(sensorPin1); 
    int sensorValue2 = analogRead(sensorPin2); 
    int sensorValue1a = analogRead(sensorPin1 - 2); 
    int sensorValue2a = analogRead(sensorPin2 - 2); 
    int diff1 = sensorValue1-sensorValue1last; 
    int diff2 = sensorValue2-sensorValue2last; 

    if (sensorValue1 > limit || diff1 > 5) { 
     digitalWrite(moto, LOW); 
     digitalWrite(ledPin1, LOW); 
     digitalWrite(ledPin2, HIGH); 
     sensorValue1last = sensorValue1; 
    } 

    delay(0); 

    if (sensorValue2 > limit || diff2 > 5) { 
     digitalWrite(moto, HIGH); 
     digitalWrite(ledPin1, HIGH); 
     digitalWrite(ledPin2, LOW); 
     sensorValue2last = sensorValue2; 
    } 

    Serial.println(sensorValue1); 
    // delay(100); 

} 
+1

Я думал в том же направлении. Возможно, используйте 'sensorValue1last' и' sensorValue2last' для хранения в контексте кода OP. И более конкретно, после каждой итерации установите 'sensorValue1last = sensorValue1'. – polarysekt

+0

У меня только одно значение одновременно. Я пытаюсь записать значение, а затем сравнить его после изменения, а затем записать новое значение и так далее. Этот код будет сравнивать его агентов с его нынешним «нет»? – user1359327

+0

Сохраните свое старое значение таким же образом. @polarysekt предложил – DeFeNdog