Routinen zur Kommunikation mit dem NDS3 Modul. Da die Kommunikation über die I²C Schnittstelle abgewickelt wird, muss vor der Benutzung der Funktionen i2c_init() aufgerufen werden.
Mehr ...
#include <stdint.h>
gehe zum Quellcode dieser Datei
Routinen zur Kommunikation mit dem NDS3 Modul. Da die Kommunikation über die I²C Schnittstelle abgewickelt wird, muss vor der Benutzung der Funktionen i2c_init() aufgerufen werden.
- Autor
- Nils Springob (nils@.nosp@m.nica.nosp@m.i-sys.nosp@m.tems.nosp@m..de)
- Datum
- 2009-07-02
Akualisiere Data Direction Register (DDR) des NDS3 Die globale Variable nds3_ddr wird zum NDS3 übertragen
void nds3_distcalib_commit |
( |
| ) |
|
Übertrage Distanz-Kalibrierwerte aus den Variablen zum NDS3
void nds3_distcalib_update |
( |
| ) |
|
Übertrage Distanz-Kalibrierwerte vom NDS3 in die Variablen. Die Werte werden im EEPROM gespeichert. Die Formel lautet: d = alpha/(v-v0) - d d: Distanz (*cm) v: Spannung (*5.0/1024 V)
uint16_t nds3_get_analog |
( |
uint8_t |
idx | ) |
|
Liefert den Wert des Analog-Eingangs Idx zurück idx: 0-3 Spannung am Portpin A0-A3 (DDR muss auf Eingang geschaltet sein!)
uint8_t nds3_get_busy |
( |
| ) |
|
Prüfen, ob das NDS3 Modul ein (Bewegungs-)Kommando bearbeitet.
- Rückgabe
- 0: untätig
uint8_t nds3_get_dist |
( |
| ) |
|
Liefert die aktuell gemessene Distanz
- Rückgabe
- Distanz in cm
Liefert die aktuelle Position
- Rückgabe
- Richtung in Grad [0 ... 180]
void nds3_measure |
( |
uint8_t |
dir, |
|
|
int8_t |
step |
|
) |
| |
Startet einen Scan. Der Sensor wird von der aktuellen Richtung mit der Schritweite Step zur angegebenen Richtung gedreht. Die Messung ist abgeschlossen, sobald nds3_get_busy() 0 zurück gibt.
- Parameter
-
dir | Richtung in Grad [0 ... 180] |
step | Schrittweite in Grad |
void nds3_move |
( |
uint8_t |
dir | ) |
|
Startet eine Drehung in die angegeben Richtung. Die Drehung ist abgeschlossen, sobald nds3_get_busy() 0 zurück gibt.
- Parameter
-
dir | Richtung in Grad [0 ... 180] |
void nds3_move_servo |
( |
uint16_t |
usecs | ) |
|
Rohpulsweite des Servos in Microsekunden setzen
Aktualisiere lokales Port Input Register (PIN) Die globale Variable nds3_pin wird vom NDS3 aktualisiert
void nds3_port_commit |
( |
| ) |
|
Akualisiere Ausgabe Register (PORT) des NDS3 Die globale Variable nds3_port wird zum NDS3 übertragen
void nds3_read |
( |
uint8_t |
dir, |
|
|
uint8_t |
step |
|
) |
| |
Liefert die Ergebnisse des letzten Scans zurück. Dir ist die Startrichtung, step die Schrittweite. Beispiel:
- Parameter
-
dir | Richtung in Grad [-90 ... 90] |
step | Schrittweite in Grad |
Setzt das aktuelle Kommando zurück, nds3_get_busy() wird anschliessend 0 zurück geben.
void nds3_servocalib_commit |
( |
| ) |
|
Übertrage Servo-Kalibrierwerte aus den Variablen zum NDS3
void nds3_servocalib_update |
( |
| ) |
|
Übertrage Servo-Kalibrierwerte vom NDS3 in die Variablen
Data Direction Register (DDR) Wenn das zugehörige Bit den Wert 0 hat, kann der Pin als Eingang verwendet werden, hat er den Wert 1 ist es ein Ausgang Bits (7-0): –B2–B0–A3A2A1A0
uint16_t nds3_distcalib_alpha |
uint16_t nds3_distcalib_d0 |
Voltage - Offset für Distanzmessung (* 1 cm)
uint16_t nds3_distcalib_v0 |
Voltage - Offset für Distanzmessung (* 5.0/1024 V)
Port Input Register (PIN) Eingangs-Logikpegel am Portpin: 0 =^ 0V / 1 =^ 5V Bits (7-0): –B2–B0–A3A2A1A0
Ausgabe Register (PORT) Wert für die Ausgabe 0 =^ 0V / 1 =^ 5V Bits (7-0): –B2–B0–A3A2A1A0
uint16_t nds3_servocalib_hi |
Maximale Pulsweite des Servos in Microsekunden
uint16_t nds3_servocalib_lo |
Minimale Pulsweite des Servos in Microsekunden
uint16_t nds3_servocalib_mid |
Mittlere Pulsweite des Servos in Microsekunden