Young Engineers Junior
- Multifunktions Shield auf dem Arduino

Start

Als Young Engineer steht dir ein Multifunktions Shields auf dem µController UNO zur Verfügung.
Hier wirst du die entsprechende Hard- und Software schrittweise kennen und nutzen lernen.

                 

  1. Öffne eine Kopie der Vorlage mit TinkerCAD Circuits und lerne diese kennen.
  2. Lerne zuerst die vier LEDs auf dem Shield anzusteuern.
  3. Mit diesen LEDs programmierst du ein Lauflicht .
  4. Lerne die drei Taster abzufragen und den Buzzer als akustisches Signal einzusetzen.
  5. Multifunktions Shield - 7-Segmente-Anzeige mit Schieberegister 595 - Vervollständigt, aber noch nicht geprüft
  6. Messung von Spannungen - in Arbeit
  7. Zeitmessung in Arbeit

Diese Seite wird gegenwärtig auf ein neues Layout umgebaut und ist nicht nicht fertig.
Die folgenden Links verweisen noch auf die "alten" Seiten.

  1. Multifunktions Shield - LEDs
  2. Multifunktions Shield - Keys und Buzzer - Teil 2
  3. Multifunktions Shield - 7-Segmente-Anzeige mit Schieberegister 595 - Vervollständigt, aber noch nicht geprüft
  4. Messung von Spannungen - in Arbeit
  5. Zeitmessung in Arbeit

TinkerCAD-Circuit-Vorlage "UNO+Multifunktions Shield - LEDs"

Auf deinem Shield sind nebeneinader vier kleine LEDs angebracht. Darunter sind auch deren Vorwiderstände zu sehen, und auch die Verbindung zu den Pins 10 bis 13 sind zu erkennen.
Auch im Schaltplan des Shields finden wir die Schaltung der vier LEDs angeschlossen an diese Pins.
Ausschnitt aus dem Schaltplan Ausschnitt auf dem Shield
Nun wollen wir die Simulation dieser Schaltung schrittweise aufbauen und die Programmierung der LEDs mit dem UNO kennenlernen.

Melde dich bei www.tinkercad.com an und wähle Circuits, um die Übersicht deiner Schaltungen zu bekommen.
Öffne die TinkerCAD-Circuit-Vorlage UNO+Multifunktions Shield - LEDs und wähle im neuen TinkerCAD-Fenster "Kopieren und bearbeiten".

In der Vorlage befinden sich eine Versuchaufbau mit UNO, Steckbrett, LEDs und Widerständen. Die Stromversorgung des Steckbretts übernimmt der UNO und eine LED ist über einen Vorwiderstand an die Spannunsquelle angeschlossen und leuchtet, wenn die Simulation gestartet ist.

Vorgabe auf dem Steckbrett Programm im Code Editor

LED-Zeile auf dem Shield

  1. Öffne die TinkerCAD-Circuit-Vorlage Multifunktionsshield-auf-dem-ardunio-leds und wähle im neuem TinkerCAD-Fenster Kopieren und bearbeiten. Starte die Simulation. Beobachte die LED 13 auf dem UNO. Der Arduino versorgt die linke LED über einen Widerstand mit Strom, sie leuchtet dauerhaft. Stoppe die Simulation.
    Vorgabe auf dem Steckbrett
  2. Vervollständige die Schaltung der zweiten LED und teste deren Funktion in der Simulation.
  3. Füge schrittweise zwei weitere LEDs mit deren Vorwiderständen hinzu und teste diese jeweils in der Simulation.
  4. Wähle den Code Editor und dort Upload und RUN. Auch dadurch wird die Simulation gestartet und die Onboard-LED blickt langsam.
  5. Das folgende Programm ist im Code Editor zu sehen und wird beim Starten der Simulation vom Arduino abgearbeitet.
    Vorgabe auf dem Steckbrett
  6. Verdopple die Blinkgeschwindigkeit der LED.
  7. Entferne die Verbindung der Kathode der linke LED mit 0 V (Masse). Verbinde den nun offenen Anschluß der LED mit dem Pin 13 des Arduino.
    Starte die Simulation. Was beobachtest du?
  8. Verbinde auch die zweite LED statt mit 0 V mit dem Pin 12 des Arduino. Starte die Simulation. Was beobachtest du?
    Ergänze das Programm im Setup-Teil nach der Anweisung pinMode(LED2,OUTPUT); um die folgenden zwei Anweisungen:
    digitalWrite(LED2, HIGH);
    delay(1000);

    Was bewirkt diese Pogrammänderung?
    Lasse auch die zweite LED blinken.
  9. Schließe nun schrittweise auch die dritte und vierte LED an die Pins 11 und 10 des Arduino an.
    Füge in deinem Programm die Anweisungen hinzu, um auch die anderen zwei LEDs blinken zu lassen.
  10. Ändere das Programm, so dass dieses Muster xOxO OxOx wiederholt zu sehen ist. "x" steht für LED AN und "0" für LED AUS.
  11. Im loop()-Teil des Programms gibt es im Beispiel zwei sich wiederholenden Zustände der LEDs.
    Dein Programm soll das Muster 0000 x000 0x00 00x0 000x bzw. xxxx 0x0x x0x0 0xx0 x00x 0000 anzeigen.
  12. Im nächsten Abschnitt Lauflicht lernst du, deinen Programmieraufwand durch eine selbstdefinierte Funktion zu verringern.

