NiboRoboLib 3.6 - NIBO burger Library
analog.h-Dateireferenz

Die Funktionen ermöglichen den Zugriff auf die analogen Eingänge (Sensorbricks, KEY und Versorgungsspannung). Mehr ...

gehe zum Quellcode dieser Datei

Aufzählungen

enum  {
  ANALOG_BL, ANALOG_BC, ANALOG_BR, ANALOG_FL,
  ANALOG_FR, ANALOG_FLL, ANALOG_FRR, ANALOG_BCL,
  ANALOG_BCR, ANALOG_KEY, ANALOG_VOLT, ANALOG_CNT
}
 
enum  { ANALOG_PASSIVE = 0, ANALOG_ACTIVE = 1, ANALOG_DIFFERENTIAL = 2 }
 

Funktionen

void analog_init ()
 
void analog_disable ()
 
void analog_reenable ()
 
uint16_t analog_getValue (uint8_t idx)
 
uint16_t analog_getValueExt (uint8_t idx, uint8_t mode)
 
uint16_t analog_getRandomSeed ()
 
void analog_setExtToggleMode (uint8_t idx, uint8_t activate)
 
void analog_irq_hook ()
 
void analog_wait_update ()
 
uint8_t analog_has_update ()
 

Ausführliche Beschreibung

Die Funktionen ermöglichen den Zugriff auf die analogen Eingänge (Sensorbricks, KEY und Versorgungsspannung).

Die analogen Eingänge werden automatisch im Interrupt gemessen. Damit die anlogen Daten gemessen werden können, muss zuerst (zum Beispiel in der setup() Funktion) die Funktion analog_init() aufgerufen werden. Falls nicht die Processing-Umgebung <niboburger/robomain.h> verwendet wird, müssen auch die globalen Interrupts manuell eingeschaltet werden.

Anhaltswerte: Die IR-Sensoren liefern für nahe Objekte Werte >50 und für Freiräume Werte <10.

Dokumentation der Aufzählungstypen

anonymous enum

Symbolische Namen für den Parameter idx der Funktionen analog_getValue(), analog_getValueExt() und analog_setExtToggleMode()

Aufzählungswerte
ANALOG_BL 

Bodensensor Links / Sensor Hinten Links.

ANALOG_BC 

Bodensensor Mitte / Sensor Hinten Mitte.

ANALOG_BR 

Bodensensor Rechts / Sensor Hinten Rechts.

ANALOG_FL 

Sensor Vorne Links.

ANALOG_FR 

Sensor Vorne Rechts.

ANALOG_FLL 

Sensor Vorne Links aussen.

ANALOG_FRR 

Sensor Vorne Rechts aussen.

ANALOG_BCL 

Bodensensor Links, Licht von Mitte Sensor.

ANALOG_BCR 

Bodensensor Rechts, Licht von Mitte Sensor.

ANALOG_KEY 

Funktionstasten.

ANALOG_VOLT 

Versorgungsspannung.

ANALOG_CNT 

Anzahl der enums, if(idx < ANALOG_CNT) {/* Index OK */}.

anonymous enum

Symbolische Namen für den Parameter mode der analog_getValueExt() - Funktionen

Aufzählungswerte
ANALOG_PASSIVE 

= 0: passive Messung (LED aus)

ANALOG_ACTIVE 

= 1: aktive Messung (LED an)

ANALOG_DIFFERENTIAL 

= 2: aktive - passive Messung (Differenz)

Dokumentation der Funktionen

void analog_disable ( )

Analoge Messungen deaktivieren. Durch einen Aufruf der Funktion analog_reenable() werden die Messungen wieder aktiviert.

uint16_t analog_getRandomSeed ( )

Liefert einen Zufallswert zurück. Der Wert errechnet sich aus der Summe aller gemessenen Analog-Spannungen. Der Wert selbst sollte nur als Seed (Entropiequelle) verwendet werden, da er monoton wachsend ist. Der Wert wird um so zufälliger, je mehr analoge Messungen vorher durchgeführt wurden.

