Posts

Posts mit dem Label "Entwicklung" werden angezeigt.

Du kommst hier nicht vorbei (Arduino Esplora, Part 6)

Bild
Sicherlich habt ihr entweder am Programcode oder beim Testen der Spielfunktionen bemerkt, dass die Kollisionsabfrage nur bedingt funktioniert. Sie ist zwar einfach, aber hier fehlt die Einschränkung, dass man sich nur von Block zu Block bewegen kann. Offen gestanden war ich kein Fan davon, das sich die Figur weiter bewegt bis der nächste Feld oder Kachel erreicht wurde. Zu dem Thema Spieleprogrammierung und Kollisionsabfrage für 2D Spiele, können verschiedene Lösung im Internet gefunden werden. Ein Beispiel wird hier auf spieleprogrammierer.de/wiki beschrieben, wie man mit Geometrischen Objekten die Kollision Abfragen kann. Die simple Form für die Kollisionserkennung ist das Verwenden von zwei Rechtecken. Im folgenden Code zeigt die Methode die wesentliche Abfrage von überschneidenden Rechtecken. // Kachel Position mit zukuenftiger Position der Figur abgeleichen, // durch ansetzten von Rechtecken und ob diese sich ueberschneiden. boolean checkCollide(byte

Voller Arbeitsspeicher (Arduino Esplora, Part 5)

Bild
Der Arduino oder auch vielmehr der verwendete Mikrocontroller hat für viele Anwendungen genügend Arbeitsspeicher. Im ersten Teil der Blogpost Reihe verwendete ich einen Arduino Nano, der einen ATmega328 hat und einen Arbeitsspeicher von 2kByte besitzt. Der Arduino Esplora verwendet den ATmega32u4 der wiederum 2,5kByte Arbeitsspeicher aufweist. Trotz des etwas größeren Arbeitsspeichers muss für dieses Projekt dennoch sparsam damit umgegangen werden. ATmega328P und ATmega32u4 Arbeitsspeicher verbrauch Ein Sprite Bild besteht selbst aus 160 Bytes. Das klingt jetzt nicht viel, aber verbraucht den Arbeitsspeicher bereits mit über 6%. Würde man die Sprite Animation der Figur nicht mit dem Trick einzelner Bilder spiegeln, dann würden insgesamt 2,92kByte Arbeitsspeicher anfallen. Stattdessen werden momentan 1,12kB verwendet, dass allerdings für das Ziel immer noch zu viel ist. Und dann kommt noch die Karte mit 160 Bytes hinzu, die noch sehr grob ist. Da bleibt am Ende nic

Bibliotheken installieren für den Wemos@Lolin

Bild
Kaum angeschaut, habe ich mir den Wemos mit OLED Display beim Chinesischen Händler bestellt. Dann ca. vier Wochen später lag nun das W emos@Lolin auf meinem Tisch und versuchte gleich ein Beispiel Code darauf zu schreiben. Leider musste ich zunächst feststellen, dass die bereits bei mir installierte Bibliothek nicht dieses Board aufführte. Und damit fing die Abendliche Suche an. Nach kurzer suche fand ich diesen Link zu espressif . Zugegeben wollte ich nicht noch ein Tool installieren, dass mir im Grunde nur die Dateien in das Ziel Verzeichnis kopiert, also klickte ich auf den Download Button von dieser Seite des Github Accounts . Anschließend kopierte ich die Sourcen in den selbst angelegten Ordner " esp32/esp32 " im Unterverzeichnis der Arduino Anwendung " ../Arduino/hardware/ " Nach dem Start der Arduino Anwendung konnte unter Werkzeuge => Bord => WEMOS LOLIN32 ausgewählt werden. Dann noch den Port auswählen und die Verbindu

Karte anlegen (Arduino Esplora, Part 4)

