Arduino/Steuerung einer Lampe, die angeht, wenn bei Dunkelheit eine Person den Parkplatz betritt: Unterschied zwischen den Versionen

Aus ZUM-Unterrichten
main>Belofb
Keine Bearbeitungszusammenfassung
(<source lang="c++">)
Markierung: 2017-Quelltext-Bearbeitung
 
(7 dazwischenliegende Versionen von 3 Benutzern werden nicht angezeigt)
Zeile 4: Zeile 4:
Hier ist eine sehr [https://learn.adafruit.com/pir-passive-infrared-proximity-motion-sensor/overview gute Anleitung] zu PIR-Sensoren verfügbar.
Hier ist eine sehr [https://learn.adafruit.com/pir-passive-infrared-proximity-motion-sensor/overview gute Anleitung] zu PIR-Sensoren verfügbar.


Mit diesem Projekt wird eine Lampe auf einem Parkplatz simuliert.Die Lampe wird angeschaltet, wenn es dunkel ist und gleichzeitig Bewegung registriert wird.
Die Lampe leuchtet 5 Sekunden nach, wenn keine Bewegung mehr registriert wird.


Das ist unsere Schaltung. Die Parkplatzlampe wird durch eine LED simuliert.
Das ist unsere Schaltung. Die Parkplatzlampe wird durch eine LED simuliert.


[[Datei:Arduino Projekt 5.JPG|400px|Leuchte mit Bewegungsmelder und Dunkelsensor]]
[[Datei:Arduino-Parkplatzleuchte.JPG|400px|Arduino-Parkplatzleuchte]]


Hier ist die aufgebaute Schaltung noch besser dargestellt:
[[Datei:Schaltplan Parkleuchte.png|400px|Schaltplan Parkplatzleuchte]]




Das ist der Sketch für unsere Schaltung.
Das ist der Sketch für unsere Schaltung.


<pre>
<source lang="c">
int ledPin = 13;
 
int inputPin = 2;
/*
int val=0;
Mit diesem Programm wird eine Lampe auf einem Parkplat simuliert.
int analogPin = A0;
Die Lampe wird angeschaltet, wenn es dunkel ist und gleichzeitig Bewegung registriert wird.
int analogval=0;
Die Lampe leuchtet 5 Sekunden nach, wenn keine Bewegung mehr registriert wird.
*/
 
//Variablen deklarieren
int LedPin = 13;             //Anschluss für die Lampe festlegen
int BewegungsPin = 2;         //Anschluss für den Steuerungsausgang des Bewegungsmelders festlegen
int Bewegung = 0;             //Variable, die den Zustand des Bewegungsmelders speichert (0=keine Bewegung, 1=Bewegung)
int HelligkeitsPin = A0;     //Anschluss für den Abgriff des Spannungsteilers aus Vorwiderstand Rv und Fotowiderstand LDR
int Helligkeitswert = 0;      //Variable, die einen der Helligkeit entsprechenden Digitalwert speichert
unsigned long StartTime = 0; //Variable, die für die Berechnung der Leuchtdauer der Lampe verwendet wird


//Prozedur zur Initialisierung des µControllers (wird einmalig beim Start durchlaufen)
void setup() {
void setup() {
   pinMode(ledPin, OUTPUT);
   pinMode(LedPin, OUTPUT);         //Anschluss der LED wird als Ausgang gesetzt
   pinMode(inputPin, INPUT);
   pinMode(BewegungsPin, INPUT);     //Anschluss der Steuerleitung des Bewegungsmelders wird als Eingang gesetzt
   pinMode(analogPin, INPUT);  
   pinMode(HelligkeitsPin, INPUT);  //Anschluss des Spannungsteiler-Abgriffes wird als Eingang gesetzt
    
}
}
//Schleifenprozedur, die immer wieder neu durchlaufen wird
void loop() {
void loop() {
   analogval=analogRead(analogPin);
   Helligkeitswert=analogRead(HelligkeitsPin);   //analogen Helligkeitswert einlesen (wird im µController in Digitalwert umgewandelt
   val=digitalRead(inputPin);
   Bewegung=digitalRead(BewegungsPin);           //Zustand des Bewegungsmelders auslesen
   if (val== HIGH&&analogval>200) {
   if (Bewegung== HIGH&&Helligkeitswert>150) {   //Wenn Bewegung vorliegt und der Helligkeitswert 150 überschreitet,...
     digitalWrite(ledPin,HIGH);  
     digitalWrite(LedPin,HIGH);                 //wird die Lampe eingeschaltet...
    
    StartTime=millis();                        //und die aktuelle Zeit (Zeit ab Programmstart in Millisekunden) wird abgespeichert
}
   }
else {
  else if (millis()-StartTime>5000){           //ansonsten, wenn 5000 Millisekunden Differenz überschritten sind,...
  digitalWrite(ledPin,LOW);
    digitalWrite(LedPin,LOW);                   //wird die Lampe ausgeschaltet
}
    }
}
  }
</pre>
</source>
 
{{SORTIERUNG:{{SUBPAGENAME}}}}
{{SORTIERUNG:{{SUBPAGENAME}}}}
[[Kategorie:Arduino]]
 
 
{{Arduino-Projekt}}

Aktuelle Version vom 15. Februar 2020, 17:27 Uhr

Das Projekt wurde auch bisher schon im Unterricht umgesetzt, allerdings ohne Mikrocontroller, sondern mit analogen Bauteilen.

Für die Umsetzung mit dem Arduino haben wir uns mit den benötigten Sensoren beschäftigt. Unsere Wahl fiel auf einen passiven Infrarot-Bewegungsmelder (PIR) vom Typ HC-SR 501. Hier ist eine sehr gute Anleitung zu PIR-Sensoren verfügbar.

Mit diesem Projekt wird eine Lampe auf einem Parkplatz simuliert.Die Lampe wird angeschaltet, wenn es dunkel ist und gleichzeitig Bewegung registriert wird.

Die Lampe leuchtet 5 Sekunden nach, wenn keine Bewegung mehr registriert wird.

Das ist unsere Schaltung. Die Parkplatzlampe wird durch eine LED simuliert.

Arduino-Parkplatzleuchte

Hier ist die aufgebaute Schaltung noch besser dargestellt:

Schaltplan Parkplatzleuchte


Das ist der Sketch für unsere Schaltung.

/*
Mit diesem Programm wird eine Lampe auf einem Parkplat simuliert.
Die Lampe wird angeschaltet, wenn es dunkel ist und gleichzeitig Bewegung registriert wird.
Die Lampe leuchtet 5 Sekunden nach, wenn keine Bewegung mehr registriert wird.
*/

//Variablen deklarieren
int LedPin = 13;              //Anschluss für die Lampe festlegen
int BewegungsPin = 2;         //Anschluss für den Steuerungsausgang des Bewegungsmelders festlegen
int Bewegung = 0;             //Variable, die den Zustand des Bewegungsmelders speichert (0=keine Bewegung, 1=Bewegung)
int HelligkeitsPin = A0;      //Anschluss für den Abgriff des Spannungsteilers aus Vorwiderstand Rv und Fotowiderstand LDR
int Helligkeitswert = 0;      //Variable, die einen der Helligkeit entsprechenden Digitalwert speichert
unsigned long StartTime = 0;  //Variable, die für die Berechnung der Leuchtdauer der Lampe verwendet wird

//Prozedur zur Initialisierung des µControllers (wird einmalig beim Start durchlaufen)
void setup() {
  pinMode(LedPin, OUTPUT);          //Anschluss der LED wird als Ausgang gesetzt
  pinMode(BewegungsPin, INPUT);     //Anschluss der Steuerleitung des Bewegungsmelders wird als Eingang gesetzt
  pinMode(HelligkeitsPin, INPUT);   //Anschluss des Spannungsteiler-Abgriffes wird als Eingang gesetzt
}

//Schleifenprozedur, die immer wieder neu durchlaufen wird
void loop() {
  Helligkeitswert=analogRead(HelligkeitsPin);   //analogen Helligkeitswert einlesen (wird im µController in Digitalwert umgewandelt
  Bewegung=digitalRead(BewegungsPin);           //Zustand des Bewegungsmelders auslesen
  if (Bewegung== HIGH&&Helligkeitswert>150) {   //Wenn Bewegung vorliegt und der Helligkeitswert 150 überschreitet,...
    digitalWrite(LedPin,HIGH);                  //wird die Lampe eingeschaltet...
    StartTime=millis();                         //und die aktuelle Zeit (Zeit ab Programmstart in Millisekunden) wird abgespeichert
   }
  else if (millis()-StartTime>5000){            //ansonsten, wenn 5000 Millisekunden Differenz überschritten sind,...
    digitalWrite(LedPin,LOW);                   //wird die Lampe ausgeschaltet
    }
  }



Arduino Logo.svg

Arduino-Projekt

  1. Lauflicht mit Schalter und Potentiometer, um die Anschaltdauer der Dioden einzustellen
  2. Datenvisualisierung mit Processing
  3. Datenvisualisierung mit einem Oszilloskop
  4. Ansteuerung von Pneumatikventilen mit dem Arduino
  5. Steuerung einer Lampe, die angeht, wenn bei Dunkelheit eine Person den Parkplatz betritt