Young Engineers Junior
Multifunktions Shield auf dem UNO

Dein Multifunktions Shield

Als Young Engineer steht dir ein Multifunktions Shields auf dem µController UNO zur Verfügung.
Hier wirst du lernen, dieses Shield in Verbindung mit verschiedenen Sensoren und Aktoren zu nutzen.

In dieser Lerneinheit lernst du die Befehlsbibliothek MultiFuncShield.h zu nutzen.
Weiterhein werden wir eine Reihe von Sensoren mit deinen Shield verbinden und deren Ausgaben auf dem Display anzeigen.
Für einige mögliche Anwendungsmöglichkeiten des Shields sollst du jeweils ein Programm erstellen.
Lass dich überraschen ... !

Du solltest die Lerneinheit TinkerCAD Circuits: Multifunktions Shield auf dem UNO ⇑ weitgehend durchgearbeitet haben bzw. recht gut kennen. Viele Aufgaben aus der Lerneinheit kannst du jetzt mit deinem "richtigen" Multifunktions Shield praktisch ausführen.
Umgekehrt wird es dir nicht gelingen, die folgenden Aufgabe mit der Simulation in TinkerCAD zu bearbeiten, da die Simulation bestimmte Einschränkungen hat, dir in TinkerCAD nur relativ wenige Bauelemente als Sensoren und Aktoren zur Verfügung stehen und wir in TinkerCAD Circuits (bisher) keine neuen Befehlsbibliotheken einbinden können.

Die folgende Aufgabe solltest du nach Durcharbeiten der Aufgaben aus TinkerCAD Circuits: Multifunktions Shield auf dem UNO ⇑ lösen können.
Erstelle ein Programm nach folgenden Vorgaben:

  1. Nach Programmstart werden folgende Anweisungen ausgeführt:
    - Alle vier LEDS sollen nacheinander im Sekundentakt an- und ausgehen.
    - Der Buzzer gibt dabie je für 0.2 Sekunden ein akustisches Signal.
    - Danach werden im Display die Buchstabe "AbCD" für 2 Sekunden angezeigt.
    - Danach wird die Anzeige auf "0000" gesetzt.
  2. Danach wird wiederholt ausgeführt:
    - Das Drücken des Tasters 1 startet eine Stopuhr, deren Zeit im Display angezeigt wird. - Das Drücken des Tasters 2 hält die Stoppuhr an.
    - Mit Taster 3 wird die Anzeige auf "0000" gesetzt.

Das Multifunktions Shield

Schaltplan des Shields

Befehlsbibliothek / Library MultiFuncShield.h

Diese Bibliothek stellt uns für das Multifunktions Shield eine Klasse bereit.
Wir werden diese nun schrittweise kennenlernen.

In der Schule ist diese Library schon auf den Computern verfügbar.
Steht dir die Befehlsbibliothek noch nicht zur Verfügung, dann füge diese
- im Arduino Web Editor mit dem Library Manager
- in der Arduino IDE per Menü: Sketch - Bibliothek einbinden - .ZIP-Bibliothek hinzufügen ...
deiner Programmierumgebung hinzu.
Lade dazu die Datei MultiFuncShield-Library-1_2.zip ⇓ herunter.

Die folgenden Links geben umfangreiche Informationen zu dieser Befehlsbibliothek.

  1. Hackatronics-Arduino-Multi-function ⇑ auf Cohesive Computing, unterteilt in drei Bereiche:
    - Basic Input / Output ⇓
    - Reading Sensors ⇓
    - Real World Applications ⇓
  2. Hackatronics-Arduino-Multi-function-Shield.pdf ⇑ auf Cohesive Computing enthält obiges Angebot mit extra Informationen

MultiFuncShield
MFS					
initialize			
isrCallBack			
setTimer, getTimer			
write, blinkDisplay, setDisplayBrightness
wait				
writeLeds, blinkLeds, 
beep, setBeepOffPeriod
queueButton, getButton			
initPulseInCounter, getPulseInPeriod, getPulseInTotalCount, resetPulseInTotalCount, setPulseInTimeOut	

initSonar, getSonarDataCm		
initLM35, getLM35Data			

		 

Methode (klasseneigene Funktion) zur Ausgabe auf dem Display

display.ino ⇑