Rückgabe
Random Seed (16 Bit Zufallswert)
#include <stdlib.h>
void setup() {
// kurz abwarten, damit einige ADC Messungen durchgeführt werden können:
delay(100);
// Startwert (seed) für den Zufallszahlengenerator (Funktion rand()) auf den echt
// zufälligen Wert (analog_getRandomSeed()) setzen setzen:
}
void loop() {
// Neue Zufallszahl mit dem Generator erzeugen:
int zufallszahl = rand();
// ...
}
Zu beachten
Die Interrupts müssen aktiviert sein, damit die Werte gemessen werden!
uint16_t analog_getValue ( uint8_t  idx)

Liefert den Wert eines analogen Eingangs mit dem index

Parameter
idxzurück.
Zu beachten
Die Interrupts müssen aktiviert sein, damit die Werte gemessen werden!
uint16_t analog_getValueExt ( uint8_t  idx,
uint8_t  mode 
)

Liefert den Wert eines analogen Eingangs mit dem index

Parameter
idxzurück. Der Parameter
modebestimmt die Sensor Messwerte Quelle: ANALOG_PASSIVE = bei abgeschalteter Sensor LED, ANALOG_ACTIVE = bei eingeschalteter Sensor LED, ANALOG_DIFFERENTIAL = Differenzwert ANALOG_ACTIVE - ANALOG_PASSIVE. Falls die Differenz negativ wäre, wird eine Null zurückgeliefert! Die Werte für ANALOG_ACTIVE und ANALOG_DIFFERENTIAL gelten nur für die Sensorbricks und sind nur gültig, wenn der Toggle-Modus aktiviert ist!
Rückgabe
Value ADC Wert 0..1024
// Minimaler Reflektionswert bei Bodenkontakt:
#define BC_MINVAL 40
void setup() {
// Toggle-Mode für mittleren Bodensensor aktivieren:
// ...
}
void loop() {
// wenn neue Messwerte vorhanden sind
// Differenz Mittlerer Bodensensor bei LED aus / LED an -> reflektierter Anteil
if (bc < BC_MINVAL) {
// Aktion bei Absturzgefahr
engine_stop();
}
// ...
}
}
Zu beachten
Die Interrupts müssen aktiviert sein, damit die Werte gemessen werden!
uint8_t analog_has_update ( )

Diese Funktion liefert TRUE wenn seit dem letzten Aufruf ein neuer Satz analoger Werte gemessen wurde.

void analog_init ( )

Initialisierung des Liniensensors. Der AD-Wandler misst im Interruptmodus automatisch alle Werte, und schaltet auch die IR-LEDs der Bodensensoren bei Bedarf ein und aus, wenn mit analog_setExtToggleMode() der Togglemode für den jeweiligen Eingang aktiviert wurde.

Zu beachten
Die Interrupts müssen aktiviert sein, damit die Sensorwerte gemessen werden!
void analog_irq_hook ( )

Diese Funktion wird nach einem kompletten Durchgang aller Sampling-Kanäle. Als 'weak-linking' Funktion kann sie einfach durch eine eigene Funktion void analog_irq_hook() {} ersetzt werden.

Zu beachten
Achtung: Funktion wird aus dem IRQ Kontext aufgerufen!
void analog_reenable ( )

Die Funktion aktiviert die analogen Messungen nach der Deaktivierung durch die Funktion analog_disable().

void analog_setExtToggleMode ( uint8_t  idx,
uint8_t  activate 
)

Aktiviert den automatischen Toggle-Mode (active/passive). Dabei wird die automatisch immer wieder ein und ausgeschaltet. Die Funktion analog_getValueExt() liefert dabei in Abhängigkeit vom Parameter mode die Werte bei eingeschalteter LED, bei ausgeschalteter LED oder auch die Differenz der beiden Werte zurück. ANALOG_BCL und ANALOG_BCR müssens extra aktiviert werden, alle anderen sind nach dem Start bereits automatisch im Toggle-Modus.

void analog_wait_update ( )

Diese Funktion wartet bis ein neuer Satz analoger Werte gemessen wurde.