- fchao-Sinus-Wechselrichter AliExpress         
Ergebnis 1 bis 4 von 4

Thema: tasten betätigung zählen

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    19.01.2006
    Beiträge
    7

    tasten betätigung zählen

    Anzeige

    Powerstation Test
    moin,
    ich möchte ein programm schreiben welches beim 4 tasten druck eine LED leuchten lässt.

    Code:
    #include <avr/io.h>
    
    int i=0;
    
    int main()
    {
       DDRB |= (1 << PB0); 
       PORTD|= (1 << PD2); 
       
       while (1) 
       {
    	if (PIND & (1 << PD2)) 
    		i=i+1;				 
    	if (i==4)
    			PORTB &= ~(1 << PB0); 
    		else
    			PORTB |= (1 << PB0);
    	}
       return 0;
    }
    geht aber nicht, die LED bleibt aus. deswegen hab ich mal
    int i = 5
    if (i>=4)
    gemacht um zusehen woran es liegt. jetzt blinkt die LED allerdings.
    kann mir jemand sagen woran es liegt?

    ich benutze einen atmega8 auf den myavr board.

    danke

    mfg, nadors

  2. #2
    Benutzer Stammmitglied
    Registriert seit
    07.01.2006
    Beiträge
    36
    Das Problem dürfte darin liegen, dass der atmega8 die while-Schleife ständig (ziemlich schnell) durchläuft. In der Zeit, in der Du die Taste gedrückt hälst, zählt er folglich i immer weiter hoch. In der Variante (i == 4) ist die Bedingung also nur sehr kurz erfüllt, bei (i>=4) kommt es irgendwann zu einem Überlauf und i ist negativ, die LED schaltet um, bis i wieder größer 3 ist...

    Wenn Du den Tastendruck zählen willst, musst Du die Taste entprellen und sicherstellen, dass er jedes Drücken nur einmal zählt. (geht sicher professionell auch - ich helfe mir einfach damit, dass ich in einer while-Schleife auf den Tastendruck warte, dann einen Moment Zeit vergehen lasse und danach mit einer while-Schleife warte, bis die Taste losgelassen ist; dann wieder von vorn)

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    19.01.2006
    Beiträge
    7
    könntest du vielleicht den code posten? irgendwie bekomme ich das nicht hin.

  4. #4
    Benutzer Stammmitglied
    Registriert seit
    07.01.2006
    Beiträge
    36
    schau Dir mal die zwei Seiten an:

    http://www.mikrocontroller.net/artic....29Entprellung
    http://www.mikrocontroller.net/articles/Entprellung

    Da sind auch code-Beispiele dabei - die sollten die wesentlichen Fragen klären.

    Viel Erfolg!

Berechtigungen

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

12V Akku bauen