Inhaltsverzeichnis

4.1. Speaker in OpenRoberta

Speaker werden in nahezu allen Maschinen als akustischen Signal verwendet. Der „Piep-Ton“ hilft uns dabei, nachzuvollziehen, ob zum Beispiel eine Taste auch wirklich gedrückt worden ist oder ein Vorgang abgeschlossen wurde.
Bei uns in der Firma ist immer dann ein lautes Piepen zu vernehmen, wenn die Kaffeemaschine durchgelaufen ist – fallen dir eigene Beispiele ein, an welchen Stellen dir der „Piep-Ton“ in deinem Alltag begegnet?

In dieser Anleitung sehen wir uns gemeinsam an, wie wir selbst einen „Piep-Ton“ mit Hilfe eines Speakers erzeugen können. Dabei soll zusätzlich immer eine rote LED aufleuchten, wenn der Speaker einen Ton abgibt. Danach soll eine kurze Pause folgen und der Speaker anschließend wieder ertönen.

4.1.1. Konfiguration in OpenRoberta

Schritt 1:

Wir starten wie immer mit der ROBOTERKONFIGURATION. Innerhalb der Konfiguration wählen wir die Schaltfläche Aktion mit einem Linksklick aus. 

Abbildung Schritt 1

Schritt 2:

In dem Untermenü finden wir jetzt zwei Blöcke wieder, die auf den ersten Blick nahezu identisch aussehen. Die Blöcke tragen dabei die Bezeichnung „Aktor digital“ und „Aktor analog„.

Zur Erinnerung:
Digitale und Analoge Komponenten unterscheiden sich in der Ansteuerung. Digitales Komponenten werden mit einem HIGH oder LOW Signal (1 oder 0, also EIN oder AUS) angesteuert.
Analoge Komponenten werden immer innerhalb eines Wertespektrums angesteuert. Dieses Wertespektrum ist proportional abhängig von der anliegenden Versorgungsspannung.

Abbildung Schritt 2

Schritt 3:

Wir müssen also jetzt gemeinsam überlegen, um welche Art von Aktor es sich bei unserem Speaker handelt. Hast du eine Idee?

Wir Programmierer übersetzen EIN und AUS immer in 1 und 0 (oder auch HIGH und LOW). Deshalb handelt es sich bei unserem Speaker um einen digitalen Aktor. Wir wählen also den Block für Aktor digital aus und ziehen diesen mit der linken Maustaste in das weiße Feld.

Abbildung Schritt 3

Schritt 4:

Wenn du alles richtig gemacht hast, sollte deine ROBOTERKONFIGURATION jetzt so wie in der Abbildung Schritt 4 aussehen.

Abbildung Schritt 4

Schritt 5:

Weil die Bezeichnung Aktor digital ein wenig irreführend ist, möchten wir auch diesem Baustein einen neuen Namen geben. Wie das geht, hast du bereits in den früheren Lektionen gelernt.

Tipp: Schaue in die Abbildung Schritt 5!

Abbildung Schritt 5

Schritt 6:

Nachdem wir unserem Block jetzt einen Namen gegeben haben (in unserem Beispiel „Speaker“), wählen wir jetzt den digitalen Pin aus.

Kannst du auf deinem Funduino Cube erkennen, welchen Pin wir in unserem Block hinterlegen müssen, damit eine Verbindung zwischen dem Mikrocontroller und unserem Speaker hergestellt werden kann?

Abbildung Schritt 6

Schritt 7:

Genau, das ist natürlich der Pin D7.

Deine ROBOTERKONFIGURATION sieht jetzt so aus wie in Abbildung Schritt 7. 

Toll gemacht!

Jetzt fehlt eigentlich nur noch unsere rote LED

Abbildung Schritt 7

Schritt 8:

… Wie wir diese rote LED zu unserer ROBOTERKONFIGURATION hinzufügen, weißt du natürlich schon längst. Falls nicht, schaue dir die Lektion 1 und 2 noch einmal genauer an. 

