Hardware-Info
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);
}
}
}
Die PDF-Dateien zum Ausdrucken als Schüler-Arbeitsblätter
sind auf Technik-online verfügbar.
ACHTUNG!
Zur Schaltung geht es nur, wenn Sie bei TINKERCAD angemeldet sind!
Hier melden Sie sich an:
Ersetze die LED durch einen Motor!
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.