Den schon vorhanden Code, habe ich auf eine objektorientierte Struktur umgeschrieben, damit man einen besseren Überblick hat und die Wetterdaten und Töne für die einzelnen Städte besser handhaben kann. Zudem war es vor allem auch für die Tonüberblendung notwendig
Bei der Schaltung für den Ventilator und den Motortreiber bin ich erst einmal auf Schwierigkeiten gestoßen, obwohl ich eigentlich alles schon richtig gemacht und verbunden habe (siehe Fotos unten). Der Motortreiber wollte einfach nicht funktionieren. Es stellte sich aber schließlich heraus, dass man den Motortreiber über den Enable-Pin komischerweise auf „LOW“ stellen muss, damit er überhaupt erst funktioniert.
Über den Motortreiber steuere ich einen Ventilator von Conrad.
Die Lichteffekte muss ich wahrscheinlich über normale Leuchtdioden (ohne stufenlose Regelung) laufen lassen, weil ich für eine oder mehrere RGB-Dioden mindestens 3 von 3 PWM-Arduino-Ausgänge bräuchte, wo ja schon einer für den Motortreiber reserviert ist.
Um bei den XML-Dateien (von Yahoo) auch die Koordinaten auslesen zu können, musste ich statt der proxml-Library für Processing, die Java-Library „jdom“ verwenden, weil man mit proxml nur Attribut-Werte auslesen kann. JDOM ist zudem auch wesentlich flexibler als proxml. Jetzt kann ich auch die einzelnen Stadtobjekte mit ihren Wetterdaten automatisch, durch den ausgelesenen Koordinaten, positionieren lassen.
Weiterhin habe ich auch die Zuordnung der passenden Wettertöne in mein Processing-Code mit implementiert, die umso lauter werden, je näher man an die einzelnen Städte kommt.
Möglichkeiten für die Positionierung des Schirmes:
Die einfachste Möglichkeit ist es natürlich mit einer Webcam den Schirm über eine farbige Leuchtdiode zu tracken. Man braucht aber eine ziemlich großen Abstand zwischen Karte und Kamera (ca. 5 m für eine 5 m große Karte) und natürlich ein lang genuges Firewire-Kabel für eine iSight-Kamera, dass laut Spezifikation nur für maximal 4,5 m (bei S400-Geräten) ausgelegt ist..
Ich bin auch auf die Idee gekommen, eine Wiimote für die Positionierung einzusetzen. Daraufhin habe ich einige Versuche mit der Infrarotmausfunktion des Nindento-Controllers gemacht, um herauszufinden ob dies überhaupt auch noch funktioniert, wenn die Wiimote (oben im Regenschirm auf die Decke gerichtet) wenn die Infrarotlichter an der Decke hängen würden. Das ging auch überraschenderweise ziemlich gut. Egal wie sie auf den Boden gedreht war, hat die Mauszeigerpositionierung immer in der gleichen Ausrichtung funktioniert. Allerdings habe ich feststellen müssen, dass die kleinste Bewegung in der Neigung, die Positionierung extrem beeinflusst hat. Das ist natürlich schlecht, da man einen Regenschirm normalerweise nie immer komplett gerade trägt. Ein weiterer Minuspunkt ist auch, dass der Bewegungsspielraum immer genauso klein ist, wie der Abstand zwischen den Infrarotquellen (Sensorbar). Man bräuchte so für meine Installation einen riesen Abstand (mind. 5 m) zwischen den Infrarotlichtern untereinander und zwischen Boden und Decke. Und da ist dann auch noch die Frage, ob die Stärke der Infrarotdioden überhaupt für eine solche Entfernung ausreichen.
Um noch eine zusätzliche Alternative zu haben, habe ich mir auch eine weiter Möglichkeit ausgedacht: Wenn man an einem Schirm jeweils oben und unten am Stil eine farbige Leuchtdiode anbringt, kann man die sie nicht nur für die Positionierung von einer Achse verwenden, sondern ach für die Bestimmung der Entfernung (umso weiter weg der Schirm ist, umso kleiner wird der Abstand zwischen Leuchdiode eins und zwei).