McPrx-Logo

Mikrocontrollerpraxis

Flowcode und Arduino - Signaleingabe und Tonausgabe

In den ersten beiden Experimenten mit dem Arduino Nano haben wir über Digital-I/O-Pins immer Leuchtdioden angesteuert. Um auch eine akustische Signalausgabe zu realisieren, verbinden wir das Digital-I/O-Pin 8 mit einem kleinen Piezo-Tongeber (auch als Buzzer bezeichnet). Die Digital-Pins können alternativ auch für Eingaben genutzt werden, z.B. um den Zustand eines Tasters abzufragen. Wir verbinden dazu den Digital-I/O-Pin 12 mit dem Taster S1 auf unserer Platine. Neben der binären Signalein- und -ausgabe stellt uns unser Arduiono Nano auch acht analoge Eingangs-Anschlüsse (A0 bis A7) zur Verfügung. Über diese Anschlüsse können Signale zur Weiterverarbeitung eingelesen werden, welche in einen bestimmten Spannungsbereich (z.B. von 0V bis 5V) veränderlicht sind. Um auch damit experimentieren zu können, haben wir an A0 ein kleines Dreh-Potentiometer (Poti) angschlossen. Die erweiterte Experimentierschaltung ist in Bild 1 gezeigt. Um bei falscher Programmierung keine Mikrocontroller-Pins zu überlasten, sind die beiden Eingangssignale von Taster und Poti über einen zusätzlichen Schutzwiderstand an den Arduino angeschlossen. Ein Foto des Versuchsaufbaus zeigt Bild 2.

Foto Versuchsaufbau
Bild 2: Versuchsaufbau
Schaltplan
Bild 1: Schaltplan mit Buzzer, Taster und Poti
Flussdiagramm Tasterabfrage
Bild 3: Flussdiagramm Tasterabfrage

Damit wir mit Flowcode nicht jedes Mal bei Null anfangen müssen, öffnen wir einfach ein existierendes Projekt (z.B. das allererste Blinky-Projekt) und speichern es unter einem neuen Namen ab. Innerhalb der Endlosschleife programmieren wir für die Abfrage des Tasters eine Input-Aktion (PORT B, Single-Bit 4) und eine Variable 'Taster' vom Typ Bool als Zwischenspeicher (siehe dazu Bild 3). In einer darauffolgenden Programmverzweigung werten wir den Zustand der Variablen 'Taster' durch einen Vergleich mit 0 aus. Wenn die Bedingung erfüllt ist, soll der Tongeber angesteuert werden. Das erfolgt wieder mit einer Folge von vier Aktionen wie bei der blinkenden LED (Ausgabe 0, Warten, Ausgabe 1, Warten). Die Wartezeiten sind für eine Tonfrequenz von einem Kiloherz auf 500 Mikrosekunden festzulegen. Da der Tongeber am Digital-Pin 8 angeschlossen ist, wählen wir in den entsprechenden Ausgabe-Dialogen jeweils den Controller-Port-Pin: PORTB, Single-Bit 0.

Poti-Abfrage
Bild 6: Poti-Abfrage
Panel
Bild 5: Panel
Components-Toolbox
Bild 4: Components-Toolbox

Um die Stellung des Drehpotis in der Software zu verarbeiten, gibt es in Flowcode in der Command-Toolbox keinen speziellen Aktionsblock. Für weit verbreitete Peripherie-Elemente sind in die Entwicklungsumgebung sogenannte Komponenten integriert, welche über die Components-Tollbox ausgewählt werden können. Zur Verwendung des Potis ist zunächst in der Components-Toolbox im Auswahlmenü 'Inputs' der Punkt 'ADC' anzuwählen (siehe Bild 4). In das Panel wird damit ein Poti-Symbol eingefügt (Bild 5).

Über das Kontext-Menü des Poti-Symbols kann im Menü-Punkt 'Connections' festgelegt werden, an welchen Analogeingang das Poti angeschlossen ist. Standardmäßig ist bereits der Analogeingang A0 ausgewählt. Als nächstes fügen wir im Project-Explorer eine neue Variable 'Poti' mit dem Datentyp 'Int' ein. In den Programmfluß vor die Taster-Abfrage fügen wir jetzt ein 'Component Macro' ein, welches die Funktion 'ReadAsByte' aufruft und das Ergebnis (Return Value) an unsere Variable 'Poti' übergibt (Bild 6). In den Delay-Aktionen der Tonausgabe können wir jetzt die Berechnung 'Poti + 500' übergeben, um über die Potistellung die Ausgabefrequenz zu verändern.

© Heiko Böhmer, Stand: 06.06.16