Arduino Meetup Dezember 2017

Folie 1



Folie 2



Folie 3

Es war das Vintage Computer Festival !


Folie 4

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


Folie 5

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. :-)


Folie 6

Die EPROM's sind eingetroffen, ich kann meinen Bericht nun abschliessen:


Folie 7

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 !


Folie 8

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...


Folie 10

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.


Folie 11

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.


Folie 12

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 :-)


Folie 13

Und nun funktioniert alles *freu* :-)
Übrigens die Uhrzeit stimmte, nur war es nicht Nachmittag...


Folie 14

Diese Meldungen kommen natürlich auch wieder,


Folie 15

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 :-)


Folie 16

Ich hatte ja versprochen, Details zu berichten sobald es fertig ist.


Folie 17

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.


Folie 18

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:



Folie 19

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.


Folie 20

Mit dieser interessanten Überschrift, die ich irgendwo mal gelesen habe, steigen wir tiefer in die Materie ein.


Folie 21

Entschuldigung, diesen Witz konnte mir nicht verkneifen ;-)


Folie 22

Wer einmal bei einem Problem in der Programmiersprache "C" im Internet gesucht hat, wird einen eindeutigen Namen zu schätzen wissen. ;-)


Folie 23

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)


Folie 24

Man kann chronologisch geordnet also mehrere Versionen verwalten, aber Vorsicht: Das ist kein Ersatz für Backup's !


Folie 25

Wenn man kleine Verbesserungen hinzufügt, funktioniert dies sehr gut. Für grössere Änderungen oder wenn man mal etwas anderes ausprobieren möchte...


Folie 26

...gibt es die Möglichkeit, einen neuen, getrennten Baum zu erstellen und mit diesen zu arbeiten, unabhängig und getrennt vom ursprünglichen Programm.


Folie 27

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.


Folie 28

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.


Folie 29

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...


Folie 30

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...

Folie 31

...kann mit einem pull request der Vorschlag an das Team oder an den oder die Besitzer des ursprünglichen Repositories gesendet werden.


Folie 32

Wo wir schon bei rauchenden Köpfen sind...


Folie 33

... 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.


Folie 34

Alle Folien der bisherigen Arduino Abende können neu auf dieser Webseite nachgelesen werden :-)


Folie 35

Mit knapper Mehrheit wurde C gewählt, der nächste Arduino Abend findet also am zweiten Montag, dem 8. Januar 2018 statt.


Folie 36

Damit gebe ich das Mikrofon weiter.