FANDOM


Einführung und Zusammenfassung Bearbeiten

Ziel Bearbeiten

Entwicklung eines Arduinoprojekts zur Sicherung der eigenen Privatsphäre

Beschreibung Bearbeiten

Die SchülerInnen arbeiten in Gruppen mit  grundlegenden Arduino-Bauteilen sowie ausgewählten  Bibliotheken und setzen sich so selbst die Hard- und Software zusammen, um auf beliebige Art und Weise die eigene Privatsphäre zu schützen.

Kompetenzziele Bearbeiten

Die SchülerInnen können ein lauffähiges C++ Programm in der Arduino IDE zusammensetzen und unter Verwendung von Kontrollstrukturen (insbesondere der Verzweigung) individuell anpassen.

Die SchülerInnen können die für ihr Programm notwendige Hardware identifizieren und der Lauffähigkeit des Programms entsprechend installieren.

Konzept - Lehrinhalt Bearbeiten

Informatischer Inhalt Bearbeiten

Die SchülerInnen wenden das bereits erworbene theoretische Wissen zu Algorithmen an um sie besser zu verstehen (Kontrollstrukturen, Datentypen, Funktionen, Objekte, Methoden).

Die SchülerInnen lernen Programmiersprache C++ bzw. des Arduino kennen.

Die SchülerInnen verstehen den grundlegenden Aufbau von Informatiksystemen.

Die SchülerInnen kommunizieren und kooperieren miteinander bei gemeinsamer Bearbeitung des Projekts.

Fächerübergreifende Aspekte Bearbeiten

Physik: Aufbau einfacher Stromkreise und die Darstellung von Schaltplänen laut RLP Physik Sek I. Optimalerweise im Rahmen eines interdisziplinären Projekts zu erarbeiten.

Lebensgestaltung-Ethik-Religionskunde: Das Miteinander von Erwachsenen und Kindern in der Gesellschaft laut RLP: Rechte und Pflichten des Einzelnen sowie Kinderrechte.

Bezug zum Rahmenlehrplan Informatik Sek I Berlin/Brandenburg Bearbeiten

Kompetenzen laut Rahmenlehrplan Bearbeiten

2.5

Die Schülerinnen und Schüler können die Algorithmischen Grundstrukturen Sequenz, Verzweigung und Wiederholung problemadäquat anwenden. (Kompetenzniveau F)

Die Schülerinnen und Schüler können eine Programmierumgebung verwenden. (Kompetenzniveau F)

Je nach Niveau des Projekts, entsprechend er inneren Differenzierung:

Die Schülerinnen und Schüler können die Algorithmischen Grundstrukturen in Kombination zielgerichtet anwenden. (Kompetenzniveau G)

Weiterer Bezug zum Rahmenlehrplan Bearbeiten

Des Weiteren eignet sich die Durchführung dieses Projekt im Rahmen des Kompetenz- und Inhaltsbereiches 2.1 bzw. 3.1 des RLP im Kontext mit Informatiksystemen. Dazu müsste jedoch der Fokus sowie die Aufgabenstellung verändert werden.

Voraussetzungen und Kompetenzen Bearbeiten

Zielgruppe Bearbeiten

Dieses Projekt richtet sich an Einsteiger in die Programmierung bzw. Informatik allgemein und sollte daher glicht zeitnah nach der Vermittlung einiger weniger theoretischer Inhalte folgen.

Im schulischen Kontext richtet sich dieses Projekt also an SchülerInnen der unteren Sekundarstufe I, also 7.- 8. Klasse

Benötigtes Vorwissen Bearbeiten

