dWb+ Arduino-Demonstrator "v2.0"

vorhergehende Artikel in: dWb+ Hardware
15.02.2017

Ich habe bereits vor geraumer Zeit eine kleine Schaltung aufgebaut, die auf einem Arduino ProtoShield analoge wie digitale Ein- und Ausgänge zusammenfasst. Diese wurde nun erweitert.

Dataflow Workbench dWb+ Bereits vor einigen Jahren packte ich auf ein ProtoShield was nur ging: Als digitale Eingänge gab es da zwei Drucktaster und einen Fototransistor. Digitale Ausgänge stellten vier LEDs dar. Analoge Ausgänge gab es mehrere - einer wurde direkt durch eine LED in der Schaltung abgebildet. Analoge Eingänge gabe es direkt auf der Platine als Potentiometer ausgeführt und weiterhin zwei Adapter, an die sich zum Beispiel Foto- oder Thermowiderstände anschließen ließen.

Die Schaltung wurde über die serielle Schnittstelle gesteuert - ich implementierte ein Protokoll über das es möglich ist, den Zustand der Eingänge abzufragen und den Zustand der Ausgänge zu steuern. Zusätzlich gibt es in diesem Protokoll die Möglichkeit, für zwei der digitalen Eingänge die Interrupts freizuschalten und jeweils einen der analogen Ausgänge in einen Auto-Update-Modus zu schalten. Beispiele für dieses Protokoll - bzw. die Kommandos sind hier zu sehen:

 * ?3S00 - fototransistor abfragen
 * ?3S01 - schalter nahe fototransistor abfragen
 * ?3S02 - aktuell nicht beschaltet  (Digital-Pin 3)
 * ?3S03 - Schalter boardrand abfragen
 *
 * ?4L00x - rote LED schalten
 * ?4L01x - orange LED schalten
 * ?4L02x - gelb LED schalten
 * ?4L03x - grüne LED schalten
 *
 * ?3A00 - Analogwert auslesen für Sensor Nähe grüne LED
 * ?3A01 - Analogwert auslesen für Potentiometer
 * ?3A02 - Analogwert auslesen für Sensor Mitte Platine
 * ?3A03 - Analogwert auslesen für nicht beschaltet  (Analog-Pin 3)
 *
 * ?7a+00300 - analog sampling automatisch anschalten für Sensor Nähe grüne LED mit 300 ms Abstand (Zeit zw 000 und 999)
 * ?7a+01300 - analog sampling automatisch anschalten für Potentiometer mit 300 ms Abstand (Zeit zw 000 und 999)
 * ?7a+02300 - analog sampling automatisch anschalten für Sensor Mitte Platine mit 300 ms Abstand (Zeit zw 000 und 999)
 * ?7a+03300 - analog sampling automatisch anschalten für nicht beschaltet (Analog-Pin 3) mit 300 ms Abstand (Zeit zw 000 und 999)
 * ?4a-00 - analog sampling abschalten für Sensor Nähe grüne LED
 * ?4a-01 - analog sampling abschalten für Potentiometer 
 * ?4a-02 - analog sampling abschalten für Sensor Mitte Platine 
 * ?4a-03 - analog sampling abschalten für nicht beschaltet (Analog-Pin 3) 
 *
 * ?6P00xxx - PWM-Steuerung nicht beschaltet (Digital-Pin 10)
 * ?6P01xxx - PWM-Steuerung nicht beschaltet (Digital-Pin 9)
 * ?6P02xxx - PWM-Steuerung nicht beschaltet (Digital-Pin 6)
 * ?6P03xxx - PWM-Steuerung grüne 5mm LED (000-255)
 *
 * ?3t+0 - Interrupt für Schalter boardrand aktivieren
 * ?3t+1 - Interrupt für aktuell nicht beschaltet aktivieren (Digital-Pin 3)
 *
 * ?3t-0 - Interrupt für Schalter boardrand deaktivieren
 * ?3t-1 - Interrupt für aktuell nicht beschaltet deaktivieren (Digital-Pin 3)

Das Fragezeichen signalisiert den Beginn eines Kommandos, die Zahl dahinter die Länge der noch folgenden zu diesem Kommando gehörenden Zeichen.

Neu hinzugekommen ist, dass ich die Möglichkeit vorgesehen habe, ein per I2C angeschlossenes LCD-Display zur Textausgabe zu nutzen:

 * ?11C0123456789 - obere Zeile I2C-LCD  (C*0*) mit Text füllen (max 16 Zeichen)
 * ?18C11234567890123456 - untere Zeile I2C-LCD (C*1*) mit Text füllen (max 16 Zeichen)

