- Labornetzteil AliExpress         
Ergebnis 1 bis 10 von 10

Thema: MSleep bei richtungswechsel?

  1. #1
    Neuer Benutzer Öfters hier Avatar von Fabulous84
    Registriert seit
    21.02.2011
    Beiträge
    5

    MSleep bei richtungswechsel?

    Anzeige

    E-Bike
    Hallo allerseits,

    ich habe mein ASURO so programmiert das er dem Licht einer Taschenlampe hinterherfährt, wenn die Kollisionstaster betätigt werden fährt er ein sekunde lang zurück und macht dann mit der Verfolgung des Lichts weiter.
    Bei dem Richtungswechsel habe ich eine Wartezeit eingebaut. Das heisst wenn er Rückwärtsfährt und dann wieder vorwärtsfahren soll brauch er eine kurze "bedenkzeit". Ohne diese Bedenkzeit vor dem Befehl zum Vorwärts fahren funktioniert das Programm nicht, denn dann würde er immer Rückwärts fahren.
    Nun Endlich meine Frage. Warum brauch er diese Bedenkzeit??? Warum funktioniert das ganze nicht ohne MSleep vor dem Vorwärtsfahren?

    Ich bin dankbar für eure Antworten.

    PHP-Code:
    P.SBin neu hier und weiss nicht wie das mit dem einfügen der Quellcodes geht... wenn ihr mir sagt wie das gehtDanke
    Angehängte Dateien Angehängte Dateien
    Geändert von Fabulous84 (21.04.2011 um 13:55 Uhr)

  2. #2
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    01.03.2008
    Ort
    Niederlanden
    Beiträge
    1.170
    Keine Ahnung noch wieso er nur Zurückfahrt, aber deine Code stimmt nicht ganz. Bist du sicher die geflashte Hex Datei ist gleich and diese Code? Das Kompilieren darf nicht gelungen sein.

    PHP-Code:
    #include "asuro.h"

    int main(void
    {
        
    unsigned int data[2];
        
    Init();
        while(
    1)
        {
            if (
    PollSwitch()>0))
            {
                
    MotorDir(RWD,RWD);
                
    MotorSpeed(200,200);
                
    Msleep(1000);
            }
            else
            {
                
    Msleep(200); // Warum muss das hier stehen? Ohne gehts anscheinend nicht!
                
    MotorDir(FWD,FWD);
                
    LineData(data);
                if (
    data[0]>data[1])
                {
                    
    MotorSpeed(80,200);
                }
                else
                {
                    
    MotorSpeed(200,80);
                }
            }
    // Valen: Hier soll noch ein "}" zwischen reinkommen! Sonnst ist "main" nicht abgeschlossen.
                  
        
    retourn(0); //Valen: Schreibfehler!


  3. #3
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    01.03.2008
    Ort
    Niederlanden
    Beiträge
    1.170
    Zitat Zitat von Fabulous84 Beitrag anzeigen
    ...

    P.S. Bin neu hier und weiss nicht wie das mit dem einfügen der Quellcodes geht... wenn ihr mir sagt wie das geht, Danke!
    Fuge die Code ein zwischen:

    [php ]... Code hier! [/php] Dann werden bestimmte Befehlen (Offiziell nur PHP Code, aber C ist ähnlich) in Farben angezeigt.

    [code ]... Code hier! [/code] Dann bekommt Mann den Code ohne Farbe.

    Das Leerzeichen nach "php" und "code" sollst du nicht übernehmen. Das habe ich dort gesetzt sonnst wird das gleich interpretiert durch das Forum Software.

    Versuch mal meine Beitrag oben zu zitieren. Du wird es gleich sehen.

  4. #4
    Neuer Benutzer Öfters hier Avatar von Fabulous84
    Registriert seit
    21.02.2011
    Beiträge
    5
    Ok von den Schreibfehlern mal abgesehen (hab den Code eben schnell nur abgeschrieben längere Geschichte), es geht mir aber eigentlich um dieses Msleep. Warum geht es nicht ohne? Habe jetzt schon mehrmals Beiträge gelesen in denen solche Probleme auf die Tasterabfrage zurückzuführen ist. Das könnte ja hier auch der Fall sein. Wenn dies so ist ist es dann auch möglich das diese Bedenkzeit dafür sorgt das die Taster erst verzögert abgefragt werden und diese dann den richtigen Wert "0" haben?

  5. #5
    Neuer Benutzer Öfters hier Avatar von Fabulous84
    Registriert seit
    21.02.2011
    Beiträge
    5
    Mein Original Programm sieht so aus...
    Klicke auf die Grafik für eine größere Ansicht

Name:	Lichtverfolger.jpg
Hits:	9
Größe:	75,2 KB
ID:	18636

  6. #6
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    01.03.2008
    Ort
    Niederlanden
    Beiträge
    1.170
    Ich verstehe es geht dich nur um das MSleep. Aber ich will nicht Kommentare geben über den (mögliche) Code-fehlern, wann es nicht sicher ist das die Symptomen auch dazu gehören. Das soll man erst ausschließen, sonnst wird man sich selbst verwirren. Aber dein letztes Bild zeigt an es ist Gleich außer den Schreibfehlern.

    Es stimmt. Änderungen der Motorkraft und Drehrichtung haben eine starke Einfluss auf den Bordspannung. Diese Bordspannung wird auch angeschaltet an den Tastenmessung (durch Pin PD3 und R24) und deshalb soll man nicht auf nur 1 PollSwitch Messung verlassen ob die Tastern eingedrückt sind (und bleiben). Das kann einfach eine Falsche Tastenmessung geben. Man soll die PollSwitch werten in 2 Variablen speichern und danach mit einander vergleichen ob sie gleich sind und eine bestimmte wert haben worauf ein Aktion gemacht werden soll.

    Eine weitere Tip für den 'Linie'-messung. Die beide Werten sind fast NICHT gleich bei gleiche Beleuchtung von den Taschenlampe. Bauteilen haben immer verschiedene Empfindlichkeiten und Widerstandswerten. Mann soll die Differenz im Ruhe-kondition erst abspeichern, und später bei jeder neue Messung davon abziehen. Sonnst wird dein Asuro immer ein Präferenz haben für eine Richtung.

    Es gibt genug Beispiel Programmen für diese 2 Problemen bereits im Forum. Einfach suchen nach den PollSwitch und LineData Befehlen im Asuro abteilung.

  7. #7
    Neuer Benutzer Öfters hier Avatar von Fabulous84
    Registriert seit
    21.02.2011
    Beiträge
    5
    @ Valen: Vielen Dank für die Antwort.

    Weitere erklärungen zu der Pollswitch abfrage und den Einfluss der Bordspannung auf diese wären hilfreich. Wer noch mehr dazu sagen kann, bitte posten.

    Kann doch nicht sein das man als Anfänger an solche Probleme stößt für die, die eigene Programmierung gar nichts kann, sondern weil die Hardware nicht ausgereift ist. ärgerlich

  8. #8
    Neuer Benutzer Öfters hier
    Registriert seit
    21.03.2011
    Beiträge
    14
    Zitat Zitat von Fabulous84 Beitrag anzeigen
    Kann doch nicht sein das man als Anfänger an solche Probleme stößt für die, die eigene Programmierung gar nichts kann, sondern weil die Hardware nicht ausgereift ist. ärgerlich
    Ausgereift gibt es für den dreifachen Preis... . Du hast dich aber bewusst für einen günstigen Einsteiger-Bausatz entschieden. Da gehört ein wenig "Frickeln" halt mit dazu.

  9. #9
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    01.03.2008
    Ort
    Niederlanden
    Beiträge
    1.170
    Ärgerlich ist es, ... für Einsteiger. Aber leider ist das die Physikalische (Dreckeiche) Realität, und das interessante an Roboter Technik. Man muss von beide etwas wissen. Programmierung und Elektronische/Mechanische Technik. Mann braucht auch eine gewissen Forschungswunsch. Wenn man etwas nicht verstehst soll man tiefer in dem Materie Untersuchungen machen. Was passiert dort wirklich???? Das heißt, den Schaltungsbild ansehen und versuchen zu verstehen. Datenblätter der verschiedene Teilen durchschauen. Und den asuro.c und asuro.h Code versuchen zu verstehen. Kennt man noch keine C-sprache? Dann soll man Tutorials im Netz suchen. Oder ein Buch kaufen. Das wird vielleicht eine weile dauern bis das Alles geht. So, Geduld soll man auch haben.

    Vielleicht könnte die Entwickler von Asuro dieses Problem behoben haben, aber dann wurde das Paket fast Teurer sein als 50 Euro oder so. Mann braucht auch ein bisschen Herausforderung. Sonnst wird es bald Langweilig.
    Geändert von Valen (21.04.2011 um 16:44 Uhr)

  10. #10
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    20.08.2008
    Ort
    Karlsruhe
    Alter
    36
    Beiträge
    1.225
    Zitat Zitat von Fabulous84 Beitrag anzeigen
    Kann doch nicht sein das man als Anfänger an solche Probleme stößt für die, die eigene Programmierung gar nichts kann, sondern weil die Hardware nicht ausgereift ist. ärgerlich
    Die Hardware ist ausgereift, nur eben beschränkt. Fakt ist, dass die Bordspannung (aus gutem Grund) als Spannungsreferenz für die Tasterauswertung verwendet wird. Gleichzeitig sind Motoren nun Mal eben "Großverbraucher" und haben zudem noch die Angewohnheit, diverse Störungen ins Bordspannungsnetz einzuspeisen.
    Speziell Änderungen der Motorparameter (Richtung, Drehzahl, Last) können sich so auf den Analogteil auswirken.

    Dieses Verhalten ist konstruktionsbedingt, man könnte die Störungen durch eine kleine Induktivität (siehe ASURO-Wiki) evtl. noch etwas reduzieren. Bei größeren Robotern gibt es aus diesem Grund übrigens oft zwei Spannungsnetze (Logik- + Leistungsteil).

    mfG
    Markus

Ähnliche Themen

  1. Antworten: 4
    Letzter Beitrag: 29.08.2008, 20:32
  2. Antworten: 23
    Letzter Beitrag: 17.04.2008, 09:30
  3. PWM Motor Richtungswechsel funktioniert nicht
    Von Chris266 im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 2
    Letzter Beitrag: 15.03.2005, 12:39
  4. Richtungswechsel des 297
    Von PicNick im Forum Motoren
    Antworten: 6
    Letzter Beitrag: 12.03.2005, 15:32
  5. richtungswechsel elektromotor mit clou
    Von astra_tm im Forum Elektronik
    Antworten: 6
    Letzter Beitrag: 28.02.2005, 01:30

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Solar Speicher und Akkus Tests