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; }







Zitieren

Lesezeichen