Eim kleines Testprogramm das ich mal genau zu diesem Thema gemacht habe.
Code:
/*******************************************************************************
*
* Description: Test Asuro LinienSensor
* Version 0:
* Autor: Vogon 16.10.05
*
*****************************************************************************/
#include "asuro.h"
#include <stdlib.h>
unsigned int lineData[2];
unsigned int ld[2][2];
int i, ldat, ssum, don, doff;
void PrintStr(unsigned char *data) {
unsigned char i = 0;
while(data[i++]!=0x00);
SerWrite(data,i);
}
int main(void)
{
Init();
PrintStr("\r\nTest Asuro LinienSensor");
while(TRUE) {
PrintStr("\r\nOff:l,r | On:l,r | ssum | doff,don | ldat | ");
for (i = 0; i < 10; i++ ) {
FrontLED(ON);
LineData(lineData); // Messung mit LED ON
ld[1][0] = lineData[0];
ld[1][1] = lineData[1];
FrontLED(OFF);
LineData(lineData); // Messung mit LED OFF
ld[0][0] = lineData[0];
ld[0][1] = lineData[1];
don = (ld[1][0] - ld[1][1]); // Regelabweichung mit LED ON
doff = (ld[0][0] - ld[0][1]); // Regelabweichung mit LED OFF
ldat = don - doff; // Regelabweichung
if (ldat < 0 ) BackLED(ON,OFF); else BackLED(OFF,ON);
ssum = (ld[0][0] + ld[1][0] + ld[0][1] + ld[1][1]); // Fehler wenn über 250
StatusLED(OFF);
BackLED(OFF,OFF);
if (ssum > 250) StatusLED(RED);
else if (abs(ldat) > 5) {
StatusLED(GREEN);
if (ldat < 0 ) BackLED(ON,OFF); else BackLED(OFF,ON);
}
PrintStr("\r\n");
PrintInt(ld[0][0]); // Linker Sensor Messung mit LED OFF
PrintInt(ld[0][1]); // Rechter Sensor
PrintStr(" | ");
PrintInt(ld[1][0]); // Linker Sensor Messung mit LED ON
PrintInt(ld[1][1]); // Rechter Sensor
PrintStr(" | ");
PrintInt(ssum); // Sensoren Summe der Messungen
PrintStr(" | ");
PrintInt(doff); // Regelabweichung mit LED OFF
PrintInt(don); // Regelabweichung mit LED ON
PrintStr(" | ");
PrintInt(ldat); // Regelabweichung
PrintStr(" | ");
}
}
return 0;
}
Lesezeichen