-         

Ergebnis 1 bis 4 von 4

Thema: Taster auf ASURO Snake Vision-Platine ansprechen

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    17.12.2009
    Beiträge
    18

    Taster auf ASURO Snake Vision-Platine ansprechen

    Anzeige

    Habe meinem Asuro jetzt die Snake Vision gegönnt. Als aller erstes möchte ich mal testen, ob das mit dem Taster (der sich auf der Snake-Vision befindet) überhaupt so klappt, wie ich mir das vorstelle. Dazu habe ich mal ein Programm verfasst, das nichts anderes macht. Das Programm ist schnell erklärt. Bei Betätigen des Tasters soll die Status LED 3 mal grüne blinken, außerhalb der Schalter-Abfrage-Schleife soll sie rot leuchten. Wenn ich ihn einschalte, blinkt sie sofort 3 mal grün, dann leuchtet sie so lange rot, bis ich wieder den Taster drücke. Wieso springt das Programm beim Start in die Blink-Schleife, obwohl ich den Taster noch gar nicht gedrückt habe?

    Code:
    #include "asuro.h"
    #include "avr/interrupt.h"
    
    
    int main(void)
    	{
    																	// Speicher für die Messwerte bereitstellen
    	int a,b,c;
    	Init();
    	MotorDir(FWD,FWD);
    	StatusLED(OFF);
    	DDRD&=~(1<<6);												//Pin6 auf "Eingang" schalten ACHTUNG MIT HR MAYER ABSPRECHEN
    	PORTD|=(1<<6);
    	
    	while (1)
        		{
    			if ((PIND&(1<<6))==0)										//Wenn der Taster auf der Snake-Platine gedrückt wird ...
    				{														//nimmt Pin 6 des Prozessors High-Zustand an 
    				for (c=0; c<=2; c++)
    					{
    					for (a=0; a<150; a++)
    						{
    						StatusLED(OFF);									//0,4 Sekunden soll aus sein
    						Sleep(216);
    						}
    					for (b=0; b<150; b++)							//0,4 Sekunden soll grün leuchten
    						{
    						StatusLED(GREEN);
    						Sleep(216);
    						}
    					} 
    				}
    			StatusLED(RED);
        		}     
    	return 0;
    	}

    (Quellcode eingefügt von radbruch)

  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
    Hallo

    Vielleicht steigt der Pegel am Pin zu langsam nach dem Einschalten des PullUp:

    PORTD|=(1<<6);
    Sleep(10);
    while (1)
    {
    if ((PIND&(1<<6))==0)

    Der Taster schaltet doch PD6 gegen GND, oder?

    Gruß

    mic

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

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    17.12.2009
    Beiträge
    18
    Der Schalter schaltet Pin6 gegen GND, richtig. Wenn die Schleife erst mal läuft, kann ich sie ja jederzeit aufrufen durch Tasterdrücken.

  4. #4
    Neuer Benutzer Öfters hier
    Registriert seit
    17.12.2009
    Beiträge
    18
    Das funzt, wunderprima, tausend Dank dir. Habe einen Sleep(216) eingefügt, und jetzt läuft es!!! Danke, und das an Ostern

Berechtigungen

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