# Robotic Command Explorer

Der RCX (Robotic Command Explorer) der Lego-Mindstorms-Produktserie besitzt einen Renesas-H8/300-Mikrocontroller als CPU. Er wird programmiert, indem ein Programm mit Hilfe einer IR-Schnittstelle vom PC zur CPU des RCX heruntergeladen wird. Mehrere Entwicklungsumgebungen erlauben die Programmierung entweder durch graphisches Zusammenfügen fertiger Bausteine oder in verschiedenen Hochsprachen.
Nachdem das Programm gestartet worden ist, kann der mit einem RCX gebaute Roboter völlig autonom handeln und auf äußere und innere Ereignisse reagieren, entsprechend den Programmieranweisungen. Des Weiteren können zwei oder mehr RCX miteinander über die IR-Schnittstelle kommunizieren, was Wettbewerbe und Kooperationen ermöglicht. Der RCX besitzt drei Motorausgänge sowie drei Sensoreingänge. Die Leistungssteuerung der Motorausgänge erfolgt über Pulsweitenmodulation. Der RCX war der Pionier der Mindstorms-Reihe.

## Programmiersprachen

Die mitgelieferte Software ermöglicht, mit einer grafischen Benutzeroberfläche Programme aus Bausteinen zusammenzusetzen. Für komplexere Aufgaben kann der RCX mit verschiedenen Programmiersprachen programmiert werden, z. B. NQC.
* von Lego entwickelte (mit grafischer Oberfläche):
** RCX Code
** ROBOLAB (basiert auf LabVIEW)
* von anderen Anbietern (textbasiert):
** leJOS – Programmierung in Java
** NQC (Not Quite C [dt. „Nicht ganz C“])
** BricxCC (Bricx Command Center) – Entwicklungsumgebung, die das Arbeiten mit NQC erleichtert
** BrickOS (ehemals LegOS) – Programmierung in C bzw. C++
** Interactive C – Bietet Zusatzfunktionen wie Textausgabe
** Robot C – Steuert verschiedene Systeme (unter anderem RCX und NXT)
* von anderen Anbietern (mit grafischer Oberfläche):
** Kara – Programmierung mittels Zustandsautomaten

## RCX-Sensoreingänge

Für viele Bastler, die eigene Sensoren entwickeln wollen, ist es interessant, den vom RCX ausgegebenen Sensorwert (0…1023) interpretieren zu können. Dieser Wert ergibt sich aus der am Sensoreingang anliegenden Spannung. Ohne Sensor beträgt diese 5 V, fällt aber ab, sobald ein Sensor mit einem endlichen Widerstand angeschlossen wird. Die Anzeige des RCX lässt sich wie folgt aus der anliegenden Spannung U berechnen:
    $D_{\text{RCX}}=U\cdot 204{,}6\ {1 \over \mathrm {V} }$
Die anliegende Spannung U wiederum kann z. B. aus dem angeschlossenen Widerstand R oder dem elektrischen Strom I an den Sensoren berechnet werden. Der maximale elektrische Strom beträgt 0,5 mA (intern ist dem Sensor ein 10-kΩ-Widerstand vorgeschaltet).
    $U=5\ \mathrm {V} -10\ \mathrm {k\Omega } \cdot I={{5\ \mathrm {V} } \over {{10\ \mathrm {k\Omega } \cdot {\frac {1}{R}}}+1}}$
Die Sensoren können in einem aktiven (Lichtsensor, Drehsensor) und einem passiven Modus (Schalter, Temperatursensor) betrieben werden. Im passiven Modus wird wie oben beschrieben nur der Spannungsabfall an den Sensoreingängen gemessen. Im aktiven Modus liegt für je 3 ms die Batteriespannung am Sensoreingang an, um den Sensor mit Strom zu versorgen. Für 0,1 ms wird dann in den passiven Modus geschaltet, um den Sensorwert zu erfassen. In dieser Zeit muss sich der aktive Sensor durch eine eigene Stromquelle (Kondensator) versorgen.