Arduino Meetup Dezember 2017
Es war das Vintage Computer Festival !
Faszinierend fand ich, wie die ältesten Computer von den Besuchern
mit Ihren modernsten, tragbaren Computern, bekannter als Smartphone,
fotografiert wurden ;-)
Und wie die Kinder grosse Augen machten, wenn ich sagte, dieses
Gerät sei aus der Zeit vor dem Internet
:-)
Wer es verpasst hat, für den wurden Videos auf der Webseite
verlinkt: https://www.vcfe.ch
Wir haben heute die Geräte in der Hand, früher waren sie auf dem
Tisch und man sass am Tisch.Ganz früher sass man direkt am grossen
Gerät.
Dies ist ein komplettes mobiles Büro, wobei heute praktisch niemand
einen Drucker mitträgt.
Was mich sehr gefreut hat, ist wie man sich gegenseitig hilft, sei
es beim Einrichten oder man druckt für den Kollegen der eine Klappe
verloren hat, mal schnell ein Ersatzteil. :-)
Die EPROM's sind eingetroffen, ich kann meinen Bericht nun
abschliessen:
Da inzwischen die Garantie, dass die Daten zehn Jahre gespeichert
bleiben, abgelaufen ist, sollte eine Sicherheitskopie erstellt
werden.
Und wo wir schon dabei sind, natürlich auch ein entsprechender
Brenner.
Der Vorgang ist sehr einfach: man muss nur die Adresse anlegen, und
kann dann direkt die Speicherstelle lesen oder mit entsprechend
höheren Pegeln direkt schreiben.
Die gelesenen Daten habe ich an meinen Computer geschickt und dort
abgespeichert.
Die Daten zum Schreiben hab ich direkt von der SD-Karte gelesen,
dabei ist mir aufgefallen dass sehr viele Anleitungen und Tutorials
gefährlicherweise mit 5 Volt arbeiten.
Daher möchte ich darauf hinweisen, dass
SD-Karten nur mit 3,3 Volt arbeiten, unbedingt einen
Pegelwandler verwenden, oder es kommt früher oder
später zu seltsamem Verhalten der beschädigten Karte !
Manchmal hat man Pech: Wie ich viel später heraus gefunden hatte,
besteht das ROM aus Programmcode und Teilen Klartext, nur hatte ich
genau an dieser Stelle das Gerät verschoben und dachte nun seinen
Kontakte unterbrochen worden...
Im Idealfall gibt es keine Meldung, alles ist in Ordnung.
Bei Binärdateien wird allerdings nur angezeigt, dass es einen
Unterschied gibt, aber nicht was, wo oder wie viele. Das sagt uns
ein anderer Befehl.
Aber ich hatte Glück, hier ist nach dem Brennvorgang nur genau eine
einzige Speicherstelle abweichend und erst noch „nur“ unvollständig
= Sie konnte mit einem einzigen gezielten Vorgang "nachgebrannt"
werden.
Ich hätte noch andere Sachen ausprobiert, wie zum Beispiel externe
Pull-down und Pull-up Widerstände auf den Adress- und Datenbus
hinzuzufügen, was aber nichts verbesserte.
Oder ein Löschvorgang mit einer UV Taschenlampe. Zum Testen des
Zählers über 3 Ports habe ich den Adressbus mit LEDs dargestellt,
was ein sehr schönes Farbenspiel war :-)
Und nun funktioniert alles *freu* :-)
Übrigens die Uhrzeit stimmte, nur war es nicht Nachmittag...
Diese Meldungen kommen natürlich auch wieder,
oder die, aber es funktioniert so gut mit dem Wechsler, der
Unterbruch ist viel kürzer, dass es viel weniger stört als früher
:-)
Ich hatte ja versprochen, Details zu berichten sobald es fertig ist.
Man kann Eingabegeräte wie Maus oder Tastatur nur an einen Arduino
DUE anschliessen, da nur dieser den USB Host Modus unterstützt.
Die Header-Datei MouseController.h wird geladen, der USBHost
initialisiert und der MouseController gestartet.
Im loop läuft nur dieser eine "usb.Task()".
Eine Bewegung der USB-Maus wird erfasst, in eine Bewegung einer
virtuellen Kugel umgerechnet und diese Bewegung wird Schritt für
Schritt an den Amiga gesendet.
Freundlich wie wir sind, teilen wir natürlich dieses Programm mit
der Community (und der ganzen Welt) und laden es hoch.
Dann definieren wir die Lizenz (Wissen soll frei zugänglich sein)
Und schreiben noch eine Readme-Datei dazu, damit Interessierte
möglichst schnell einen Überblick über das Programm erhalten.
Um das Programm herunterzuladen, wird lediglich eine Adresszeile
benötigt:
Bei Linux und Mac sind die benötigten Programme bereits vorhanden,
hier zu sehen wie man im Terminal/Kommandozeile ins Arduino
Verzeichnis wechselt
und das neue Programm genau an dieser Stelle einfügen kann.
Mit dieser interessanten Überschrift, die ich irgendwo mal gelesen
habe, steigen wir tiefer in die Materie ein.
Entschuldigung, diesen Witz konnte mir nicht verkneifen ;-)
Wer einmal bei einem Problem in der Programmiersprache "C" im
Internet gesucht hat, wird einen eindeutigen Namen zu schätzen
wissen. ;-)
Wenn ich alleine arbeite und das Programm nie wieder ändere, ist
alles OK.
("Einweg" Programme benötigen auch keine Kommentare, sonst bitte,
bitte immer Kommentare verwenden !)
Wenn ich aber beim Ändern einen Fehler gemacht habe, ich es sehr
praktisch, wenn ich meine Änderungen sichtbar machen kann.
Ganz besonders wichtig wird diese Funktion, wenn mehrere
Programmierer daran arbeiten, denn mehrere Programmierer sind
schlimmer als mehrere Köche ! ;-) (SCNR)
Man kann chronologisch geordnet also mehrere Versionen verwalten,
aber Vorsicht: Das ist kein Ersatz für
Backup's !
Wenn man kleine Verbesserungen hinzufügt, funktioniert dies sehr
gut. Für grössere Änderungen oder wenn man mal etwas anderes
ausprobieren möchte...
...gibt es die Möglichkeit, einen neuen, getrennten Baum zu
erstellen und mit diesen zu arbeiten, unabhängig und getrennt vom
ursprünglichen Programm.
Da ja alle von der Cloud sprechen, wollen wir das auch tun.
Man kann von dieser Cloud Dateien direkt oder via Web-Browser auf
seinem Computer laden.
Wer selbst ein Konto bei diesem Anbieter eröffnen möchte, kann dies
für öffentliche Projekte kostenlos tun,
für Private/nicht-öffentliche Projekte und Firmenprojekte ist eine
Gebühr zu entrichten. Andere Anbieter haben andere Preismodelle.
Wenden wir uns nun den Fachausdrücken zu.
Ein Repository (hört man auch oft in der Linux Welt) ist ein
verwaltetes Verzeichnis, oft mit Versionsverwaltung.
Um ein Programm das erste Mal mit allem drum und dran wie
Unterverzeichnissen auf einmal zu laden, kann dies mit dem clone
Befehl gemacht werden.
Für einzelne Dateien oder um später Aktualisierungen zu laden,
können diese mit dem fetch Befehl geholt werden
und können anschliessend mit dem merge Befehl eingepflegt
werden (also mit Versionskontrolle hinzugefügt werden).
Bequemer geht beides zusammen (fetch und merge) mit dem pull
Befehl.
Die Versionskontrolle läuft nun lokal in meinem Verzeichnis.
Wenn ich etwas in einer lokalen Datei geändert habe, muss dies mit
dem commit Befehl der Versionskontrolle mitgeteilt werden
damit diese meine Änderungen verwalten und ablegen kann.
Idealerweise, zur besseren Rückverfolgung und Übersicht, versieht
man seine Änderungen mit einem Kommentar.
Es hat sich bewährt, viele kleine Änderungen zu "commiten", als
alles auf einmal in einem grossen, unübersichtlichen Brocken. (Das
ist bittere Erfahrung...)
Aber wenn man nicht der Besitzer des Repository ist oder nicht zu
den Entwicklern mit Schreibgenehmigung gehört, kann man mit dem push
Befehl nichts hochladen...
Man kann aber mit dem fork Befehlen eine Kopie in einem
eigenen, getrennten Repository erstellen und dort die Änderungen
einfügen.
Nun kann man alleine oder im Team dort weiter arbeiten, entwickeln,
tüfteln und ausprobieren.
Wenn es ein öffentliches Repository ist, können andere Benutzer
dieses verwenden und die Verbesserungen, Änderungen oder neuen
Funktionen nutzen.
Wenn eine neue Funktion oder Verbesserung so gut ist, dass man sie
dem ursprünglichen Team oder Besitzer vorschlagen möchte...
...kann mit einem pull request der Vorschlag an das Team
oder an den oder die Besitzer des ursprünglichen Repositories
gesendet werden.
Wo wir schon bei rauchenden Köpfen sind...
... möchte ich empfehlen, das WLAN auszuschalten wenn es nicht
benötigt wird, eine Zeitschaltung oder Nachtschaltung haben viele
Modems / Access Points / Internet Boxen bereits eingebaut.
Während der Schlafenszeit sollte es nicht laufen und während der
Arbeitszeit nützt es nichts, da ja sowieso niemand zuhause ist.
Ausschalten könnte gut sein für die Gesundheit (könnte, jetzt bitte
keine Diskussionen), spart Energie
und schützt vor Einbrüchen, denn was ausgeschaltet ist, kann nicht
angegriffen werden.
Alle Folien der bisherigen Arduino Abende können neu auf dieser
Webseite nachgelesen werden :-)
Mit knapper Mehrheit wurde C gewählt, der nächste Arduino Abend
findet also am zweiten Montag, dem 8. Januar 2018 statt.
Damit gebe ich das Mikrofon weiter.