Lauflicht

"Bei einem Lauflicht nehmen in einer Kette von Lichtquellen jeweils die nachfolgenden Lichtquellen in einer Richtung nacheinander einen leuchtenden Zustand an, so dass der Eindruck entsteht, die Lichtquelle selbst bewege sich."

Wir verstehen darunter auch alle Lichteffekte, die mit einer in Reihe angeordneten LEDs erzeugt werden können.

  1. Ändere den Programmcode im Code Editor deines Projektes entsprechend der Vorgabe ab und starte die Simulation.

    Im Programm gibt es die selbstdefinierte Funktion ledZeile(), welche das Ein- und Ausschalten der vier LEDs stark vereinfacht.
  2. Programmiere das Muster xxxx 0x0x x0x0 0xx0 x00x 0000 x000 xx00 xxx0.
  3. Das Erstellen verschiedener Lichteffekte und das Zusammnstellen dieser Muster ist nun auch ganz leicht.

Vorlage Taster und Buzzer

Melde dich bei www.tinkercad.com an und wähle Circuits, um die Übersicht deiner Schaltungen zu bekommen.
Öffne die TinkerCAD-Vorlage UNO+Multifunktionsshield-taster und wähle im neuem TinkerCAD-Fenster "Kopieren und bearbeiten".
Benenne diese in mfs-taster um.

Im Schaltplan unseres Multifunktionsshields finden wir die folgenden Bereiche.

  1. Vier LEDs sind über Vorwiderstände an die Pins 13, 12, 11 und 10 des UNO angeschlossen. Hat einer dieser Pins einen L-Pegel, leuchtet die zugehörige LED, sonst leuchtet sie nicht.
    LEDs im Schaltplan LEDs auf dem Shield
  2. Die drei Taster sind mit den Pins A1, A2 und A3 des UNO angeschlossen. Die Taster sind L-aktiv. Ein gedrückter Schalter liefert einen L-Pegel, sonst H-Pegel.
    Taster im Schaltplan Taster auf dem Shield
  3. Der Buzzer, ein Piezo-Summer, ist auf dem Bild gelb markiert. Links daneben sind Transitor und Widerstand aus dem Schaltplan zu finden.
    Ein Buzzer, wie auf dem Shield verbaut, zieht bei einer Spannung von 5V etwa 60 mA Strom. Das ist für einen Arduino-Ausgang zu viel.
    Der Ausgangsstrom pro Pin sollte maximal etwa 30 mA betragen. Durch den Einsatz eines pnp-Transistors wird bei L-Pegel am UNO-PIN 3 nur ein Strom von etwa 0,5 mA notwendig sein.
    Buzzer auf dem Schaltplan Buzzer auf dem Shield
  4. In der Vorlage sind die diese Bereiche auch zu finden. Jedoch fehlen noch einige Teile, die wir schrittweise hinzufügen werden.
    Das Bauteil Piezo in TinkerCAD Circuits hat eine kleinere Leistung, als der auf dem Shield verbaute Piezo-Summer.

Taster und Buzzer