Bild
Eine Figur durch einen leeren Raum zu steuern, ist auf Dauer sehr öde. Man kann nun den Hintergrund zunächst eine Farbe geben, ist aber dennoch sehr eintönig ist. Schauen wir uns andere Spiele an, könnte man meinen, dass alles in der Umgebung in Blöcken unterteilt ist. Und so wird dies auch in diesem Beispiel umgesetzt. Die Karte wird Blockweise angelegt. Das ermöglicht uns weiterhin nur die Bereiche neu zu rendern, die sich auch geändert haben. Karten Eigenschaften Mit der Unterteilung in Blöcken, kann ein Block verschiedene Eigenschaften aufweisen. Hier stellt die '0' die Frei Begehbaren Blocke da, in dem sich die Figur bewegen kann. Der Wert '1' wiederum stellt eine Mauer da, an dem die Figur nicht hindurch gehen kann. Die Fläche eines Blockes ist etwas größer als die der Figur. Daher weist die Kanten länge 16 Pixel mal 16 Pixel auf. Ordnung ist das halbe Leben Zunächst muss vorweg etwas Ordnung eingebracht werden. Zwar habe ich bereits mi

.Net Core und die fehlende Exe

Bild
Für gewöhnlich erwartet man nach dem Kompilieren in Visual Studio, dass sich im Debug oder Release Ordner eine Datei mit der Endung *.exe befindet. Dass die Dot NET Core Anwendung da anders ist, zeigt sich hier spätestens hier, uns mit einer DLL Datei, die sich so zunächst nicht ausführen lässt. Damit sich die Anwendung auch ohne Visual Studio Starten lässt, muss die Konsole geöffnet werden, dann in das Verzeichnis wechselt und dann 'dotnet ConsoleHelloDotNetCore.dll' eingegeben werden. Jedes Mal die Console zu öffnen und bis in das entsprechende Verzeichnis zu Wechsel, kann sich als sehr langwierig und nervig erweisen. Eine einfache Lösung ist, eine Batch Datei (*.bat) zu erstellen, mit der sich dann anschließend wie gewohnt sich das Programm starten lässt. Doppel Klick auf die Batch und die Anwendung läuft.

Arduino Control (Teil 6) - LED über LAN einschalten

Bild
Das Internet der Dinge geht die meisten Wege über eine Netzwerk Verbindung. Mit dem passenden Shield für Arduino kann die Netzwerkverbindung hergestellt werden. Mit relative wenig Programm Code kann eine simple Datenübertragen vom PC an den Arduino versendet werden. Ethernet Shield und LED Für das Beispiel wird das Ziel sein, die LED auf dem Arduino ein und Auszuschalten. Auf dem PC kommt wiederum eine Consolen Anwendung der die Befehle über die LAN Verbindung versenden kann. Der Arduino benötigt für den Empfang den Ethernet Shield , dass wiederum die selbe Verbindung zum Netzwerk hat wie der PC. Grüne Low Current LED mit einem 2,2kOhm Widerstand Consolen Anwendung Fangen wir zunächst mit der Consolen Anwendung an und legen zunächst eine neue Klasse an mit dem Namen 'NetworkHost.cs' . Für die Verbindung wird die Socket Klasse verwendet und ermöglicht die Kommunikation über das Netzwerk. Initial wird die Klasse im Konstruktor mit den wesentl

Bildanimation (Arduino Esplora, Part Teil 3)

Bild
Die Adafruit GFX Bibliothek gibt uns die Möglichkeiten Pixel für Pixel auf das TFT zu schreiben, womit sich dann auch ein Bild zusammen setzen lässt. Bei größeren Bilder sollte klar sein, dass der Bildaufbau mit 16MHz nur langsam abläuft. Als Ziel ist jedoch eine Darstellung zur Laufzeit zu verändert, wie z.B. eine Runde Analoge Anzeige. Relativ schnell stellte sich heraus, dass die Umsetzung einer solchen Anzeige zwar einfach ist, aber ab einer bestimmten Größe zu langsam gerendert wird. Alternative und einfacher ist die das Verwenden von bereits fertigen Bildern in 16 mal 16 Format. Zugegeben ist eine Analoge Anzeige mit dieser Auflösung sehr grob und auf Dauer nicht zu friedend stellend. Eine Low Pixel Figur wiederum würde passen und das kombiniert mit den Tasten, könnte die Figur auch über den Bildschirm gesteuert werden. An dieser Stelle erinnerte ich mich wieder an den Anfang von Octoawesome von Tom Wendel, der in seinen ersten folgen ähnliche Schritte unterna

