Zitat Zitat von Pewi006
Hallo Valen ………….. danke für deine Mühe.

Aus dem ersten Satz entnehme ich, dass das Programm, welches ich auf meinem ASURO gespeichert habe Fehler enthält.
Soll mir das erste Programm zeigen, wo der Fehler in meinem (Moebius) Programm steckt?
Vielleicht verstehe ich dich nicht richtig, aber das erste Venster mit Code in meinem Beitrag ist das ganze Program (den Datei test.c) von Moebius, ungeändert! Ich möchte nur angeben wie du das schöner in einem Beitrag wiedergeben kann, ohne Riesige Beitragen zu machen. Es hat meines wissen kein Fehler drin. Mit einer Ideal-Asuro ohne Messstörungen soll das Programm gut laufen.

Im zweiten Satz (die Programmierbare Lösung) soll ich eine Pollswitchmessung machen und das in 2 oder mehr Variablen und dann mit einem if-Befehl abfragen.
Ich nehme an, dazu dient das zweite Programm!? Ich habe mir beide In WORD kopiert. Aber dann?
Wäre es auch möglich, dass Programm fehlerfrei umzuschreiben? Ich würde es mir auch abtippen. Wenn ich das kann.
In meinen Letzter (grosse) Beitrag habe ich nur das wichtigste Teil der Anderungen sehen lassen. Aber ich verstehe das du nicht gleich wisst was du damit anfangen soll. Jedenfall sollst du nicht mit Microsoft Word diese Programmen bearbeiten. Das tut den Kompiler wehe! Windows Notepad, oder Programmer Notepad (mitgeliefert mit den WinAVR Kompiler: pn.exe) reichts. Es ist nur ein einfaches Textdatei, und das soll es auch bleiben. Word macht gern seine eigenes Dateiformat davon. Mein Code-schnippsel ist die erste while-schleife innen von den Außerste While-schleife. Aber ich werde das Komplete dur mich Geänderte Programm hier geben. Das soll den Datei test.c ersetzen. Welcher Meldungen habst du beim Kompilieren bekommen? Bitte die Resultaten von den "make all" Anruf Posten. Nicht alle warnungen sind wichtig.

Code:
// Originale Program von Moebius
// https://www.roboternetz.de/phpBB2/viewtopic.php?t=9317
// Geändert durch Valen (14-12-2010): Mehrfache PollSwitch Anruf zur stabile Taster Erkennung, weitere Kommentaren.  

#include "asuro.h" 

int main(void) 
{ 
    int i; 
    int k=0; 
    i=0; 
    int l; 
    l=1;

    unsigned char t1, t2;  // Speicher führ Taster Werten, zugefugt durch Valen
    t1=0; // Anfangswert geben, kein Taster
    t2=0; // Anfangswert geben, kein Taster
 
    Init(); 
    while(1) 
    { 
         while(1) 
         { 
             // Änderungen von Valen: Stabiele Tastererkennung
             t1=PollSwitch(); // Erste Taster Messung 
             t2=PollSwitch(); // Zweiter Taster Messung 
             if ((t1==t2) && (t1>0)) i=1; //Ist die Tastenmessung gleich oder stabil? Und ist irgendeiner Taster bemerkt? ! Moebius ignorierte den Taster K6 mit >1
             // Ende von Änderungen von Valen: Stabiele Tastererkennung
             
             if(i==0) // Kein Taster Bemerkt, Vorwärts! 
             { 
                 MotorDir(FWD,FWD); 
                 MotorSpeed(200,210); 
             } 
             else // Taster Bemerkt. Rückfahrt! 
             { 
                 MotorDir(RWD,RWD); 
                 MotorSpeed(150,160); 
                 Sleep(250); 
                 k++; 
             } 
             if(k>500) // Ausbrechen von diese schleife, 500 mal reagiert auf Taster Erkennung. Nun Reichst! 
             { 
                 MotorSpeed(0,0); 
                 break; 
             }
         } 
         while(1) // Wegdrehen vom Objekt-umgebung
         { 
             if(l<300) // 300 mal 250 Timer Ticks Drehen
             { 
                 MotorDir(FWD,RWD); 
                 MotorSpeed(120,120); 
                 l++; 
                 Sleep(250); 
             } 
             else // Weit genug weggedreht! Wieder Vorwärts und Tastermessungen machen, also aus diese Schleife brechen.
             { 
                 MotorSpeed(0,0); 
                 i=0;  // Letzte Taster erkennung ist nicht mehr gultig.
                 k=0;  // Zeitzähler Ruckwärtsgang zuruckzetsen.
                 l=1;  // Zeitzähler Drehung zuruckzetsen.
                 break; 
             } 
         } 
     } 
    
   return 0; 
}
EDIT Ich hatte noch ein Fehler bemerkt in meiner erste Beitrag:
if ( (t1==t2) && (t1>0)) i=1; // war (t1=t2)

Dort, wo ich über die elektronische Verbesserung nachgesehen habe, wird auch darauf hingewiesen,
dass die meisten ASURO auch ohne Umbau laufen.
Das stimmt. Vielleicht geht es auch ohne, aber es ist Recht einfach (nur ein Bischen Knapp dort auf die Platine), und Angeraten durch den Atmega8 Fabrikant.

Programmieren?????? Da bringe ich doch meiner Katze eher das Sprechen bei!!!!!
Dann wurde ich mal Bald anfangen mit Programmieren lernen. Deine Katze wird doch ein Gesprächspartner Brauchen im Mitte der Nacht, oder?