\\ Learning\ Codekit\ Code & Interaction 2



CodeKit - Code & Interaktion 2 (Only available in german)

ThermoVideo - Die Temperatur steuert das Video
Mit dem [link 01] Vernier LabPro-Meßcomputer können unterschiedliche Sensoren an den seriellen Port (nur PC) angeschlossen werden. Die Kommunikation mit einer Java-Applikation erfolgt über das Erweiterungspaket "comm.jar", die "communication API" von Sun für Windows-Betriebssysteme. Leider steht für Macintosh-Rechner diese Erweiterung nicht zur Verfügung.
Für die Java-Applikation "ThermoVideo" wird ein LabPro, ein Temperatur-Sensor und die korrekte Installation der "commAPI" vorausgesetzt (siehe [link 02] Installation). "ThermoVideo" misst die Raumtemperatur und steuert mit dem Messwert die Abspielgeschwindigkeit eines Videos. Wird der Sensor erhitzt, läuft das Video schneller. Eingetaucht in Eiswasser kann die Bewegung vollständig "eingefroren" werden. Die gemessene Temperatur wird als Abspielgeschwindigkeit in den entsprechenden Bereich umgerechnet.

LabPro-Thermometer anschließen

Verbinden Sie den LabPro-Computer mit dem seriellen Port Ihres PCs (com1) und schließen Sie den Temperatursensor an "channel 1" des Messcomputers an:
LabPro - Messcomputer und Temperatursensor (Vernier)
Achten Sie darauf, dass die Geräte ausgeschaltet sind, bevor Sie die Stecker verbinden. Der LabPro Messcomputer wurde von der Firma Vernier ursprünglich zur Verwendung im Schulunterricht entwickelt. Eine Vielzahl von Sensoren aus den unterschiedlichsten Bereichen (Physik, Biologie, Chemie) steht zum Experimentieren bereit. Das CodeKit-Programmarchiv bietet Java-Klassen für die meisten LabPro-Sensoren zur Ansteuerung und Auswertung aus einer Applikation heraus ( [link 03] Liste der Sensoren). Auf diese Weise können Interaktionen für die Ansteuerung von Grafik, Sound oder Bewegtbild genutzt werden.

"ThermoVideo" herunterladen und starten

Um die Java-Applikation innerhalb der Entwicklungsumgebung NetBeans starten zu können, werden folgende Dateien benötigt ( [link 04] Download [ZIP | 14,7 MB]):
¬ThermoVideo.java
¬Temperature.java
¬VideoPlayer.java
¬gallop1.mov

Die Dateien finden sich auch im CodeKit-Archiv unter der Rubrik "VideoControl". Die ausführbare Java-Applikation ist "ThermoVideo", die Klassen "VideoPlayer" und "Temperature" sind zum Abspielen eines Videos bzw. zur Ansteuerung und Auswertung des Temperatursensors geeignet. "Quicktime" unterstützt alle gängigen Video-Formate (z.B. .mov, .avi, etc.), nicht jedoch die Komprimierung "mpeg2". Laden Sie die Dateien in Ihr Arbeitsverzeichnis und installieren Sie die Erweiterungen "qtjava.zip" und "comm.jar" (siehe [link 05] Installation).
Starten Sie die Applikation "ThermoVideo". Die Led am LabPro-Messcomputer zeigt den laufenden Messvorgang an, das Video wird gestartet. Testen Sie, ob die Abspielgeschwindigkeit zunimmt, wenn der Sensor erwärmt wird.

Relevante Code-Fragmente

