- 12V Akku mit 280 Ah bauen         
Ergebnis 1 bis 4 von 4

Thema: Problem mit dem Taster auf der Snake-Platine

Baum-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    17.12.2009
    Beiträge
    18

    Problem mit dem Taster auf der Snake-Platine

    Ich habe ein Problem mit dem Taster auf der Snake-Platine. Zur Absicht: Ich möchte 2 Betriebsarten (Vor der Wärmequelle flüchten, und ihr folgen) einrichten, die vor dem Abarbeiten des Programmes über die Kollisionstaster eingegeben werden (jeder Taster steht für ne Betriebsart) und mit dem Taster der Snake-Platine bestätigt werden. Dafür benutze ich eine Funktion, deren Quellcode ich angehängt habe. Diese funzt aber nicht, deshalb hab ich sie mal aufs simpelste zerlegt. Sie soll jetzt bei gedrücktem Taster ( if ((PIND&(1<<6))==1) ) die linke BackLED anmachen, bei nicht-gedrücktem Taster (if ((PIND&(1<<6))==0) ) die rechte. Wird ein Kollisionstaster gedrückt, werden beide ausgemacht. Der Asuro arbeitet allerdings folgendes ab:
    Bei gedrücktem Taster macht er nicht, wie verlangt, die Linke an, sondern die Rechte. Bei gedrücktem Kollisionstaster macht er sie aus (braver Asuro).
    Bei nicht gedrücktem Taster (und dieser Zustand herrscht zu Beginn der Schleife) leuchtet keine der beiden LED. Und diese Schleife wird auch NIE abgearbeitet!
    Mysteriös, kann mir einer helfen???

    Code:
    int Betriebsart(int b)												//ACHTUNG, was passiert, wenn keine Betriebsart ausgewählt wird, aber der Taster gedrückt wird???
    	{
    	int a,x,Taster;
    	for (x=0; x< 999; x++)		//diese Schleife steht, um durch die rote LED zu signalisieren,
    		{						//dass der Prozessor die Schleife überhaupt abarbeitet
    		StatusLED(RED);
    		Sleep(216);
    		}
    	while (Taster==0)			//solange der int Taster null ist, (und er ist es verdammt lange,
    		{						//diese Schleife abarbeiten
    			if ((PIND&(1<<6))==1) //falls der Schalter der Snake-Platine gedrückt ist, 																						//Mit dem Taster der Snakeplatine wird hierdurch die Betriebsart bestätigt, um eine Korrektur der Wahl...
    				{																																								//... zu gewährleisten. Weiter wird verhindet, dass der Kollisionstaster noch gedrückt ist, wenn ins Programm gesprungen wird
    				BackLED(ON,OFF);  //... die linke BackLED anschalten
    				}
    			if ((PIND&(1<<6))==0) //falls der Schalter nicht gedrückt ist,
    				{
    				BackLED(OFF,ON);  //die rechte on
    				}
    //			BackLED(OFF,OFF);
    
    		a=PollSwitch();			  //falls einer der Kollisionstaster gedrückt wird, 															//Bit0(1) Taster 6, Bit 5 (32) =Taster1
    		if (a!=0)
    			{
    			BackLED(OFF,OFF);	  //die BackLED`s wieder ausschalten
    			}
    Angehängte Dateien Angehängte Dateien

Berechtigungen

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

12V Akku bauen