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 -