Die SchülerInnen sollten theoretische Grundkenntnisse zum Thema Algorithmus sowie zu Kontrollstrukturen und deren Funktionsweisen haben. Möglich wäre dies mit einem anschaulichen Einstieg mittels Flussdiagrammen (beispielsweise anhand von Sheldon Cooper's Freundschaftsalgorithmus).

Mathematisch wäre es vorteilhaft, wenn grundlegendes Verständnis zu Gleichungssystemen und Variablen bereits verinnerlicht wurde.

Feinmotorisch sollten SchülerInnen in der Lage sein, dass sie ein Jumperkabel in einen Female-Header bzw. ein Breadboard stecken können.

Ressourcen Bearbeiten

Benötigte Bauteile (Arduino) Bearbeiten

Pro SchülerInnengruppe wird je

  • ein Arduino (Uno) Board
  • ein Breadboard
  • ausreichend  Steckbrücken / Jumperkabel
  • etwas Kupferdraht und -Klebeband
  • Widerstände (220 Ohm , 10K Ohm, 10/20M Ohm)
  • verschiedene Aktoren (Druckknöpfe, LEDs, Piezo Elemente)
  • verschiede Sensoren (Bewegungs-, Abstandsmesser, Geräuschsensor)

benötigt.

Bastelmaterial Bearbeiten

Bastelmaterial wird im Vorfeld nicht benötigt. Sollten es SchülerInnen innerhalb der vorgegebenen Zeit schaffen ihren Prototyp entsprechend zu realisieren, sollte schnell gehandelt werden und im Einzelfall geprüft werden, was benötigt wird, welche Kosten entstehen würden und ob dieses Projekt noch realisierbar ist.

Kosten Bearbeiten

Die Kosten ergeben sich vorerst ausschließlich aus einem Arduino Starter Kit und den jeweiligen Sensoren pro SchülerInnengruppen, also etwa 50 - 80 € * Anzahl an SchülerInnengruppen.

Alternativ gingen selbstverständlich auch Arduino Klone und einige Aktoren und Sensoren, die die SchülerInnen unter sich aufteilen müssten. Jedoch sollte jede Schule möglichst einen Klassensatz Original Arduino StarterKits vorrätig haben.

PCs, Rechner Bearbeiten

Für die Bearbeitung der Projekte werden je SchülerInnengruppe ein Rechner mit installierter Arduino IDE benötigt.

Zeitaufwand für die Vorbereitung des Projekts Bearbeiten

Der Zeitaufwand für die Vorbereitung hält sich bei diesem Projekt in Grenzen und variiert stark abhängig von den Verwendeten Vorlagen. Je besser das Projekt vorbereitet wird, desto mehr Zeit bleibt den SchülerInnen zur eigentlichen Bearbeitung dessen. Im Folgenden sind bereits einige Bauteil-Beispiele vorgegeben, sollten mehr Bauteile einbezogen werden, muss entsprechend ein Beispielskelch und ein Bauplan erstellt werden. LehrerInnen sollten jedoch bedenken, dass mit steigender Anzahl an Bauteilen auch die zu bearbeitende Projektzeit steigt, da die SchülerInnen alle Beispiele verinnerlichen sollten. Sollte mit einer Bibliothek (wie im Beispiel "MyLib") gearbeitet werden, die eine deutsche Übersetzung von Schlüsselwörtern und Funktionen ermöglicht, muss entsprechend diese auch erweitert werden, welches zusätzliche Vorbereitungszeit in Anspruch nimmt. Des Weiteren muss etwa eine halbe Stunde Vorbereitungszeit eingeplant werden, um sicher zu stellen, dass wirklich auf jedem Rechner die Arduino IDE hinterlegt ist und wenn gewünscht die Bibliotheken im entsprechenden Libary Ordner hinterlegt sind. Zusätzlich sollte geprüft werden, ob der Ordner mit den Beispielen auf einem für alle SchülerInnen zugänglichen Laufwerk gespeichert ist.

Benötigte Software Bearbeiten

Grundsätzlich wird nur die Arduino IDE benötigt. Sollten LehrerInnen noch weitere Beispiele hinzufügen wollen, ist außerdem ein Programm zum Erstellen von Bauplänen hilfreich. Fritzing oder ein einfaches Bildbearbeitungsprogramm (z.B. GIMP) sollten dafür ausreichend sein.

Durchführung im Unterricht bzw. Lernlabor / Workshop - Lehrmaterial Bearbeiten

Wie läuft das Modul/der Unterricht ab (Ablauf und Verweise auf Arbeitsblätter)? Bearbeiten

Optimaler Weise wird dieses Projekt als geschlossene Unterrichtseinheit oder als Projekt innerhalb einer Projektwoche realisiert. Zeitlich sollten mindestens 7-8 Unterrichtsstunden á 45 Minuten eingeplant werden.

Stunde 1: Vorstellung des Arduino Boards, der Arduino IDE am Beispiel. Bearbeiten

Nach einer kurzen Vorstellung von Arduino sollte im Klassenverband am Beispiel von "LED_Blink" gezeigt werden, wie man Bauteile am Arduino anschließt, ein Sketch schreibt und auf das Board lädt.

Stunde 2: Zeit geben die Beispiele zu entdecken Bearbeiten

Den SchülerInnen sollte mindestens eine Stunde Zeit gegeben werden, alle Beispiele des ihnen zur Verfügung gestellten Ordners zu erforschen. Es sollte die Anweisung geben mindestens eins der Beispiele nach zu bauen und das vorgegebene Sketch auf das Board zu bauen. (Arduino Boards und Bauteile müssen also schon zur Verfügung stehen)

Stunde 3: Aufgabenerteilung, Kriterienerarbeitung und Gruppeneinteilung Bearbeiten

Diese Stunde sollte voll und ganz dafür genutzt werden, die Projektaufgabe vorzustellen und gemeinsam im Klassenverband die Art und Weise der Bewertung sowie deren Kriterien festzulegen. Anschließend werden die Gruppen eingeteilt und sollte noch Zeit verbleiben wird diese den Gruppen gegeben um sich schon einmal Gedanken um Ihr Projekt zu machen. (mögliche Kriterien könnten sein: Ist das System lauffähig? Ist der Code verständlich? Ist der Code korrekt? Ist die Idee/Umsetzung kreativ? Schützt das System die Privatsphäre? Wurden Kontrollstrukturen korrekt verwendet?) (Die Art und Weise der Gruppenzuteilung in abhängig von der Klassensituation)

Stunde 4-7: Zielsetzung und Beginn der Projektumsetzung Bearbeiten

Von Stunde 4 an, sollten die SchülerInnen Zeit fürs Bearbeiten ihrer Projekte bekommen. Es muss darauf hingewiesen werden, dass in der Projektarbeit vor dem eigentlichen Arbeiten ein Plan erstellt werden muss. Dieser umfasst Überlegungen dazu, was genau im Leben der SchülerInnen Privatsphäre ausmacht und wie sie ihre Privatsphäre mit Arduino schützen könnten. LehrerInnen stehen jetzt beratend und helfend zur Verfügung. Auch leistungsstarken Schülern sollte es gestattet sein, leistungsschwächere Schüler beratend(!) zu unterstützen.

Stunde 8: Auswertung Bearbeiten

Sollte eine offene Art der Bewertung, zum Beispiel mit Hilfe der Museumsmethode gewählt werden, muss dafür eine gesamte Schulstunde eingeplant werden, da die SchülerInnen die Präsentation ihrer Projekte auch genießen sollen und neben bewerten (wenn SchülerInnen die mit-Bewertung gestattet ist) auch reflektieren und sich austauschen sollen.

Fragestellung für SuS - Aufgabenstellung Bearbeiten

  1. Lest euch die Programmierbeispiele (Sketches) im Ordner XY durch und schaut euch die jeweiligen Baupläne an!
  2. Baut ein beliebiges Beispiel (außer LED_Blink) nach und ladet das vorgegebene Sketch in der Arduino IDE auf das Arduino Board, um zu überprüfen, ob Ihr alle Teile richtig zusammengesetzt habt!
  3. Lest Euch die Projektbeschreibung aufmerksam durch!
  4. Arbeite Kriterien heraus, die Du für eine Bewertung als relevant betrachtest (mit Begründung)!
  5. Findet (Setzt) Euch in (den zugeteilten) Zweier-Gruppen zusammen.
  6. Gebt ein Beispiel für etwas Schützenswertes an, welches Eure Privatsphäre betrifft.
  7. Entwerft einen Plan, wie Ihr etwas Schützenswertes mit Hilfe des Arduino schützen könnt.
  8. Entwerft nach diesem Plan ein Produkt bzw. einen Prototyp! (8.1 Implementiert ein Sketch mit Hilfe der vorgegebenen Programmierbeispielen und mindestens einer dazu benötigten Kontrollstruktur! 8.2 Setzt die Hardware entsprechend Eurem Plan zusammen! 8.3 Ladet Euer Sketch auf den Arduino und testet Euer Produkt! 8.4 Sollte Euer Produkt nicht wie gewünscht funktionieren, bestimmt mögliche Fehler und kontaktiert gegebenenfalls die Lehrkraft!)

Arbeitsblätter Bearbeiten

Projektbeschreibung Bearbeiten

In der Projektphase arbeitet Ihr in Gruppen mit ausgewähltenn Arduino-Bauteilen und dazugehörigen Programmierbeispielen (siehe Aufgabe 1) und setzt Euch selbstständig die Hard- und Software zusammen, um auf beliebige Art und Weise Eure Privatsphäre zu schützen. Dazu soll mindestens ein Eingabe- und ein Ausgabegerät mit Hilfe einer passenden Kontrollstruktur kombiniert werden.

Beispiele Bearbeiten

Abstandsbeispiel Bearbeiten
Abstand Beispiel
/* Bitte die Bibliothek NewPing im Ordner ".../Arduino/Libaries/" speichern:
 https://bitbucket.org/teckel12/arduino-new-ping/downloads
 */
 #include <NewPing.h>
#include <MyLib.h>
#include <Projekt.h>

ganzezahl echo = 11;     //Nummer des Pins, an dem das "Echo" des Sensors angeschlossen wird
ganzezahl trigger = 12;  //Nummer des Pins, an dem der "Trigger" des Sensors angeschlossen wird
ganzezahl distanz = 350;      //maximale Distanz die z messen möglich ist (ab ca.4m gibr es ohnehin eine Fehlmessung bzw. 0)
 
 NewPing messung(trigger, echo, distanz);  //neue NewPing bzw. Messung Objekt erzeugen
 
 void setup() {                //Monitor zur Kontrolle starten (Werkzeuge=>Serieller Monitor)
    Monitor.starten();   
}
 
 void loop() {
    ganzezahl abstand = messung.cmMessen(); //Distanz von "messung" messen lassen und der Variable abstand zuweisen
   Monitor.neueZeile(abstand);             //Den Wert von "abstand" bzw. der letzten Messung auf dem Monitor ausegeben
   warte(500);                             //eine halbe Sekunde warten, um die Übersicht zu behalten     
}
Buzzeralarmbeispiel Bearbeiten
BuzzerAlarm Beispiel
#include <MyLib.h>
#include <Projekt.h>

ganzezahl buzzerPin = 11;           //Nummer des Pins, an dem der +Pin vom Buzzer angeschlossen wird 

void setup()  { 
  pinModus(buzzerPin, AUSGABE);     //Buzzer als AUSGABE Pin festlegen, da Strom rausgehen muss
} 

void loop()  { 
  schreibeAnalog(buzzerPin,20);     //Lautstärke des Buzzers analog auf 1(leise) - 255(laut) einstellen
  warte(500);                       //halbe sekunde warten
  schreibeAnalog(buzzerPin,0);      //Buzzer wieder aussschalten
  warte(500);                       //halbe sekunde warten
  schreibeDigital(buzzerPin,AN);    //Buzzer digital auf volle Lautstärke einschalten
  warte(500);                       //halbe sekunde warten
  schreibeDigital(buzzerPin,AUS);   //Buzzer digital wieder ausschalten
  warte(500);                       //halbe sekunde warten
}
Druckknopfbeispiel Bearbeiten
DruckKnopf Beispiel
#include <MyLib.h>

ganzezahl knopfPin = 2;    // Nummer des Pins, an dem der Knopf angeschlossen wird 



void setup() {
  Monitor.starten();
  pinModus(knopfPin, EINGABE);  // Knopf-Pin als Eingabe, weil gelesen wird wenn Strom reingeht

}

void loop() {
  wenn(leseDigital(knopfPin) istgleich AN) {     // Prüfe, ob der Knopf gedrückt ist:
   Monitor.neueZeile("Knopf gedrückt!");
   warte(500);                                 //500 Millisekunden warten damit die Schleife nicht weiterläuft, während der Knopf noch gedrückt ist
  }  
}
LED_Bink Bearbeiten
LED Blink
#include <MyLib.h>


ganzezahl ledPin = 13;

void setup() {
  pinModus(ledPin, AUSGABE);    //Pin 13 als Ausgabe deklarieren
}

void loop() {
  schreibeDigital(13, AN);   // Strom an Pin 13 anschalten (LED anschalten)
  warte(1000);               // eine Sekunde warten
  schreibeDigital(13, AUS);  // Strom an Pin 13 ausschalten (LED ausschalten)
  warte(1000);               // eine Sekunde warten
}
MaKeyMaKeyBeispiel Bearbeiten
MakeyMaKey Beispiel
/*
Um Fehler durch Messungenauigkeiten oder Fehlmessungen zu vermeiden, ermitteln wir einen 
Durchschnittswert von mehreren Messungen. In diesem Beispiel machen wir 20 Messungen im Abstand 
von je einer Millisekunde, dazu brauchen wir drei Variablen, in denen Die Summe des Messwerte, 
die Anzahl der Summanden und das Ergebnis gespeichert werden. 

Sollte auf das Berühren nicht oder zu empfindlich reagiert werden, muss der Schwellwert angepasst werden. */

#include <MyLib.h>

ganzezahl messSumme;            //Hier werden die einzelnen Messwerte addiert
ganzezahl summandenAnzahl;      //Diese Variable zählt und bedingt die Solange-Scheifen-Durchläufe
ganzezahl durchschnitt;         //Diese Variable speichert den Mittelwert der Messungen
ganzezahl schwellwert = 500;          //Hier muss angepasst werden, wenn nicht wie gewünscht reagiert wird

void setup() {
  Monitor.starten();            //Monitor zur Prüfung starten
}

void loop() {
  summandenAnzahl = 0;          //der Zähler wird in jedem "Loop" (jeder Schleife) wieder auf 0 gesetzt
  messSumme = 0;
  solange(summandenAnzahl istkleinerals 20){ //diese Schleife wiederholt sich so oft, bis summandenAnzahl 30 ist
    messSumme = messSumme + leseAnalog(A0);  //misst den Stromeingang in A0 und addiert ihn auf messSumme
    summandenAnzahl = summandenAnzahl + 1;   //erhöht summandenAnzahl um 1, sodass die Schleife genau 30 mal läuft
    warte(1);                                //warte drei Millisekunden vor dem nächsten Schleifendurchlauf
  }
   durchschnitt = messSumme / summandenAnzahl;//Errechne den Mittelwert 

  wenn(durchschnitt istkleinerals schwellwert){     //Wenn der Gegenstand berührt wurde
    Monitor.neueZeile("Angefasst!");        //Zeige "Angefasst" auf dem Monitor 
  }
   Monitor.neueZeile(durchschnitt);        //Zeige den Durchscnitt zur Anpassung des Schwellwertes auf dem Monitor 

}
Pirbeispiel Bearbeiten
Pir Beispiel
#include <MyLib.h>

ganzezahl pirPin = 2;             // Nummer des Pins, an dem der Pir-Sensor angeschlossen wird  
spannungswert pirStatus = AUS;    //Variable um auszulesen, ob der Pir ausgelöst wurde

void setup() {
  pinModus(pirPin, EINGABE);      //Pir Pin als EINGABE festlegen, da Strom kommt, wenn ausgelöst
  Monitor.starten();              //Monitor zur Kontrolle starten (Werkzeuge=>Serieller Monitor)

}

void loop() {
  pirStatus = leseDigital(pirPin);  //in jeder Schleife neu abfragen, ob der Pir ausgelöst wurde
  wenn (pirStatus istgleich AN) {   //wenn er ausgelöst wurde
    Monitor.neueZeile("Erwischt!"); //schreibe "Erwischt" in einer neuen Zeile auf den Monitor
    warte(1000);                    //und warte eine Sekunde, bevor die Schleife sich wiederholt
  }
}
Bibliothek für deutsche Sprache Bearbeiten

Wie in den Beispielen zu sehen ist, wurde eine Bibliothek eingebunden, die mit textheller Übersetzung arbeitet, um Programmieren auf Deutsch zu ermöglichen. Ob und in wie weit dies der inneren Differenzierung und dem früher möglichen Einstieg in die Programmierung dient, bleibt dem Urteilsvermögen der unterrichtenden Lehrkraft überlassen. Die Bibliothek "MyLib" aus diesen Beispielen sowie alle weiteren Beispiele befinden sich im GitHub Ordner: https://github.com/BesoBerlin/DIY_PrivacyKit.git[1]

Verweis auf mögliche externe Arbeitsmaterialien Bearbeiten

Es existieren bereits viele Handbücher zum Arduino, auch auf deutscher Sprache, jedoch bisher leider keines welches sich auf den Arduino (allgemein) bezieht und dabei nicht zu umfangreich und detailliert ist. Momentan arbeitet Arduino an einer deutschen Übersetzung seiner Reference, welche den SchülerInnen gerne mit an die Hand gegeben werden kann.

Hinweise zur Durchführung Bearbeiten

Reflexionsphase der SuS Bearbeiten

(siehe Bewertungsphase in der Durchführung, Stunde 8)

Mögliche Schwierigkeiten der SuS und Lösungsvorschläge Bearbeiten

Schwierigkeiten werden vermutlich hauptsächlich in der Ideenfindung und der Einhaltung des Zeitlimits auftreten. bei Beidem gilt: Die Lehrperson muss unbedingt beratend und helfend zur Seite stehen und frühzeitig erkennen, wenn ein Verzug entsteht, um die SchülerInnengruppe rechtzeitig darauf hinzuweisen, dem entgegen zu wirken.

Beispiel einer Umsetzung - Prototyp Bearbeiten

Dieser Abschnitt entspricht etwa dem Erwartungshorizont einer Lehrkraft und sollte daher unbedingt entsprechend der Lerngruppe angepasst werden.

Im Folgenden daher ausschließlich eine Beispiel-Mindestanforderung und eine Muster-Glanzleistung, die ebensogut als Kooperation mehrerer Schülergruppen entstehen könnte.

Muster-Glanzleistung bzw. Kooperatives Projekt (mit Einbezug einer weiteren Libary, zum schalten von Funksteckdosen, dieses Element ist oben noch nicht erwähnt und müsste entsprechend angepasst werden)

Pirjekt2.0*

#include <MyLib.h>
#include <Projekt.h>
#include <NewPing.h>
#include <RCSwitch.h>

fest ganzezahl funkPin = 6;
fest ganzezahl steuerLed  = 13;         
fest ganzezahl knopfPin = 2;     // Pin für den Knopf
fest ganzezahl knopfResetPin = 3;     // Pin für den Kopf
fest ganzezahl pirPin = 7;         // Pin für den PIR-Sensor
fest ganzezahl ledPin = 10;    // Pin für den LED oder Summer
fest ganzezahl buzzerPin = 9;  // Pin für den Buzzer 
fest ganzezahl pingTrigger = 11;
fest ganzezahl pingEcho = 12;
ganzezahl pingDistanz = 350;
spannungswert alarm = AN;
spannungswert pirStatus = AUS;   // Wert für erfasste Bewegungen
spannungswert knopfStatus = AUS; // Wert für erfassten Knopfdruck
spannungswert knopfResetStatus = AUS; // Wert für erfassten Knopfdruck
wahrheitswert zuhause = wahr;  // Wert für den Modus (zu Hause oder Ausgehmodus)

NewPing messung(pingTrigger, pingEcho, pingDistanz);
RCSwitch funker = funkSchalter();


//setup bzw. konfiguration
void setup() {
  pinModus(knopfPin,EINGABE);
  pinModus(knopfResetPin,EINGABE);
  pinModus(pirPin,EINGABE);
  pinMode(ledPin,AUSGABE);
  pinModus(buzzerPin,AUSGABE);
  pinModus(steuerLed,AUSGABE);
  funker.sendenAuf(6);
  Monitor.starten();
}

//Funktion zum Anpassen des Modus (zu Hause oder nicht zu Hause)
void homestate(){
  wenn((knopfStatus == AN) und (alarm == AN)){
      schreibeDigital(steuerLed,AUS);
      warte(500);
 }
  wenn((knopfStatus == AN) und (alarm == AUS)){
      schreibeDigital(steuerLed,AN);
      warte(500);

 }
 }
 
 //Funktion, die ausgeführt wird, wenn man nicht zu Hause ist
 void alarmanlage(){
   pirStatus = leseDigital(pirPin);
  wenn (pirStatus == AN) {
    schreibeDigital(buzzerPin, AN);
    schreibeDigital(ledPin, AN);
    warte(300);
     schreibeDigital(buzzerPin,AUS);
  }
   
   sonst {
     schreibeDigital(buzzerPin, AUS);
  }
 }
 
 void mamaKommt(){
    schreibeDigital(buzzerPin,AUS);
   warte(300);
    ganzezahl abstand = messung.cmMessen();
   Monitor.neueZeile(abstand);
   wenn((abstand istkleinerals 200) und (abstand != 0)){
         funker.einSchalten("11011","10000");
       }
        wenn(abstand > 200){
         funker.ausSchalten("11011","10000");
       }
 }
 //loop, also die Main-Schleife
 void loop() {
   
   //Bei jedem Schleifendurchlauf werden Status für Pir und Knopf neu erfasst.
  knopfStatus = leseDigital(knopfPin);
  knopfResetStatus = leseDigital(knopfResetPin);
  alarm = leseDigital(steuerLed);
  
   //homestate prüft ob man den (zuhause)Modus umgeschaltet hat
  homestate();
   
   wenn(alarm == AN){
  mamaKommt();
  }
  
  sonst{
   alarmanlage();
 }
  wenn(knopfResetStatus==AN){
  schreibeDigital(ledPin,AUS);
  schreibeDigital(buzzerPin,AUS);
  funker.ausSchalten("11011","10000");
 }
 }

"Mindestanforderung" Diary Control*

/* Dairy Controll
 *  Ist ein kleines Progrmm, dass sicherstellt, dass niemand unbefugtes
 *  am eigenen Tagebuch war.
 *  Dazu liegt das Tagebuch auf einem Knopf, der durch das Gewicht 
 *  des Buches durchgedrückt wird.
 *  Sollte sich jemand das Tagebuch nehmen, ist der Knopf nicht mehr gedrückt
 *  und das löst einen Alarm aus. Sollte das Tagebuch wieder auf seinem 
 *  Platz liegen, geht der akustische Alarm aus. Eine Kontroll-LED
 *  verrät dem Eigentümer jedoch, dass das Tagebuch zwischenzeitig angehoben wurde.
 */
 
 
 
 #include <MyLib.h>

fest ganzezahl knopfPin = 2;     // Pin für den Knopf
fest ganzezahl ledPin = 10;    // Pin für die LED
fest ganzezahl buzzerPin = 9;  // Pin für den Buzzer 
spannungswert knopfStatus = AN; // Wert der erfasst, ob Knopf gedrückt



void setup() {
  pinModus(knopfPin,EINGABE); //Ein Signal kommt rein, wenn Knopf gedrückt
  pinModus(buzzerPin,AUSGABE); //Zum Einschalten des Buzzers muss ein Signal rausgehen
  pinMode(ledPin,AUSGABE);  //Zum Einschalten der LED muss auch ein Signal rausgehen
}

void loop() {
  //aktualisiere pro Schleife einmal, ob der Knopf noch gedrückt ist 
  knopfStatus = leseDigital(knopfPin); 
  //wenn er nicht gedrückt ist
  wenn(knopfStatus istgleich AUS){
  //schalte BUzzer und LED an
    schreibeDigital(buzzerPin, AN);
    schreibeDigital(ledPin, AN);
  }
   //Wenn er gedrückt ist (noch oder wieder)
  wenn(knopfStatus istgleich AN){
  //Stelle sicher dass der Buzzer wieder ausgeht
    schreibeDigital(buzzerPin, AUS);
  //Dei LED bleibt als Hinweis an, sollte jemand einmal das Tagebuch angehoben haben
  }
 }

*Bilder und Baupläne müssen noch hinzugefügt werden

Reflexion Bearbeiten

Schwierigkeiten und Erreichbarkeit der Ziele Bearbeiten

Die Schwierigkeiten und Erreichbarkeit der Ziele sind in diesem Projekt nicht eindeutig zu bestimmen, da sie stark variieren, abhängig von Lerngruppe und Lehrperson sowie deren Stärken und Schwächen.

Erweiterungsmöglichkeiten und weiterführende Themen Bearbeiten

Möglichkeiten das Projekt zu erweitern Bearbeiten

Dieses Projekt kann auf vielfältige Art und Weise erweitert werden. Zum einen lassen sich mit einer Erweiterung der Beispiele wesentlich umfangreichere und komplexere Projekte realisieren. Zum anderen lässt sich mit Hilfe der konkreten Aufgabenstellung Beispielsweise die Vorgabe nur je ein Eingabe-, Ausgabegerät und Kontrollstruktur zu verwenden beliebig nach oben erweitern.

Man könnte auch gänzlich auf die oben genannte "Freiheit" bei der Umsetzung verzichten und ein konkretes Problem der Privatsphäre (z.B. Tagebuch bzw. Handy sicher stellen) darlegen, welches die SchülerInnen auf ihre Art und Weise schützen müssen.

Themen, die sich thematisch an den Inhalt dieses Projektes anschließen Bearbeiten

Datenschutz und Datensicherheit

Software Entwicklung

Eingebettete Systeme