Bearbeite deine Kopie mfs-taster der TinkerCAD-Vorlage UNO+Multifunktionsshield-taster.

  1. Starte die Simulation und stelle den Zustand der LEDs und des Spannungsmesser(Multimeter) fest.
    "Drücke" den linken Taster bis das Multimeter einen konstanten Wert anzeigt. Der Taster liefert einen L-Pegel beim Drücken, sonst H-Pegel.
  2. Schließe den zweiten Taster vollständig entsprechend des Schaltbildes an.
    Vervollständig das Programm, so dass während des Drückens die LED2 ein- sonst ausgeschalten wird
  3. Füge einen dritten Taster hinzu und programmiere seine Reaktion bzgl. LED3, wie bei Taster 2.
  4. Verbinde den offenen Anschluss (positive) des Pieze-Summers über das als Strommesser geschaltene Multimeter mit der positiven Stromschiene.
    Starte die Simulation und miss die Stromstärke durch dieses Bauelement.
    Hilfe?
  5. Füge einen pnp-Transitor und einen Widerstand, wie im Schaltplan angegeben, deiner Schaltung hinzu und verbinde alles entsprechend des Schaltplans.
    Informiere dich dazu über das Schaltbild eines pnp-Transitors und seine drei Anschlüsse Emitter, Basis und Kollektor.
    Der Transistor arbeitet hier als Schalter. Du kannst mehr über den Transitor hier lernen.
    Hilfe?
  6. Miss die Stromstärke vom Pin 3 des UNO durch die Basis des Transistors mit dem Multimeter. Hilfe?
  7. Schalte per Programm den Piezo-Summer einmalig für 0,5 Sekunden ein.
  8. Nach Programmstart den Piezo-Summer drei Mal in zwei Sekunden für je 0,5 Sekunden eingeschalten werden.
  9. Der Piezo-Summer soll während des Drückens von Taster 3 aktiv werden.
  10. Während Taster 2 gedrückt bleiben, soll der Piezo-Summer abwechselnd für 0.5 Sekunden ein- bzw. ausgeschalten werden.
  11. Wenn der Taster 1 nur kurz gedrückt wird, soll die LED 1 für 5 Sekunden leuchten.
  12. Wenn der Taster 2 gedrückt wird, soll die LED 2 für 8 Sekunden leuchten, egal wie lange dieser Taster gedrückt wird.
    Was geschieht, wenn du kurz nacheinander Taster 1 und 2 nur kurz drückst?
    Diese Problem, durch den Einsatz der delay-Anweisung verursacht, führt zur Untätigkeit des UNO.
    Er kann während des Warten keine weiteren Aktionen ausführen
    Die Lösung für dieses Problems werden wir uns später erarbeiten.
  13. Wenn der Taster 2 gedrückt wird, dann schaltet LED 2 auf an. Drücken des Tasters 3 schaltet die LED 2 wieder aus.
  14. Wiederholtes Drücken von Taster 1 soll die LED 1 nun abwechselnd ein bzw. aus schalten.
    Ändere dazu das Programm wie folgt ab.
    In der Variablendekleration vor dem setup()-Teil:

    Im setup()-Teil werden diese Variablen mit sinnvollen Werten belegt.

    Und im loop()-Teil füge die folgenden Anweisungen ein.

    Studiere die Funktion dieses Programms! Lass dir das Programm erklären.
    Mach dir den Vorteil der Definition der Werte AN und AUS bewusst.
    Definiere zwei weitere Werte AUF und ZU für den Zustand eines Tasters und ändere den entsprechend Programmteil ab.
  15. Wenn der Taster 2 gedrückt wird, dann schaltet LED 2 auf an. Drücken des Tasters 3 schaltet die LED 2 wieder aus. Wiederholtes Drücken von Taster 1 soll die LED 1 nun abwechselnd ein bzw. aus schalten. Ändere dazu das Programm wie folgt ab. In der Variablendekleration vor dem setup()-Teil: Im setup()-Teil werden diese Variablen mit sinnvollen Werten belegt. Und im loop()-Teil füge die folgenden Anweisungen ein.

Vorlage: Display mit 4 x 7-Segmente-Anzeige

Für den richtigen Durchblick verlangen die anstehenden Aufgaben das Durcharbeiten der Aufgaben aus TinkerCAD Circuits: 7-Segmente-Anzeige und TinkerCAD Circuits: Schieberegister 74xx595.

