Von 3 LEDs zur belebten Stadt (ein Baubericht, keine Fragen)
Ich möchte euch zeigen was passiert wenn man zu viel Zeit in 3 LEDs investiert.
Die Story:
Also ursprünglich wollte ich nur eine kleine Ampelsteuerung machen. Rot-Gelb-Grün-Gelb, alles fein. Gut in Österrich haben wir noch Grün-Blinken, also noch eine 5te Phase. Dann dachte ich mir: jetzt braucht es noch eine zweite Ampel, eine dritte/vierte. Dann gingen die Pins aus und ich habe mir das Multiplexing angesehen. Es hat geblinkt und geleuchtet, alle waren happy.
Irgendwann ist das Geblinke fad geworden und ich hätte wohl was Neues machen sollen. Aber dann fand ich diese 16x16 RGB Matrix und ich dachte, das könnte man doch zur Darstellung einer Stadt verwenden, denn so eine Ampel ohne Autos ist ja nur eine halbe Sache. Und in den letzten Tagen ist das jetzt ein ziemlicher Selbstläufer geworden und ich kann das fast nicht mehr stoppen.
Bei 16x16 ist schon einiges mehr an Platz vorhanden als nur eine zentrale Kreuzung. So sind es insgesamt 5 Kreuzungen und 4 Häuserblocks (weiß) geworden. Ein Stadtplan in Excel hat mir sehr geholfen:
Mittig Nord/Süd und Ost/West sind zweispurige Fahrbahnen außen herum gibt es nur jeweils eine schmale Straße. Noch war die Stadt tot.
Also mussten Autos her. Autos die rumfahren und vor Ampeln stehen bleiben und warten bis es grün wird, dann wieder Fahrtaufnehmen, auf den Verkehr achten, keine Unfälle verursachen. Alles kein Problem, wir wir haben hier ja einen Computer der fährt! Die Autos sind einzelne Objekte, ältere und neuere die sich im Wegfinden unterscheiden.
Noch fuhren die Autos ziemlich ziellos hin und her und seit Greta T. darf das ja nicht mehr sein. Ein Auftrag muss her: Also beginnen nun manchmal Häuser zu brennen und ein Feuerwehrauto versucht das Haus zu löschen.
Der nächste Schritt waren Häuser, die verfallen wenn sie nicht rechtzeitig gelöscht werden können und zu Ruinen (gelb) werden.
Aus Ruinen werden mit der Zeit wieder schön angelegte Parks bis diese wieder mit Häusern zugebaut werden. Ein schöner Kreislauf ist entstanden.
Bisher war alles dem Zufall überlassen. Der nächste Schritt war, die Feuerwehr unter Druck zu setzen und einen Brandstifter loszusenden. Bald reichte nicht mehr ein Feuerwehrauto, und es musste eine Feuerwehrzentrale mit zwei Feuerwehrautos her um den Brandstifter in den Griff zu bekommen.
Manchmal wird das Löschen nicht rechtzeitig fertig und das Haus zerfällt zu einer Ruine (gelb). Ist aber zwischenzeitlich kein Problem, denn es gibt einen Gärtner, der aus Ruinen wieder Parks macht. Und um wieder eine schöne Betonwelt zu erhalten, fährt nun auch ein Bautrupp durch die Stadt die Parks Häuser umbaut. Aktuell sieht also mein Kreislauf wie folgt aus:
Leider klappt das mit dem Foto und Video gar nicht. Aber wenn jemand eine 16x16 Matrix hat, der kann ja mal den Sketch probieren.
Benötigt werden:
Arduino Uno (eigentlich ein Nano-Clone mit UNO Bootloader)
WS2812B 16x16 Matrix
Zum Sketch:
Für die meisten Dinge in der Stadt wurden Klassen erstellt.
5 Kreuzungen, 1 große und 4 kleine die jede für sich mehrere Ampeln steuert
Autos mit unterschiedlichen Logiken.
Die Feuerwehrautos sind ziemlich streng mit ihrer Zielfindung, sollte ihr Weg blockiert sein, bleiben sie stehen. Die andern Autos bleiben in Bewegung und versuchen halt eine andere Streckenführung
Die Häuser selber sind keine Objekte, denn mir ist der Speicher ausgegangen. Jedes Haus hat eine Hausnummer (der Pixel wo es steht) sowie eine danebenliegende Straße, damit die Feuerwehr auch zum Haus finden kann.
Die Stadt ist ein Objekt, sie kümmert sich um die aktuell 48 aktiven Häuser, aber auch um die Disaster (Feuer) die den Häusern geschehen kann und verständigt die Feuerwehrzentrale über Brände.
Die Autos vom Gärtner, Bautrupp und vom Brandstifter (Arsonist), sind eigentlich "normale" Autos werden aber von entsprechenden Organisationen dirigiert.
Die Feuerwehrzentrale verteilt wie oben angeführt eingehende Brandmeldungena auf die zwei Feuerwehrautos. Das ist momentan noch eine Funktion und eine Magic-Number ist drinnen. Aber ich dachte es ist Zeit mal den Jetztstand zu zeigen.
31_traffic_town.ino (45.9 KB)