Arduino Polska Forum
Czujnik PIR w połączeniu z czujnikiem zmierzchu. - Wersja do druku

+- Arduino Polska Forum (https://forum.arduinopolska.pl)
+-- Dział: Korzystanie z Arduino (https://forum.arduinopolska.pl/dzial-korzystanie-z-arduino)
+--- Dział: Programowanie w Arduino (https://forum.arduinopolska.pl/dzial-programowanie-w-arduino)
+--- Wątek: Czujnik PIR w połączeniu z czujnikiem zmierzchu. (/watek-czujnik-pir-w-po%C5%82%C4%85czeniu-z-czujnikiem-zmierzchu)



Czujnik PIR w połączeniu z czujnikiem zmierzchu. - Bilstik - 26-02-2020

Witam wszystkich, 
Chciałbym zrobić czujnik ruchu wykorzystując HC-SR501 i dodatkowo dołożyć do niego fotorezystor, który by mierzył natężenie światła w taki sposób, aby po wykryciu ruchu włączało się światło tylko w nocy. Napisałem program i spróbowałem przeprowadzić symulację na platformie TinkerCad, lecz bezskutecznie. Sam czujnik zmierzchu działa, ale gdy dołożyłem warunek z czujnikiem ruchu przestało działać. Poniżej kod: 
Kod:
#define czujnik1 5
int pomiarswiatla;
void setup() {
Serial.begin(9600); // prędkość portu COM do odczytu
pinMode(czujnik1, INPUT); //czujnik ruchu
pinMode(4, OUTPUT); //wskazanie pinu dla przekaźnika
digitalWrite(4, LOW);//wyłączenie przekaźnika
}
void loop() {
pomiarswiatla = analogRead(A0); // wskazanie pinu czytającego dane analogowe
Serial.print("Pomiar światła = "); //napis dla monitora portu
Serial.println(pomiarswiatla);
if ((pomiarswiatla < 920) && (digitalRead(czujnik1)==LOW)) { // reakcja?
digitalWrite(4, LOW);//wyłączenie 2 diody lub przekaźnika
if ((pomiarswiatla < 700) && (digitalRead(czujnik1)==HIGH)) { // reakcja?
digitalWrite(4, HIGH);//włączenie przekaźnika
}
}
else {
digitalWrite(4, LOW);//wyłączenie przekaźnika
}
delay(500); //odczyt z fotorezystora co ile sekund ?
}
Czy, ktoś mógłby zerknąć w program i zobaczyć co jest nie tak ? Z góry bardzo dziękuję .


RE: Czujnik PIR w połączeniu z czujnikiem zmierzchu. - kaczakat - 26-02-2020

W tym kodzie w każdym obiegu pętli przekaźnik zostanie wyłączony i załączony gdy pomiar światła jest poniżej 700, a raczej tak być nie powinno. Można zacząć od drugiej strony if <700 a potem else if coś dla 900.
Poza tym przerób kurs programowania czy chociaż Arduino, wywal delay(), naucz się odliczać czas i nim zarządzać np. millis().