-
        

Ergebnis 1 bis 7 von 7

Thema: Problem Kollisionstaster --> unkontrollierter Programmabl

  1. #1

    Problem Kollisionstaster --> unkontrollierter Programmabl

    Anzeige

    Hallo,

    habe mein erstes Programm für den Asuro geschrieben. Der kleine soll vorwärts fahren bis einer der Kollisionstaster gedrückt wird...solange dieser dann gedrückt ist, fährt er rückwärts.

    Drückt man nun wahllos einige male einen der Taster, bricht scheinbar das Programm ab und der Asuro macht am Ende das was zuletzt im Programm durchlaufen wurde. Dabei leuchtet die Status LED orange.

    Hat jemand eine Idee?

    grüsse,
    Klaus

    Code:
    #include "asuro.h"
    int main(void) 
    {
    	Init ();
    	while (1)
    	{
    		if (PollSwitch()!=0)
    		{
    			 MotorDir	(RWD,RWD);
    			 MotorSpeed	(120,120);
    			 StatusLED	(RED);
    		}
    		else
    		{
    			 MotorDir	(FWD,FWD);
    			 MotorSpeed	(255,255);
    			 StatusLED  (GREEN);
    		}
    	}
    	return 0;
    }

  2. #2
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    54
    Beiträge
    5.782
    Blog-Einträge
    8
    Batterie/Akku leer? Zu häufiger/schneller Aufruf von MotorDir()/MotorSpeed()? Tastenwerte von PollSwitch() falsch eingelesen?

    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  3. #3
    Hallo,

    bei meinem Programm fährt der Asuro solange vorwärts bis ein Taster gedrückt wird und fährt solange rückwärts bis der Taster wieder "frei" ist.

    D.h. wenn er gegen eine Wand fährt schaltet er sehr schnell zwischen vorwärts und rückwärts um, sprich die MotorDir wird sehr oft augerufen.

    Heißt das ein oftmaliges aufrufen dieser funktion (mehrmals/s) kann zum "Absturz" führen?

    CU,

    Klaus

  4. #4
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    54
    Beiträge
    5.782
    Blog-Einträge
    8
    Naja, zum "Absturz" sollte das häufige MotorDir() eigentlich nicht führen. Ich vermute, dein PollSwitch() funktioniert nicht richtig. Einige grüne StatusLEDs zwischen vielen Roten ergibt dann Orange. Das soll meinen: PollSwitch() erkennt einen Tastendruck obwohl keiner stattgefunden hat.

    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  5. #5
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    11.12.2007
    Ort
    weit weg von nahe Bonn
    Alter
    33
    Beiträge
    2.381
    das ständige ändern der motordir kann womöglich zu spannungseinbrüchen führen, dein pollswitch bekommt dann ne macke

    entprell dein pollswitch mal (kann bitte jemand schnell die zeilen posten? hab grad nich im kopf wie des ging)

  6. #6
    Neuer Benutzer Öfters hier
    Registriert seit
    03.06.2009
    Alter
    33
    Beiträge
    13
    Wenn ich das noch richtig im Kopf hab ging das so
    Code:
    t1 = PollSwitch();
    t2 = PollSwitch();
    if(t1 == 0 && t2 == 0) /* keine Taste */
    Variablen anlegen nicht vergessen für t1 und t2.


    Gruß Alex

  7. #7
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    54
    Beiträge
    5.782
    Blog-Einträge
    8
    Hallo

    Wenn man nur auf eine gedrückte Taste prüfen möchte kann man auch den Tasteneingang ohne ADC auswerten:

    if ( ~PINC & ( 1 << PC4 ) ) {

    Der Code stammt von Henk: http://www.arexx.com/forum/%76iewtopic.php?t=472

    Gruß

    mic

    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

Berechtigungen

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