User manual
RP6 ROBOT SYSTEM - 3. RP6 CONTROL Library
3.1.5. Mikrofonsensor
Das RP6 CONTROL kann nicht nur Schall erzeugen, sondern auch darauf reagieren. 
Zwar nicht auf die Tonhöhe, aber auf die Lautstärke. Man kann z.B. den Roboter bei 
lauten Geräuschen losfahren lassen. 
Die Schaltung ist als „Peak Detektor“ ausgelegt. Es wird über einen variablen Zeit-
raum die Amplitude des Mikrofonsignals gemessen   und  der Maximalwert   gehalten. 
Dann kann der Mikrocontroller mit einem ADC den Maximalwert messen und danach 
löschen. Der Maximalwert wird einfach kurz in einem kleinen Kondensator gespeichert 
und zum „Löschen“ des Maximalwerts wird dieser Kondensator wieder entladen. 
Mit der Funktion
void dischargePeakDetector(void)
muss man den Kondensator zunächst entladen. Danach kann man in festen Interval-
len mit der Funktion
uint16_t getMicrophonePeak(void)
den aktuell gemessenen Maximalwert ermitteln. Die Funktion ruft nachdem der Wert 
gemessen wurde direkt dischargePeakDetector() auf.
In einem der Beispielprogramme sieht man wie man das anwenden kann. 
3.1.6. LC-Display
Das LC-Display ist ideal um Sensorwerte und Statusmeldungen auszugeben, während 
der Roboter  nicht  am  Rechner angeschlossen  ist. Die Ausgabe auf   das LC-Display 
funktioniert ähnlich wie bei der seriellen Schnittstelle – aber natürlich gibt es ein paar 
kleine Besonderheiten. Schauen Sie sich am besten die Beispielprogramme an, dann 
wird schnell klar wie man das LCD verwenden kann.
void initLCD(void)
Diese Funktion muss immer zu Beginn des Programms aufgerufen werden, um das 
LCD zu initialisieren.
void setLCDD(uint8_t lcdd)
Diese Funktion (und write4BitLCDData) benötigen Sie normalerweise nicht – wir be-
schreiben Sie hier nur um kurz zu erläutern wie das Display angesteuert wird.
Das LCD wird im 4-Bit Modus betrieben. Es werden daher nur vier Datenleitungen und 
zwei   Steuerleitungen  benötigt  (Enable   (EN)   und   Register   Select   (RS),   Read/Write 
(R/W) ist dauerhaft auf Masse geschaltet wodurch das LCD ausschließlich beschrieben 
werden kann. Lesen ist nicht möglich und auch nicht notwendig). Die vier Datenleitun-
gen sind wie die LEDs am Schieberegister angeschlossen, um Ports zu sparen. Analog 
zur setLEDs Funktion, setzt setLCDD die Datenleitungen des LCDs. Allerdings setzt 
diese Funktion auch kurz das Enable Signal, damit das LCD die Daten übernimmt. 
void write4BitLCDData(uint8_t data)
Da wir dem LCD eigentlich 8 Bit Befehle und Daten senden müssen, müssen die zu 
übertragenden  Bytes   aufgeteilt   werden.   Die   Funktion   write4BitLCDData   übernimmt 
genau das – 8 Bit Daten werden in zwei 4 Bit „Nibbles“ aufgeteilt und übertragen.
- 14 -