Netduino Netzwerk Adresse ändern

Bild
Seit langer Zeit hatte ich wieder einen Grund gefunden meinen Netduino aus zupacken und ein altes Projekt zu prüfen. Eigentlich suche ich eine Lösung, wie man eine Verbindung zum Netduino und einem SignalR Service herstellen kann. Zuvor hatte ich vor Jahren ein Beispiel mit WCF geschrieben, dass am Ende sogar relativ einfach war. Aber jetzt zum eigentlichen. Netzwerk, Socket und Netduino Mein Beispiel Projekt verwendete den SimpleSocket aus der Bibliothek Toolbox ( https://netmftoolbox.codeplex.com/ ). Damit lässt sich in wenigen Codezeilen eine Verbindung zu einem anderen System über Netzwerk herstellen. Der Folgende Code Beispiel zeigt den Grundsätzlichen Aufbau einer Verbindung. SimpleSocket socket = new IntegratedSocket(this._IpAddress, 80); socket.Connect(); socket.Send("Hallo Welt"); socket.Close(); Das Problem Die Verbindung blieb immer bei der Methode "socket.Connect()" stehen. Das kann dadurch festgestellt werden, wenn nach einer Weile nicht

Umzug auf passende Plattform (Arduino Esplora, Part 2)

Bild
Nachdem ich viel probiert habe und dabei fast ein Spiel zusammen hatte (Nicht Pong, das ist zu einfach), entschied ich den Arduino Esplora zu bestellen. Normalerweise würde ich vom Breadboard umziehen und dann etwas selbst auf eine Platine mit den entsprechenden Komponenten zusammenlöten. Aber warum nicht eine fertige Plattform nutzen. Etwas enttäuschend, fand ich die Suche im Internet, weil ich keine aufwendigen Spiele für den Arduino Esplora entdeckt habe. Damit will ich das nicht schlecht reden, aber etwas mehr hatte ich schon erwartet. Der Umzug vom Breadboad auf den Arduino Esplora ist in wenigen Schritten erledigt. Als erstes werden die Adafruit Bibliotheken gegen die 'Esplora.h' und 'TFT.h' ausgetauscht. Die Beschreibung an welchen Pin vom TFT zum Arduino Uno (oder Nano) verbunden werden soll, sowie auch die Pin Variablen entfallen. Das Initialisieren der Pins sowie auch das TFT Display, wird durch ein 'EsploraTFT.begin()' ersetzt. Die Steuerricht

Bewegter Punkt (Arduino und TFT, Part 1)

Bild
Eigentlich sollte das Display für die Wiedergabe der Messwerte meiner Wetterstation wieder geben. Aber zu diesen Zeitpunkt war nicht klar, welche Möglichkeiten eigentlich mit dem TFT und vor allem mit dem ATMega328 mit den 16MHz machbar sind. Nur blanke Werte sind für meine Anforderung zu wenig und daher galt zunächst herauszufinden, wie schnell sich die Inhalte auf dem Display aktualisiert werden können. Punkt bewegen Das einfachste ist, man lässt einen Punkt von A nach B bewegen. Aber besser ist, wenn man die Bewegungsrichtung des Punktes selbst zur Laufzeit bestimmen kann. Daher wurden auf dem Breadboard, noch vier Taster an den Arduino Angeschlossen. Das sieht etwas wirr aus und was vielleicht nicht gleich zu erkennen ist, dass an den Button jeweils ein 4,7 Kilo Ohm Pull-Down Widerstand gesetzt sind. Das ist erforderlich, damit die Kontakte an dem Arduino keinen Zufälligen Zustand einnehmen. Denn selbst hohe Luftfeuchtigkeit, kann zu unerwünschten Effekten fü