Hier siehst du den Auschnitt auf dem Multifunktions Shield mit den beiden Schieberegister 74HC595D und dem vierstelligen 7-Segmente-Display sowie den entsprechenden Ausschnitt aus dem Schaltplan.

Öffne die TinkerCAD-Circuit-Vorlage mfs-4x7-Segment-Anzeige mit Schieberegister 595 und wähle im neuem TinkerCAD-Fenster "Kopieren und bearbeiten".
Benenne deine Kopie in mfs-Display um.

Diese Schaltung kennst du schon weitgehend aus TinkerCAD Circuits: 7-Segmente-Anzeige .

Der Programmcode enthält umfangreiche Definitionen für den Zeichensatz und Funktionen zum Ansteuern des Displays.

Die Funktion display1() muss regelmäßig im aufgerufen werden.
Mittels der Funktion disp_buff() werden die anzuzeigenden vier Zeichen über ihre Nummern in der Zeichentabelle Disp_table[] festgelegt.

Hier findest du das vorgegeben Programm mfs-display-vorlage.ino.

Display mit 4 x 7-Segmente-Anzeige

  1. Arbeite mit der TinkerCAD Circuit mfs-Display, deiner Kopie aus dem Abschnitt "Vorlage: Display".
  2. Starte die Simulation und beobachte die 7-Segmente-Anzeige. Drücke den Taster 1 etwas länger.
    Beim Starten wird der "hALo" im Display ausgegeben. Durch Drücken des Tasters 1 wird der Inhalt der Anzeige geändert.
    Das mögliche kurzzeitige Chaos auf der Anzeige ist eine Folge der Trägheit der Simulation und beim "richtigen" Shield nicht zu beobachten.
  3. Wiederhole diesen Vorgang mit Taster 2 bzw. Taster 3.
    Ändere die Darstellung in der Anzeige beim Drücken der einzelnen Taster und teste diese.
  4. Füge diese neue Funktion hinzu und teste diese.
    Funktion display_zahl()

    Merke: Ganzzahldivision: 1234/100 ergibt 12 und Modulo: 1234%100 ergibt 34
  5. Diese Funktion vermeidet "führende Nullen" vor der anzuzeigenden Zahl. Teste auch diese Funktion.
    Funktion display_zahl9999()
  6. Programmiere ein Programm "Zähler".
    - Taster 1 setzt den Zähler auf Null.
    - Taster 2 erhöht den Zählerstand um 1.
    - Taster 3 vermindert den Zählerstand um 1.
  7. Programmiere ein Programm "Stoppuhr".
    - Taster 1 setzt die Stoppuhr auf Null.
    - Taster 2 startet die Stoppuhr und die Stopuhr läuft, solange der Taster 2 gedrückt ist.
    Nutze die Funktion millis(). Speichere die verschiedenen Zeiten in Variablen startZeit und stopZeit; vom Typ unsigned long.
  8. Ändere dein Programm "Stoppuhr".
    - Taster 1 setzt die Stoppuhr auf Null.
    - Taster 2 startet die Stoppuhr.
    - Taster 2 hält die Stoppuhr an.
    Nutze die Funktion millis(). Speichere die verschiedenen Zeiten in Variablen startZeit und stopZeit; vom Typ unsigned long.

mfs-display.ino | mfs-display-fertig.ino | mfs-display-zaehler.ino

Anwendungen deines Multifunktions Shields


..

  1. Hackatronics-Arduino-Multi-function-Shield.pdf
  2. Cohesive Computing - Hackatronics - Arduino Multi-function Shield
  3. http://files.cohesivecomputing.co.uk/MultiFuncShield-Library-1_2.zip
  4. ...
  5. http://www.cohesivecomputing.co.uk/hackatronics/arduino-multi-function-shield/

..

  1. Hackatronics-Arduino-Multi-function-Shield.pdf
  2. Cohesive Computing - Hackatronics - Arduino Multi-function Shield
  3. http://files.cohesivecomputing.co.uk/MultiFuncShield-Library-1_2.zip
  4. ...
  5. http://www.cohesivecomputing.co.uk/hackatronics/arduino-multi-function-shield/