• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Dwukrotny digitalread
#1
Witam, chce zrobić w domu swiatlo włączane na czujnik ruchu, problem jest taki ze czujnik jest bardzo czuły i łapie ruch z duzej odległości, chcialbym zrobic program arduino który by sprawdzal dwukrotnie odczyt czujnika ruchu np za 3 sekundy i dopiero włączał światlo

Sprawdzanie ruchu
czekanie 3 sekund
znowu sprawdzenie ruchu
włączenie swiatla
wyłączenie po braku ruchu

Mam nadzieje ze ktos zrozumiał o co mi chodzi


  1. int
    ledPin = 13;                // choose the pin for the LED

  2. int inputPin = 2;              // choose the input pin (for PIR sensor)

  3. int pirState = LOW;            // we start, assuming no motion detected

  4. int val = 0;                    // variable for reading the pin status


  5. void setup() {

  6.   pinMode(ledPin, OUTPUT);      // declare LED as output

  7.   pinMode(inputPin, INPUT);    // declare sensor as input


  8.   Serial.begin(9600);

  9. }


  10. void loop(){

  11.   val = digitalRead(inputPin);  // read input value

  12.   if (val == HIGH) {            // check if the input is HIGH

  13.     digitalWrite(ledPin, HIGH);  // turn LED ON

  14.     if (pirState == LOW) {

  15.       // we have just turned on

  16.       Serial.println("Motion detected!");

  17.       // We only want to print on the output change, not state

  18.       pirState = HIGH;

  19.     }

  20.   } else {

  21.     digitalWrite(ledPin, LOW); // turn LED OFF

  22.     if (pirState == HIGH){

  23.       // we have just turned of

  24.       Serial.println("Motion ended!");

  25.       // We only want to print on the output change, not state

  26.       pirState = LOW;

  27.     }

  28.   }
    Mam tu taki program, który może byc pomocny
 
Odpowiedź
#2
To co chcesz wykonać to tylko na przerywaniu.... Bo skąd program w przypadku blokady będzie wiedział czy to było chwilowe włączenie czy stałe?? wiec musisz na przerwaniu by program widział czy te 3s to stan ciągły wysoki...
Arduino zostało wymyślone po to, by robić dobrze jedną prostą rzecz – migać diodą. 
 
Odpowiedź
  


Skocz do:


Przeglądający: 1 gości