Deine fertige ROBOTERKONFIGURATION sieht jetzt so aus, wie in Abbildung Schritt 8 dargestellt. 

Gratulation! Wir haben die ROBOTERKONFIGURATION erfolgreich abgeschlossen und können uns somit dem Programm widmen. 

Abbildung Schritt 8

4.1.2. Beispielprogramm in OpenRoberta

Schritt 1:

Navigiere zuerst in das Obermenü „PROGRAMM„. 

Anschließend wählst du mit einem Klick der linken Maustaste den Menüpunkt Aktion aus.

Abbildung Schritt 1

Schritt 2:

Im zweiten Schritt wählen wir jetzt den Baustein für unseren Speaker aus. 

Den Baustein „Schreibe digitalen Wert an Aktor…“ findest du an sechster Stelle. Diesen Baustein ziehen wir jetzt mit der linken Maustaste in das weiße Feld. 

Abbildung Schritt 2

Schritt 3:

Wir erinnern uns jetzt an unsere ROBOTERKONFIGURATION zurück. 

Da es sich bei unserem Speaker um ein Bauteil handelt, welches mit einem digitalen Signal angesteuert wird, wählen wir innerhalb des Bausteins zunächst „digitalen“ aus.

Abbildung Schritt 3

Schritt 4:

Vielleicht wird es dir schon aufgefallen sein: an unserem Baustein ist ein weiterer Baustein angefügt, welcher einen blauen Hintergrund hat.

Dieser Baustein legt fest, welches Signal an vom Mikrocontroller auf unserem Funduino Cube an den Speaker gesendet werden soll.

Da wir den Speaker zunächst einschalten möchten, tragen wir hier den Wert „1“ ein.

Eselsbrücke: Wenn wir etwas einschalten möchten, wählen wir die eins. 

Abbildung Schritt 4

Schritt 5:

Da wir immer dann, wenn der Speaker einen Ton erzeugt, auch eine rote LED zum leuchten bringen möchten, fügen wir jetzt noch unsere rote LED hinzu. Wie das geht, weißt du natürlich aus den vorherigen Lektionen. 

Wir ergänzen unser Programm durch eine Pause von einer Sekunde.

Abbildung Schritt 5

Schritt 6:

Der zweite Teil der Aufgabenstellung sieht vor, dass wir den Speaker nach einer kurzen Pause wieder ausschalten.

Dies machen wir, indem wir unseren ersten Programmteil noch einmal in unsere Schleife einfügen – diesmal aber mit den Werten „0“ und „aus„. 

Es folgt eine weitere kurze Pause.

Abbildung Schritt 6

Schritt 7:

Toll gemacht! 

Dein Programm sieht jetzt so aus, wie in Abbildung Schritt 7 dargestellt. 

Frage:
In unser Programm haben wir zwei Pausen eingefügt.

Ist das so wirklich sinnvoll, oder könnten wir auf eine Pause verzichten? Wenn ja, auf welche? Kennst du die Antwort?

Abbildung Schritt 7

4.1.3. Programmcode in der Arduino Synthax

				
					int led_rot = 12; // LED Rot an Pin D12
int speaker = 7; // Speaker an Pin D7

void setup()

{
    pinMode(led_rot, OUTPUT); // Die LED Rot ist ein Ausgang
    pinMode(speaker, OUTPUT); // Der Speaker ist ein Ausgang
}

void loop()
{
    digitalWrite(output_speaker, HIGH); // Schalte den Speaker ein (Signal HIGH = 1)
    
    digitalWrite(led_rot, HIGH); // Schalte LED Rot ein (Signal HIGH = 1)
    
    delay(1000); // Pausiere für 1000ms (1 Sekunde)
    
    digitalWrite(speaker, LOW); // Schalte den Speaker aus (Signal LOW = 0)
    
    digitalWrite(led_rot, LOW); // Schalte LED Rot aus (Signal LOW = 0)
    
    delay(1000); // Pausiere für 1000ms (1 Sekunde)
}