Dies ist ein Einstiegsprojek zu PnP im Bereich der Softwareprogrammierung. Um zu den anderen Projekten zu kommen, gehe bitte auf die Hauptseite von Plug and Project.
In diesem Projekt sollen die Schülerinnen und Schüler Temperatursensorwerte grafisch darstellen mittels Scratch. Da Scratch beim Einlesen externer Daten begrenzt ist, werden in diesem Einstiegsprojekt für Softwareprogrammierung die Daten vergegeben und müssen „nur“ noch importiert werden im Scratchprogramm.
PnP, Plug and Project, Raspbian, Scratch, Programmieren, Temperatur
In diesem Projekt sollt ihr die Temperaturdaten von einer Datei einlesen und mit diesem einen Tagesgraph darstellen. Dafür benötigt ihr einerseits Scratch und die Datei mit den Temperaturwerten. Die Links findet ihr weiter oben. Es werden nun die einzelnen Bereiche und ein paar wichtige Begriffe erklärt:
Objekte und Bühnen sind das Herzstück von Scratch. Der verschiedenen Programmierblöcke werden in den einzelnen Bühnen und Objekten zusammengesteckt.
Auf dem Bild siehst du im unteren Bereich die weiße Bühne und rechts davon den Fuchs als Objekt. Beides davon ist anklickbar und bietet eine Arbeitsfläche zum Programmieren.
Über die Funktionen in der Mitte kannstdu auch neue Objekte erzeugen oder einfügen. Durch das Interagieren der Objekte funktioniert das Programm.
Vieles kann bei Scratch von selbst entdeckt werden und diese Anleitung dient nicht primär dazu, jeden einzelne Funktion zu beleuchten, dies sollt ihr im Eigenstudium machen. Es werden hier nur die einzelnen Bereiche der einzelnen Blockfunktionen kurz beleuchtet:
Eine Variable bei Scratch ist ein Container für eine Zahl oder für Zeichen. Mithilfe von Variablen kann man verschiedene Bausteine bei Scratch mit der selben Zahl ansteuern (und dadurch, dass man den Wert der Variable verändert, ändert sich auch der Code, die diese Variable benutzen. Dies ist für das nächste Thema wichtig.
Eine Liste enthält mehrere Elemente, die man durch einen gezielten Durchlauf (zum Beispiel in einer Schleife) alle abrufen und ablesen kann. Damit kann man eine große Menge an Daten von einer externen Quelle (zum Beispiel durch eine .txt-Datei) einlesen und damit arbeiten. Das Importieren von Daten funktioniert so, dass man zuerst eine Liste erzeugen muss (der Button dazu ist im Bild rechts zu sehen) und dann auf der Bühne rechts die Liste rechtsklickst und dann auf importieren klickst.
Schleife ist ein allgemeiner Begriff für Blöcke bei Scratch, die es ermöglichen, Code mehrmals auszuführen unter speziellen Bedingungen. Links siehst du die verschiedenen Arten von Schleifen, die ganz kurz von Oben nach Unten beschrieben sind:
Mit Signale kannst du andere Programmblöcke in anderen Objekten starten und so kannst du einen geregelten Ablauf einführen. Wenn du zum Beispiel nacheinander was zeichnen willst, kannst du nach der ersten Zeichnung mit einem Signal die zweite Zeichnung starten.
Zu Beginn wollen wir ein einheitliches (am Besten durch Variablen) dimensioniertes Koordinatensystem für die Temperaturkurve zeichnen. Der Abstand von einem Strich zum Nächsten sollte gleich sein, damit man die richtigen Ergebnisse global einfach eintragen kann.
Wenn du beim Zeichnen einen Fehler machst, kannst du bei dem Bühnen-Objekt unter dem Bereich Mahlstift alle Malspuren entfernen, indem du den Block doppelklickst. Wenn du willst, kannst du das auch in dein Programm einbauen.
Als erster sollte man das Fuchs-Objekte durch einen kleinen Punkt ersetzen und ihn weit unten links händisch positionieren, da unser Koordinatensystem weit nach rechts reichen wird, um alle Daten darstellen zu können. Dies kann man dann oben von der Objektleiste ablesen und mit einem Bewegungsblock bei jedem Programmstart auch fixieren.
Danach gehört der Malstift in der richtigen Farbe abgesetzt und du musst dir überlegen, wie du auf der y-Achse die Temperatur und auf der x-Achse die Zeitabtastungen gleichmäßig aufträgst.
Zur Temperatur sei gesagt, dass du wahrscheinlich zwischen 35 und -10 Grad auftragen willst, also hast du sieben Querbalken (Unterteilungen auf der Koordinatenachse) nach oben und zwei nach unten.
Leider kann man keine Buchstaben oder Zahlen auftragen, also muss dein Koordinantensystem zur Zeit noch ohne Beschriftung auskommen.
Am besten legst du einen fixen Abstand (Variable) fest, bei denen du auf der y-Achse einen Querbalken pro fünf Grad Celcius machst und zeichnest dann einen Unterteilungsstrich, gehst wieder zurück auf die Koordinatenachse und wiederholst das, bis du genug Unterteilungen hast um gut alle Temperaturen einzeichnen zu können.
Hinweis: Wenn du den negativen Wert einer Variable brauchst, kannst du ganz einfach mit der Rechenoperation < 0 - Variable > arbeiten.
Auf der x-Achse machst du das gleiche, doch musst du hier bedenken, dass wir in in unserer Temperatur-Datei 3 Messungen pro Stunde haben, für einen Tag lang. Außerdem ist das Zeichenbrett in x-Richtung nur ungefähr 230px breit (Bemerkung: euer Nullpunkt ist wahrscheinlich im Minusbereich bei der x-Achse). Ihr müsst also 72 Striche auf der x-Achse aufzeichnen, bevor das Zeichenbrett endet.
Du wirst vieles nach dem Trial-and-Error Prinzip ausprobieren müssen, doch wenn du fertig bist, solltest du ein fertiges und schönes Koordinatensystem haben, das ähnlich ausschauen soll, wie das meinige:
Wenn du nicht weiterkommst, gibt es weiter unten ein Bild mit meinen Code für das Koordinatensystem. Doch Ziel dieser Aufabe ist, dass du das Koordinatensystem selbst zeichnen und damit weiterarbeiten kannst.
Zu Beginn der zweiten Aufgabe benötigen wir wieder ein Objekt, das uns als Stift zum Zeichnen dient. Dies kann man zum Anfangspunkt des Koordinatensystems setzen, die Koordinaten sollte ja schon in Variablen gespeichert sein.
Nun benötigen wir eine Liste mit den Temperaturwerten. Weiter oben gibt es einen Link zu der Temperaturdatei.
Um die Datei einspielen zu können, musst du eine neue Liste erstellen und auf der Zeichenfläche die Liste rechtsklicken und Importieren auswählen. Nachdem du die Datei ausgewählt hast, sollte es so wie im Bild aussehen.
Nun musst du eine Schleife bauen, die sooft duchläuft, wie es Objekte in der Liste gibt. Für jeden Wert musst du auf dem Koordinatensystem bei der x-Achse um einen Balken weitergehen. Du kannst dir davon viel von der Erzeugung der x-Achse des Koordinatensystems entnehmen.
Jetzt musst du noch die y-Koordinate richtig Dimensionieren, sodass es mit der Beschriftung der y-Achse übereinstimmt. Danach setzt du die y-Koordinate des Objekts zurück auf den Balken der x-Achseund durch den automatischen Schleifendurchlauf (vergiss nicht den Zähler der Schleife zu erhöhen, wenn du einen verwendest) sollten nun alle Temperaturdaten richtig eingetragen werden.
Stefan Meier
Stefan Meier
27.12.2016
erstellt von Simon Marik 2017 Universität Wien