Die erste Stelle hinter dem Buchstaben C sagt aus, ob die Ausgabe auf der oberen oder unteren Zeile erfolgen soll (ich gehe hier von einem 16x2 LCD aus).

Weiterhin habe ich die Möglichkeit hinzugefügt, 2 numerische Werte über eine BarGraph-Anzeige zu visualisieren (Erlaubte Werte zwischen einschließlich 0 und 1023):

 * ?6B00600 - Bargraph in der oberen Zeile I2C-LCD (B*0*) auf rund 2/3 stellen (erlaubte Werte: 0-1023)
 * ?6B10300 - Bargraph in der unteren Zeile I2C-LCD (B*1*) auf rund 1/3 stellen (erlaubte Werte: 0-1023)

Auch hier gibt die Zahl hinter dem B an, ob die obere oder die untere Zeile zur Darstellung benutzt werden soll. Das Ergebnis könnte dann zum Beispiel so aussehen: Bargraph auf 16x2 LCD Bargraph auf 16x2 LCD Bargraph und Text können gemischt werden, wenn jedes der beiden in unterschiedlichen Zeilen dargestellt wird.

Schlussendlich habe ich auch das entsprechende Modul für dWb+ überarbeitet - es bekam zwei neue Eingänge spendiert, die es ermöglichen, die BarGraph-Darstellung beider Zeilen zu nutzen.

Man muss dieses Modul natürlich nicht nutzen: Mit den diversen Modulen, die Eingabedaten in Strings wandeln (und zurück) kann man mit einem generischen Schnittstellenmodul zur Kommunikation über die serielle Schnittstelle mit dieser Schaltung unterhaltsame und lehrreiche Einarbeitung in dWb+ gestalten.

Alle Artikel rss Wochenübersicht Monatsübersicht Codeberg Repositories Mastodon Über mich home xmpp


Vor 5 Jahren hier im Blog

  • xBrowserSync in Docker

    29.03.2021

    Nachdem ich schon längere Zeit nicht mehr über neue Dienste in meinem Docker-Zoo berichtet habe, habe ich in der vergangenen Woche wieder einmal einen Neuzugang begrüßen dürfen...

    Weiterlesen

Neueste Artikel

  • Asymmetrische Kryptographie

    Ich habe mich mit der Idee schon länger getragen: Nochmal einen Rundumschlag zu asymmetrischer Kryptographie zu machen. Dabei werde ich mich auf Demonstrationen der einzelnen Konzepte und Operationen mit Beispielcode konzentrieren und zu jedem der vorgestellten Konzepte mehr oder weniger ausführlich bezüglich der Einsatzszenarien und Vor- und Nachteile Stellung beziehen

    Weiterlesen
  • Windows? Nur noch gegen Bezahlung!

    Ich habe mich nun völlig von Windows - der armseligen Ausrede für ein Computerbetriebssystem aus Redmond - abgenabelt

    Weiterlesen
  • Vergleich Analoger und Digitaler Identitäten

    Eine Präsentation zum besseren Verständnis der Konzepte hinter digitalen Identitäten

    Aktualisierung vom 16. März 2025

    Aktualisierung der Präsentation mit einem Beispiel aus einem Film der 1980er Jahre und Betonung des Fakts, dass das Subjekt überhaupt nicht bemerken muss, dass eine Identität erstellt wird...

    Aktualisierung vom 17. August 2025

    Ein weiteres Beispiel wurde hinzugefügt.

    Aktualisierung vom 30. März 2026

    Aktualisierung der Präsentation: Erläuterung der Möglichkeit, mehr als ein Zertifikat für dasselbe Schlüsselpaar auszustellen und Exkurs zu Transport Layer Security als Beispiel der Forderung des Vorweisens bestimmter Arten digitaler Identitäten.
    Weiterlesen

Manche nennen es Blog, manche Web-Seite - ich schreibe hier hin und wieder über meine Erlebnisse, Rückschläge und Erleuchtungen bei meinen Hobbies.

Wer daran teilhaben und eventuell sogar davon profitieren möchte, muss damit leben, daß ich hin und wieder kleine Ausflüge in Bereiche mache, die nichts mit IT, Administration oder Softwareentwicklung zu tun haben.

Ich wünsche allen Lesern viel Spaß und hin und wieder einen kleinen AHA!-Effekt...

PS: Meine öffentlichen Codeberg-Repositories findet man hier.