User manual
RP6 ROBOT SYSTEM - 3. RP6 CONTROL Library
3.1.3. Taster
Anders als z.B. die Bumper, sind die 5 Taster auf dem RP6-M32 an einen ADC Kanal 
angeschlossen. Das hat den Vorteil, das nur ein Pin für alle 5 Taster benötigt wird. Der 
Nachteil ist allerdings, dass bei der einfachen Schaltung mit 5 gleichen Widerständen 
(s. Schaltplan auf der CD-ROM) die wir hier verwenden nur ein Taster gleichzeitig ge-
drückt werden kann. Das reicht für Bedientaster aber völlig aus!
uint8_t getPressedKeyNumber(void)
Diese   Funktion   ermittelt   welcher   Taster   gerade   gedrückt   ist.   Dazu   wird   der   ADC 
ausgelesen und mit einigen voreingestellten Schwellwerten verglichen. Diese Schwell-
werte muss man evtl. in der Library anpassen damit es auf dem eigenen RP6-M32 
korrekt funktioniert! Der gemessene ADC Wert kann nämlich aufgrund der üblichen 
Fertigungstoleranz von Widerständen abweichen. Die Schwellwerte sind direkt in der 
Funktion getPressedKeyNumber zu finden.
uint8_t checkPressedKeyEvent(void)
Diese Funktion prüft ob ein Taster gedrückt worden ist und gibt dann ein einziges mal 
die Tastennummer zurück – im Gegensatz zu getPressedKeyNumber, wo die Tasten-
nummer ständig zurückgegeben wird. Das ist nützlich um in der Hauptschleife die 
Tasten abzufragen ohne den Programmfluss zu unterbrechen. 
Ähnlich ist es auch mit der Funktion:
uint8_t checkReleasedKeyEvent(void)
Hier wird allerdings der Tastenwert erst dann genau einmal zurückgegeben wenn die 
Taste gedrückt und danach auch wieder losgelassen wurde. Auch diese Funktion blo-
ckiert den normalen Programmfluss nicht – man muss nicht mit einer Schleife darauf 
warten bis die Taste wieder losgelassen wurde. 
3.1.4. Beeper
Der Signalgeber auf dem RP6-M32 kann mit der Funktion 
void beep(uint8_t pitch, uint16_t time)
gesteuert werden. Allerdings ist diese Funktion nicht blockierend – d.h. Sie setzt nur 
die Tonhöhe und die Zeitspanne für die dieser Ton erzeugt werden soll, und wird dann 
verlassen. Der  Beeper wird  nach der   vorgegebenen Zeitspanne automatisch  abge-
schaltet. Allerdings überschreibt jeder weitere Aufruf dieser Funktion die Einstellun-
gen. Um Melodien oder einzelne Töne zu erzeugen ist es daher meist einfacher, das 
Makro 
sound(pitch, time, delay)
zu verwenden. Hier können Tonhöhe, Zeitspanne und Pause nach dem Ton angegeben 
werden. Es wird mSleep verwendet um die Pausen zu erzeugen – also dauert es time
+delay Millisekunden bis das Programm fortfährt. 
Wenn man gar keine Pause oder Tondauer einstellen will, kann man mit
void setBeeperPitch(uint8_t pitch)
nur die Tonhöhe einstellen. Das ist für kontinuierliche Tonfolgen (z.B. Sirenengeräusch 
o.ä.) nützlich. Achtung: Bei allen Beeper Funktionen liegt der zulässige Bereich von 
„pitch“ zwischen 0 und 255, wobei 255 die maximale Frequenz ist.
- 13 -










