Arexx RP6 V2 Build your own robot kit RP6 V2 User Manual

Product codes
RP6 V2
Page of 141
RP6 ROBOT SYSTEM -  4. Programmierung des RP6
void task_ADC(void)
In diesem Fall verkürzt sie  die  Zeit die  zum Auslesen  aller Analog/Digital Wandler 
Kanäle im Programm benötigt wird. Ruft man diese Funktion ständig auf, werden au-
tomatisch alle ADC Kanäle der Reihe nach „im Hintergrund“ (also immer wenn gerade 
Zeit dazu ist) ausgelesen und die Messwerte in Variablen gespeichert. 
Der ADC benötigt für jede Messung etwas Zeit und mit der readADC Funktion wäre 
der normale Programmablauf dann für diese Zeit unterbrochen. Da die Messung aber 
auch ohne unser zutun läuft (der ADC ist schließlich ein Hardwaremodul im Mikrocon-
troller) können wir in dieser Zeit auch andere Dinge erledigen.
Es gibt für die einzelnen Kanäle folgende 16Bit Variablen, die man immer und überall 
im Programm verwenden kann:
ADC_BAT: 
adcBat
ADC_MCURRENT_L: 
adcMotorCurrentLeft
ADC_MCURRENT_R: 
adcMotorCurrentRight
ADC_LS_L: 
adcLSL
ADC_LS_R: 
adcLSR
ADC_ADC0: 
adc0
ADC_ADC1: 
adc1
Sobald Sie die task_ADC() Funktion verwenden, sollten Sie nur noch diese Variablen 
benutzen und NICHT die readADC Funktion!
Beispiel:
1  
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26   
#include "RP6RobotBaseLib.h"
int
 main(
void
)
{ 
initRobotBase(); 
startStopwatch1();
writeString_P(
"\n\nKleines ADC Messprogramm...\n\n"
);
while
(
true
) 
{
if
(getStopwatch1() > 
300
// Alle 300ms...
{
                  writeString_P(
"\nADC Lichtsensor Links: "
);
writeInteger(adcLSL, DEC);
                  writeString_P(
"\nADC Lichtsensor Rechts: "
);
writeInteger(adcLSL, DEC);
writeString_P(
"\nADC Akku: "
);
writeInteger(adcBat, DEC);
writeChar(
'\n'
);
if
(adcBat < 
600
)
writeString_P(
"Warnung! Akku ist bald leer!\n"
);
setStopwatch1(
0
); 
// Stopwatch1 auf 0 zurücksetzen
}
task_ADC();
 // ADC Auswertung – ständig aus der Hauptschleife 
}                 
// aufrufen! Dann sollte man aber readADC nicht
return
 
0
;         
// mehr verwenden!
}
Hier werden alle 300ms die Messwerte der beiden Lichtsensoren und vom Akku ausge-
geben. Unterschreitet die Akkuspannung etwa 6V, wird eine Warnung ausgegeben. 
- 93 -