LBotics.at

Die Infrarot Abstandssensoren GP2Y0Axxx der Firma Sharp stellen die gemessenen Entfernungen in Form von Spannungen zwischen 0 und ca. 3.3 V zur Verfügung. Um die Messwerte auszulesen und in der Folge in Entfernungen umzurechnen, müssen diese Sensoren an einen Port am Controller angeschlossen werden, der analoge Spannungen messen kann.

IR Abstandssensor GP2Y0A02YK0F - 20 bis 150 cm

IR Abstandssensor GP2Y0A21YK0F - 10 bis 80 cm

IR Abstandssensor GP2Y0A60SZLF - 10 bis 150 cm

Detaillierte Informationen zu den Zusammenhängen zwischen den gemessenen Spannungen und den Entfernungen sind den Datenblättern dieser Sensoren zu entnehmen.

Programmbeispiel - Einlesen des Werts eines IR Abstandssensors

Ein IR Abstandssensor wird an einen analogen Eingang, an dem analoge Spannungen gemessen werden können, angeschlossen. In diesem Beispiel ist ein IR Abstandssensor an den Eingang AN4 angeschlossen, es wird der aktuelle Wert des Abstandssensors eingelesen und am Display angezeigt.

#include "KeplerBRAIN_V4.h"

// Definition der globalen Variable wert vom Typ uint16_t
uint16_t distance;

void setup()
{
KEPLERBRAIN_INIT();

// Initialisieren der Variable wert
distance = 0;
}

void loop()
{
// Einlesen des Werts des ADCs Kanal 1 und Ablegen in der Variable wert
distance = READ_IO_ANALOG(AN4);

// Ausgeben des Inhalts des Arrays textzeile1 am Display
LCD_DRAW_TEXT(1,2, "Entfernung: " + String(distance));
}
Erklärungen zu diesem Programmbeispiel

Zeile 4: uint_16 distance;

Definition der Variable distance vom Typ Integer (uint16_t). In dieser können positive ganzzahlige Werte zwischen 0 und 65535 abgelegt werden. Durch die Definition an dieser Stelle steht diese Variable im gesamten Programmcode zur Verfügung. An dieser Stelle darf der Variable noch keine Zuweisung eines Werts mit einem = erfolgen!

Zeile 11: distance = 0;

Zu Beginn des Programms wird der Variable distance der Wert 0 zugewiesen.

Zeile 17: distance = READ_IO_ANALOG(AIN4);

Mit der Funktion READ_IO_ANALOG(port) wird die am jeweiligen Port anliegende Spannung gemessen. Die gemessenen Spannungen werden digitalen Werten zugeordnet, die zwischen 0 und 1023 liegen können und werden der Variable distance zugewiesen.

Mit dem Parameter port wird der gewünschte Port festgelegt: AIN1, AIN2, ..., AIN8

Als Rückgabewert liefert diese Funktion die Werte zwischen 0 und 1023.

Zeile 20: LCD_DRAW_TEXT(1, 1, "Wert: " + String(distance));

Am Display wird ein zusammengesetzter String angezeigt - zunächst "Wert: " und dann dahinter der Wert der Variable distance, die zuerst mit der Funktion String() in einen String konvertiert werden muss. Mit dem + dazwischen können zwei Strings miteinander verbunden werden.

Der erste Parameter entspricht der x-Koordinate der gewünschten Position am Display, dieser kann mit 1, 2, ..., 16 festgelegt werden.

Mit dem zweiten Parameter wird die y-Koordinate der gewünschten Ausgabeposition festgelegt, diese kann entweder 1 oder 2 sein.