entrada-POST

Willkommen zu einem neuen Beitrag des Programmierkurses für Maker mit Arduino und Protocoder! In dieser Kurseinheit verwenden wir zwei Bat-Ultraschallsensoren, um die Entfernung zu messen, in der sich unsere Hand befindet. Anschließend verwenden wir einen kleinen Summer, den buzzer, um einen Klang zu erzeugen.

Materialliste

  • ZUM BT-328, Arduino-Platine oder kompatibel
  • 2 x Bat-Ultraschallsensoren
  • Summer-Modul

Konzepte, die wir kennenlernen werden

In diesem Beitrag lernen wir, wie man einen Ultraschallsensor dazu verwendet, Entfernungen in Zentimetern zu messen  und verwenden die Funktion Tone von Arduino dazu, mit dem Summer Töne abzugeben. Um die Bat-Ultraschallsensoren anzuschließen folgen wir den Angaben in der Tabelle:

BAT Modul 1 BAT Modul 2
VCC VCC VCC
GND GND GND
ECHO Pin 8 Pin 9
TRIGGER Pin 10 Pin 11

Auf dem nächsten Bild siehst du wie die Module mit der Platine verbunden werden.conexion_theremin

Der Code

Im Arduino-Code beginnen wir damit, die globalen Variablen zu benennen, die sich in diesem Fall nur auf die Verbindungen der zwei Pins beziehen.

Anschließend initialisieren wir das Programm mit der setup-Funktion:

In dieser Funktion geben wir an, welche Pins als Eingang, INPUT, fungieren und welche als Ausgang, OUTPUT. Der Code der loop-Funktion lautet:

Zunächst deklarieren wir die lokale Variable frec_maxima, die Arduino angibt, welches die höchste Frequenz ist, bei der der Summer erklingt. Anschließend benennen wir die Variablen distancia_frecuencia und distancia_tiempo, die die Entfernung speichern, die bei den Ultraschallsensoren ausgelesen wurden. Es handelt sich um die Entfernungen, die verwendet werden, um die jeweiligen Frequenzen des Klangs und die Dauer jedes “Tons” zu verändern. Für das Auslesen der Entfernung verwenden wir die distance-Funktion, welche die Werte, die wir ihr aus dem Hauptcode senden, die Nummer des Trigger-Pins und das Echo des Ultraschallsensors als Argumente nimmt. Wenn du mehr über den Ultraschallsensor erfahren möchtest, kannst du dir dieses Tutorial auf der Seite von Arduino ansehen. Der Code der distance-Funktion lautet:

Ihr werdet sehen, wie diese Funktion die TP_init-Funktion aufruft, der wir als Argument die Daten der Pins senden, die wir in der loop-Funktion an erster Stelle angegeben haben. Wir können problemlos Daten von einer Funktion an eine andere senden. Die Funktion vTP_init besitzt den folgenden Code:

In dieser Funktion ändern wir den Zustand der Pins und senden verschiedene Signale von 2 bis 10 Millisekunden über den Trigger-Pin des Ultraschallsensors. Anschließend verwenden wir die Funktion pulseIn im Echo-Pin, um die Zeit zu berechnen, die der Pin benötigt, um seinen Wert von oben nach unten zu ändern. Diese Zeit entspricht derjenigen, die vergangen ist, bevor der ausgesendete Impuls wieder empfangen wurde. Wenn du mehr über diese Funktion erfahren möchtest, kannst du auf der Referenzseite von Arduino zu pulseIn nachsehen. Die Funktion TP_init gibt den Wert der Funktion pulseIn in Millisekunden aus und in der Funktion distance verwenden wir den Wert in Millisekunden, den wir aus der Berechnung der Entfernung, in der sich das Objekt befindet, erhalten haben. Sobald wir die Entfernungen für beide Ultraschallsensoren berechnet haben, verwenden wir die Funktion constrain, die wir bereits im vorigen Kapitel gesehen haben, um festzulegen, das sich die ausgelesenen Werte in einem bestimmten Bereich befinden. Denk daran, die Werte zum Lernen und Üben zu modifizieren.  Nach der Funktion constrain verwenden wir die Funktion map, die wir ebenfalls im vorigen Kapitel angesehen haben, um den Wertebereich zu verändern. Die Variable distancia_tiempo hätte den Wert mit 10 multiplizieren können, weshalb die Verwendung der Funktion map nicht unbedingt notwendig gewesen wäre. Als Letztes bringen wir den Summer mit der Anweisung tone zum Klingen:

Die Funktion tone ist dafür zuständig, den vom Summer erzeugten Ton wiederzugeben und besitzt als Parameter den Pin mit dem der Summer verbunden ist, die Frequenz und die Dauer mit der der Ton erklingt. Im Folgenden setzen wir ein delay über die komplette Dauer des Tons ein, sodass sich seine Dauer verdoppelt.  Als Übung kannst du versuchen, die Werte der Minimal- und Maximalfrequenzen, die Entfernungen, den Wertebereich, in den die Werte umgewandelt (mapped) werden zu verändern und dir ansehen, was das im Summer auslöst.  Wir sehen uns in der nächsten Lektion!