Die folgenden Codeabschnitte aus der MultiFuncShield.h sind hier wesentlich.

  1. Statt 0 oder 1, false oder true, LOW oder HIGH können nun auch die Bezeichner ON oder OFF geschrieben werden.
  2. Die UNO-Pins 4,7 und 8 des UNO sind für die Ansteuerung des Displays vorgesehen. Sie sind mit einem Schieberegister 74HC585 verbunden.
  3. Mittels der folgenden Bezeichnern können die einzelnen Ziffern ausgewählt werden.
    Schreibe im Beispiel in der Zeile 23 statt DIGIT_ALL den Ausdruck DIGIT_1|DIGIT_3.
    Der Operator '|' ist das bitweise ODER, der veränderte Ausdruck ergibt nun den Wert 5, statt bisher 15.
    DIGIT_1|DIGIT_2|DIGIT_3|DIGIT_4 ist somit gleichbedeutend mit DIGIT_ALL
  4. Die Methode (klasseneigene Funktion) MFS.write kann in drei Varianten angewandt werden.

Füge in der Setup()-Funktion die folgenden Zeilen ein.
MFS.write(3.14159); delay(2000); // zeigt " on"
MFS.write("On", 1); delay(2000); // zeigt " on"
MFS.write("OFF", 0); delay(2000); // zeigt "oFF "

Anmerkungen:

  1. Die Methode setDisplayBrightness() lässt sich nicht aufrufen.
  2. Die Methode write() mit einer Zeichenkette als Argument verlangt kein zweites Argument für die Ausrichtung.
    Der zweite Parameter ist optional.
  3. Die Methode write() mit einer ganzen Zahl als Argument kann das zweites Argument für den Dezimalpunkt anwenden.
    Der zweite Parameter ist optional.
  4. Ist die Zahl nicht im Display darstellbar, dann erscheint im Display die Fehlermeldung " E"
  5. Die Methode write() mit einer float-Zahl als Argument braucht das zweites Argument.
    Der Compiler zeigt die Fehlermeldung "call of overloaded 'write(double)' is ambiguous"
    'ambiguous' bedeutet 'mehrdeutig'

Funktionen zur Ansteuerung der LEDs

leds.ino ⇑

Die folgenden Codeabschnitte aus der MultiFuncShield.h ⇑ sind in diesem Abschnitt wesentlich.

  1. Die vier LEDs sind an die Pins 10,11,12 und 13 des UNO angeschlossen.
  2. Mittels der folgenden Bezeichnern können die einzelnen LEDs ausgewählt werden.
    Mit LED_1|LED_4 werden die erste und dritte LED ausgewählt.
    Der Operator '|' ist das bitweise ODER, der veränderte Ausdruck ergibt nun den Wert 9, statt bisher 15.
    LED_1|LED_2|LED_3|LED_4 ist somit gleichbedeutend mit LED_ALL
  3. Die Methoden MFS.writeLeds() und MFS.blinkLeds() schalten die LEDs.

Erstelle mit diesen beiden Methoden einige der dir bekannten Lichtmuster.

Methodenen für den Beeper

beeper.ino ⇑

Die folgenden Codeabschnitte aus der MultiFuncShield.h ⇑ sind in diesem Abschnitt wesentlich.

  1. Der Piezo-Summer ist am Pin 3 des UNO angeschlossen.
  2. Der Beeper wird mittels MFS.beep() eingestellt und aufgerufen.
    MFS.setBeepOffPeriod() ...... .
    "Verwenden Sie diese Option, um die Ausschaltzeit einzustellen, während der Signalton aktiviert ist."

Erstelle ....

Methodenen für den Buttons

buttons.ino ⇑

Die folgenden Codeabschnitte aus der MultiFuncShield.h ⇑ sind in diesem Abschnitt wesentlich.

  1. .... .
  2. ... Mit LED_1|LED_4 werden die erste und dritte LED ausgewählt.
    Der Operator '|' ist das bitweise ODER, der veränderte Ausdruck ergibt nun den Wert 9, statt bisher 15.
    LED_1|LED_2|LED_3|LED_4 ist somit gleichbedeutend mit LED_ALL

Erstelle ...

Nutzung des Seriellen Monitor

