- Labornetzteil AliExpress         
Seite 1 von 6 123 ... LetzteLetzte
Ergebnis 1 bis 10 von 52

Thema: Tasterdrücke falsch registriert

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    11.02.2006
    Beiträge
    23

    Tasterdrücke falsch registriert

    Anzeige

    Praxistest und DIY Projekte
    Und zum 2. mal heute....
    ich habe folgendes Programm hier im Forum gefunden:


    mein Problem ist, dass der Asuro immer die richtung wechselt als ob ein Taster gedrückt wird.
    Habe meine Theorie überprüft und das obere Programm in der Asuro Anleitung von S. 61 draufgeflashed. Nach ca 10 sekunden stoppt er auch wenn keine WAnd oder ähnliches in der nähe ist. Er verhält sich wie gesagt als ob einer der Schalter gedrückt worden wäre....
    Code:
    #include "asuro.h"
    
    int main(void)
    {
    int i;
    int k=0;
    i=0;
    int l;
    l=1;
    	Init();
    	while(1)
    	{
    		while(1)
    		{	
    			if (PollSwitch()>1) i=1;
    			if(i==0)
    			{ 
    			MotorDir(FWD,FWD);
    			MotorSpeed(190,210);
    			}
    			else
    			{
    			MotorDir(RWD,RWD);
    			MotorSpeed(140,160);
    			Sleep(250);
    			k++;
    			}
    			if(k>500)
    			{ 
    			MotorSpeed(0,0);
    			break;
    			}
    		}
    		while(1)
    		{
    			if(l<300)
    			{
    			MotorDir(FWD,RWD);
    			MotorSpeed(120,120);
    			l++;
    			Sleep(250);
    			}
    			else
    			{
    			MotorSpeed(0,0);
    			i=0;
    			k=0;
    			l=1;
    			break;
    			}
    		}
    	}
    	
    	return 0;
    }

    Woran liegt das???

  2. #2
    Hi,

    das war bei mir am Anfang auch so, wenn du die PollSwitch() function vorher ca 3x aufrufst geht es.

    So sollte es gehen:

    Code:
    #include "asuro.h"
    
    int main(void)
    {
    int i;
    int k=0;
    i=0;
    int l;
    l=1;
       Init();
       while(1)
       {
          while(1)
          { PollSwitch()
             PollSwitch()
             PollSwitch()
             if (PollSwitch()>1) i=1;
             if(i==0)
             {
             MotorDir(FWD,FWD);
             MotorSpeed(190,210);
             }
             else
             {
             MotorDir(RWD,RWD);
             MotorSpeed(140,160);
             Sleep(250);
             k++;
             }
             if(k>500)
             {
             MotorSpeed(0,0);
             break;
             }
          }
          while(1)
          {
             if(l<300)
             {
             MotorDir(FWD,RWD);
             MotorSpeed(120,120);
             l++;
             Sleep(250);
             }
             else
             {
             MotorSpeed(0,0);
             i=0;
             k=0;
             l=1;
             break;
             }
          }
       }
       
       return 0;
    }
    Gruß

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    11.02.2006
    Beiträge
    23
    Danke für die Antwort aber dass kann ja nicht sinn und zweck sein, wenn ich jetzt eine längere Strecke hätte würde ja wohl wieder dieser Fehler auftreten.... Da muss es doch eine andere Lösung geben...

  4. #4
    Ich nehme an dir geht es nur darum dass ASURO ein bischen durch die gegend fährt und hindernissen ausweicht, oder??

    ich benutze dazu diesen code:
    Code:
    int main(void)
    {		
    init()
    unsigned char taste;
    int z;
    SerWrite("POLL\n\r",8);
    	while(1)
    	{
    		taste=PollSwitch();
    		taste=PollSwitch();
    		taste=PollSwitch();
    		taste=PollSwitch();
    		taste=PollSwitch();
    		taste=PollSwitch();
    		taste=PollSwitch();
    		if(taste>0)
    		{
    			StatusLED(RED);
    			if (taste<8)
    			{
    				MotorDir(RWD,RWD);
    				MotorSpeed(150,150);
    				for(z=0;z<50;z++) Sleep(236);
    				MotorSpeed(150,0);
    				for(z=0;z<100;z++) Sleep(236);
    			}
    			else
    			{
    				MotorDir(RWD,RWD);
    				MotorSpeed(150,150);
    				for(z=0;z<50;z++) Sleep(236);
    				MotorSpeed(0,150);
    				for(z=0;z<100;z++) Sleep(236);
    			}
    			
    
    		
    		}
    		else
    		{
    			StatusLED(YELLOW);
    			MotorDir(FWD,FWD); 		// Beide Motoren auf vorwärts
    			MotorSpeed(150,150); 	// Beide Motoren halbe Kraft voraus
    			for(z=0;z<200;z++) Sleep(236);
    		}
    	}
    
    }
    bei mir geht das sehr gut
    Wie meinst du das mit "längere Strecke"??

  5. #5
    Neuer Benutzer Öfters hier
    Registriert seit
    24.11.2006
    Beiträge
    25
    Liegt am Rauschen von diesen dämlichen A/D-Wandlern, gelegentlich wird einfach mal das erste Bit gesetzt obwohl nix ist, dann gibt Pollswitch aus das der erste Schalter gedrückt wurde.*

    Beweis: K1 nicht abfragen, nur K2-K6, dann passiert das nicht mehr.

  6. #6
    @Der_andi:
    bei mir geben alle den richrtigen wert , also gedrückt, nicht gedrückt zurück, wenn ich di pollswitch() mehrmal hintereinander aufrufe. Wenn ich sie nur einmal aufrufe kommt nur Müll.

  7. #7
    Neuer Benutzer Öfters hier
    Registriert seit
    24.11.2006
    Beiträge
    25
    Widerstände haben Toleranzen, wenn man Pech hat, wie z.b. bei meinem Exemplar, dann reicht das grade so um am A/D-Wandler 2,44 mV anliegen zu haben, das entspricht 1/1024tel, und damit wird dann das erste Bit gesetzt.
    Warum es öfters vorkommt das nach ein paar mal Abfragen die Werte stimmen ist mir ein Rätsel.


    Das ist der Nachteil bei dieser Schaltung, man bringt zwar die 6 Schalter an nur einem Eingang unter, aber dafür ist der erste extrem empfindlich für allerlei Störungen.

  8. #8

  9. #9
    Neuer Benutzer Öfters hier
    Registriert seit
    24.11.2006
    Beiträge
    25
    Alles zwischen 1 und 20 Abfragen schon mal durchprobiert, die Fehler bei Pollswitch kommen nicht nachvollziehbar und einfach mal immer wieder zwischendrin.

    Drum bastel ich grad meinen Asuro um, K1 und K6 werden paralell geschaltet mit K3 und K4, K1 kann man so ignorieren aber weiter verwenden, die inneren Schalter sind in meinen Augen eh sinnlos. Dann reichts auch wenn man Pollswitch einmal abfragt. (...und das erste Bit dabei ignoriert)

  10. #10
    Neuer Benutzer Öfters hier
    Registriert seit
    11.02.2006
    Beiträge
    23
    @ASUROMIKE
    Dadurch verzögert sich bei mir alles nur sprich längere Strecke die er ohne probleme fährt.

Seite 1 von 6 123 ... LetzteLetzte

Berechtigungen

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

LiFePO4 Speicher Test