Die Java-Applikation "ThermoVideo" benutzt zum Abspielen eines Videos das CodeKit-Medienobjekt "VideoPlayer". Der Dateiname des Videos wird beim "Instanziieren" des "VideoPlayer"-Objektes angegeben:
Der LabPro-Sensor "Temperature" wird im Java-Code einfach instanziiert:
[link 06] VideoPlayer starten
Es dauert einen Moment, bis der Messcomputer die richtigen Werte liefert (Setup). Eine Schleife wartet, bis die Werte von Null verschieden sind und speichert den ersten "gemessenen" Wert in der Variable "initTemp" ab:
[link 07] Temperatursensor aktivieren
Um danach die Temperatur auslesen zu können, benutzt man die Methode "getTemperature":
[link 08] Initialisierung
Die Temperatur wird in einer Variable "temp" gespeichert und in die neue Abspielgeschwindigkeit "speed" des Videos umgerechnet:
[link 09] Auslesen des Sensors
Beachten Sie, dass die Umrechnung nicht ganz trivial ist. Es wird als Ausgangspunkt die zuerst gemessene Temperatur (beim Start der Applikation: "tempInit") mitverwendet. Um negative Werte zu vermeiden, wird das Quadrat "temp*temp" bzw. "tempInit*tempInit" gebildet.
[link 10] Berechnung der neuen Abspielgeschwindigkeit
Nehmen Sie einen Taschenrechner und berechnen Sie ein paar Werte! Welche Geschwindigkeit ergibt sich, wenn die Anfangstemperatur 22.0 Grad und die aktuelle Temperatur 25.6 Grad ist?
Schließlich wird die neue Abspielgeschwindigkeit eingestellt:
[link 11] ThermoVideo: Neue Geschwindigkeit setzen
Die Run-Methode dieser Applikation wird als Loop ausgeführt, d.h. es wird immer wieder eine Temperatur gemessen, einen Moment gewartet, die neue Geschwindigkeit berechnet und schließlich an das "VideoPlayer"-Objekt gesendet. Zur Übersicht, hier noch einmal die gesamte Run-Methode von "Thermo-Video":
[link 12] Kontinuierliche Messung und Steuerung durch einen Java Thread

Übungen

Übung 1: Eigenes Video


Speichern Sie ein eigenes Video im Arbeitsverzeichnis und ändern Sie den Source-Code entsprechend ab.

Übung 2: Geschwindigkeitsberechnung


Ändern Sie das Programm "ThermoVideo" so ab, dass die Abspielgeschwindigkeit zunimmt, wenn die Temperatur fällt (entgegengesetztes Verhalten wie in der Original-Applikation). Wie müssen Sie die Neuberechnung der Variable "speed" modifizieren?

Übung 3: Zufallsgeschwindigkeit


Diese Übung können Sie insbesondere auch dann durchführen, wenn Sie keinen LabPro-Messcomputer haben. Ersetzen Sie die Temperatursteuerung durch eine Zufallsvariable.
Hinweis 1: Entfernen Sie zuerst alle Komponenten, die etwas mit der Temperaturmessung zu tun haben.
Hinweis 2: Berechnen Sie die Geschwindigkeit des Videos abhängig von einer Zufallsvariablen, die Sie durch den Java-Zufallszahlengenerator erzeugen können.
[link 13] Java-Zufallszahlengenerator
Lösung: [link 14] Screenshot [GIF | 18 KB]

Übung 4: Experts only!


Ersetzen Sie die Temperatursteuerung in "ThermoVideo" durch eine Maus-Interaktion, indem Sie die passenden Methoden und Befehle aus der Java-Applikation "SoundMixer" einfügen.
Liste der Links in der Seite:

[link 01]http://www.vernier.com/
[link 02]http://netzspannung.org/learning/codekit/installation/?lang=en
[link 03]http://www.vernier.com/probes/index.html
[link 04]http://netzspannung.org/cat/servlet/CatServlet/$files/129588/Java%20und%20Film%2
0f%fcr%20CodeInteraktion%20II.zip
[link 05]http://netzspannung.org/learning/codekit/installation/?lang=en
[link 06]images/VideoPlayerStart-gr.gif
[link 07]images/SensorStart-gr.gif
[link 08]images/Init-gr.gif
[link 09]images/GetTemp-gr.gif
[link 10]images/GetRate-gr.gif
[link 11]images/SetRate-gr.gif
[link 12]images/RunMethode-gr.gif
[link 13]images/Zufallszahlen-gr.gif
[link 14]images/Uebung3.gif