ich bin neu hier, und nenne seit ein paar Tagen ebenfalls einen ASURO mein Eigen

Als erstes Programm für den Flitzer habe ich einen Ansatz gewählt, der ziemlich dem von Hermann entspricht. Allerdings habe ich das mit dem "threshold" etwas anders gelöst:



Code:
// Front-Led einschalten, Werte prüfen und ausgeben
// Zum Definieren einer Linie muß der Asuro auf dieser aufgestellt werden.

// Es werden 5 Messungen gemacht, und aus dem Durchschnittswert wird ein Differenzwert
// Für den schwächeren Sensor gebildet, um Vergleiche einfacher zu machen.
// Alle Werte werden über IR an den Empfänger geschickt und zum Schluss werden die
// addierten Mittelwerte zurückgegeben.


unsigned int LinieInit(unsigned int *werte)
{
    unsigned char ausgabewert[7];
    unsigned int speicher[2];
    int i;
    
    FrontLED(ON);
    
    for (i=0;i<5;i++)
    {
        Sleep(30);
        LineData(werte);
        
        IntZuString(werte[0], ausgabewert);
        SerWrite("\nMesswert links: ", 17);
        SerWrite(ausgabewert, 6);
        
        IntZuString(werte[1],ausgabewert);
        SerWrite("\tMesswert rechts: ", 18);
        SerWrite(ausgabewert,6);
        
        speicher[0] = speicher[0] + werte[0];
        speicher[1] = speicher[1] + werte[1];
    }
    
    speicher[0]=speicher[0]/5;
    speicher[1]=speicher[1]/5;
    
    IntZuString(speicher[0], ausgabewert);
    SerWrite("\n===== Messwert schnitt links: ", 31);
    SerWrite(ausgabewert, 6);
        
    IntZuString(speicher[1],ausgabewert);
    SerWrite("\n===== Messwert schnitt rechts: ", 32);
    SerWrite(ausgabewert,6);
    
    if(speicher[0] >= speicher[1])
    {
        werte[1] = speicher[0] - speicher[1];
        werte[0] = 0;
    }
    
    if(speicher[1] > speicher[0])
    {
        werte[0] = speicher[1] - speicher[0];
        werte[1] = 0;
    }
    
    return(speicher[0] + speicher[1]);
}

//Macht aus einer Integer-Zahl einen String
void IntZuString(int quelle, unsigned char *ziel)
{
    sprintf(ziel, " %+5i", quelle);
}
Ich muss den Asuro auf einer schwarzen Linie aufstellen, und er ermittelt selbst was für ihn schwarz ist. um eventuellen Unterschieden der beiden Sensorwerte entgegen zu wirken addiere ich "werte[0] und [1]" jeweils zu meinem gemessenen Wert. Zu guterletzt habe ich noch zwei Stoßtaster so programmiert, dass ich einen Toleranzwert, den ich zu meiner Summe addiere (Standardmäßig auf 300 bei Geschwindigkeit 0xff) um 10 pro Betätigung verändern kann. Die anfänglichen 5 Messungen kommen daher, dass ich festgestellt habe, dass der ASURO kurz nach dem Einschalten gelegentlich etwas schwankende Werte aufwies.