Infrarot-Sensor       (PIR-Sensor)

Abfrage der Daten auf einem Mikrocontroller


Zum Anschluss können Sie jeden beliebigen Digital-Pin nutzen, in unserem Beispiel verwenden wir Pin 3

Wir verbinden VCC mit 5V, GND mit GND und S mit D3 am ATmega328p.


Der Beispiel-Code sieht so aus:

#define PIN_LED   2

#define PIN_SR505 10


#define BUFFER_TIME 1000


unsigned long lastMeasure = 0;


void setup()

{

    pinMode(PIN_LED, OUTPUT);

    pinMode(PIN_SR505, INPUT);

    Serial.begin(9600);

}


void loop()

{

    if ((millis() - lastMeasure) > BUFFER_TIME) {

        lastMeasure += BUFFER_TIME;

        if (digitalRead(PIN_SR505) == HIGH) {

            Serial.println("Motion detected!");

            digitalWrite(PIN_LED, HIGH);

        } else {

            Serial.println("No motion.");

            digitalWrite(PIN_LED, LOW);

        }

    }

}

 

int PIR=3;
int led=13;


void setup()
{ pinMode(PIR, INPUT);
pinMode(led, OUTPUT);
Serial.begin(9600);

}

void loop()
{ if(digitalRead(5) == HIGH)

 {

digitalWrite(13, HIGH);
Serial.println("motion detected");

}

else {

digitalWrite(13, LOW); // setng led to low Serial.println("scanning");

}
}

Programm-Code:  „sketch“

int LED=5; //Das Wort „LED“ steht jetzt für den Wert 5.

int bewegung=7; //Das Wort „bewegung“ steht jetzt für den Wert 7.

int bewegungsstatus=0; //Das Wort „bewegungsstatus“ steht jetzt zunächst für den Wert 0. Später wird unter dieser Variable gespeichert, ob eine Bewegung erkannt wird oder nicht.


void setup() //Hier beginnt das Setup.

{

pinMode(LED, OUTPUT); //Der Pin mit der LED (Pin 5) ist jetzt ein Ausgang.

pinMode(bewegung, INPUT); //Der Pin mit dem Bewegungsmelder (Pin 7) ist jetzt ein Eingang.

}


void loop() //Der Loop-Teil beginnt

{            //Mit dieser Klammer wird der Loop-Teil geöffnet.

 

bewegungsstatus=digitalRead(bewegung); /Hier wird der Pin7 ausgelesen. Das Ergebnis wird unter der Variablen „bewegungsstatus“ mit dem Wert „HIGH“ für 5Volt oder „LOW“ für 0Volt gespeichert.

if (bewegungsstatus == HIGH) //Verarbeitung: Wenn eine Bewegung detektiert wird (Das Spannungssignal ist hoch)

{ //Programmabschnitt des IF-Befehls öffnen.

digitalWrite(LED, HIGH); //LED leuchtet

delay(5000); //...und zwar für für 5 Sekunden.

digitalWrite(LED, LOW); //...danach soll die LED nicht mehr leuchten

} //Programmabschnitt des IF-Befehls schließen.

else //ansonsten...

{ //Programmabschnitt des else-Befehls öffnen.

digitalWrite(LED, LOW); // LED aus

} //Programmabschnitt des else-Befehls schließen.

} //Mit dieser letzten Klammer wird der Loop-Teil geschlossen.


Ersetze die LED durch einen Motor!

Diese Website verwendet Cookies. Bitte lesen Sie unsere Datenschutzerklärung für Details.

OK