Im Abschnitt Buttons wurde der Serielle Monitor unserer Programmierumgebung (IDE / Webeditor) für die Ausgabe der Aktionen an den Tastern genutzt. Der UNO sendete durch sein Programm Informationen an den per USB angeschlossenen PC.

In diesem Abschnitt wird der PC Befehle an den UNO senden, um Aktionen auf dem Shield zu bewirken.

Kopiere das folgenden Programm in deine Programmierumgebung.

Übertrage das Programm nun auf den UNO und starte mit UMSCH+STRG+M den Serielle Monitor in deiner Programmierumgebung
Tippe nun einzelne Ziffern, Buchstaben oder Sonderzeichen in der Eingabezeile des Serielle Monitors ein und drücke "Senden".

  1. Schreibe im Porgramm nun statt    byte zeichen = Serial.read();    eine veränderte Definition  char zeichen = Serial.read();
    Auf dem Seriellen Monitor werden jetzt nicht mehr die Zeichencodes, sondern die Zeichen selbst angezeigt. Beachte: Es gibt nicht sichtbare Zeichen, wie die mit dem Zahlencode 10 und 13 für den Zeilenwechsel, deren Wirkung von der Einstellung.
  2. dd
    void loop() {
      if (Serial.available()) {
        byte zeichen = Serial.read();
        if (zeichen='1') {
          MFS.writeLeds(LED_1, ON);
          Serial.println(zeichen);
        }  
      }  
    }
    

PulseIn-Methodenen

...

PulseIn.ino ⇑

Die folgenden Codeabschnitte aus der MultiFuncShield.h ⇑ sind in diesem Abschnitt wesentlich.

  1. Die vier LEDs sind an die Pins 10,11,12 und 13 des UNO angeschlossen.
  2. Mittels der folgenden Bezeichnern können die einzelnen LEDs ausgewählt werden.
    Mit LED_1|LED_4 werden die erste und dritte LED ausgewählt.
    Der Operator '|' ist das bitweise ODER, der veränderte Ausdruck ergibt nun den Wert 9, statt bisher 15.
    LED_1|LED_2|LED_3|LED_4 ist somit gleichbedeutend mit LED_ALL

Bluetooth-Module HC-0x

Wir nutzen Module vom Typ HC-05, HC-06 und HC-08

Auf dem Multifunktionsshield ist ein Steckerblock aus 4x3 Steckern. Vier Stecker für die Verbindung zu GND, vier für die Verbindung mit +5V und vier jeweils zu den Arduino-Pins 5, 6,9 und A5.
Verbinde jeweils mit vier Verbindungskabel (weiblich - weiblich) die Pins des BT-Moduls mit dem Shield:

MFS Farbe HC-06
GND blau GND
VCC rot 5V
5 grün TXD
6 gelb RXD

Testprogramm der Kommunikation per Bluetooth zwischen Handy und Computer über den Seriellen Monitor des Arduino

Übertrage das folgende Programm suf deinen Arduino mit dem Multifunktionsshield.

Öffne den Seriellen Monitor.
Verbinde (Paire) dein Handy mit deinem BT-Modul.
Installiere dieses Bluetooth-Termnial auf deinem Android-Handy.
Starte das Bluetooth-Terminal auf deinem Handy und verbinde dich mit dem BT-Modul.
Übertrage Daten in beide Richtungen.

Wir erweitern das Programm durch die Fähigkeiten der Befehlsbibliothek / Library MultiFuncShield.h!

Der Befehl MFS.blinkLeds() funktioniert wegen Timerkonflikten NICHT!
Was geschieht, wenn du über den seriellen Monitor die Zeichenfolge 1 2 1 2 1 2 1 2 1 2 sendest?

Wir erweitern das Programm um weitere Funktionen.

  1. HC-08 der Elegoo-Module
  2. funduino.de - 18. Bluetooth Modul HC-05 und HC-06 mit Arduino verwenden
  3. sad

APC220 Wi-Fi- Kommunikation Modul USB Adapter Kit für Arduino

https://www.amazon.de/APC220-Wi-Fi-Kommunikation-Adapter-Arduino/dp/B00Q6WR5EA

http://www.produktinfo.conrad.com/datenblaetter/175000-199999/191668-an-01-de-WIRELESS_KIT_APC220.pdf