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

Thema: Wie kriege ich die LED´s aus?

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    03.04.2007
    Ort
    Frankfurt/M
    Beiträge
    67

    Wie kriege ich die LED´s aus?

    Anzeige

    Praxistest und DIY Projekte
    hallo!

    ich habe es endlich hingekrigt 2 LED`s auf Tastendruck zum Leuchten gebracht,jetzt möchte ich sie wieder auf Tastendruck zum Ausschalten bringen! hat jemanden eine Idee, was dazu schreiben soll?
    Das Programm lautet:


    #include <avr/io.h>

    //extern void wait(uint8_t T);

    #define T1 0x04
    #define T2 0x08
    #define LED1 0x20
    #define LED2 0x40


    int main()
    {

    DDRD |= 0x60;

    while(1)
    {
    if (PIND & T1)
    {
    PORTD |= LED1;
    }

    if (PIND & T2)
    {
    PORTD |= LED2;
    }
    else
    {
    PortD &= 0x00;
    }
    return 0;
    }

  2. #2
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    06.03.2007
    Beiträge
    176
    if (PIND & T1)
    {
    PORTD |= LED1;
    }
    if ((PIND & T1) && (PORTD & LED1))
    {
    PORTD &=~ LED1;
    }


    wie wäre es damit ?

  3. #3
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    15.01.2006
    Ort
    Biberach
    Alter
    34
    Beiträge
    485
    Hi,
    du musst eine Variable verwenden die getoggelt wird sobald du die Taste drückst. In der While Schleife fragst du dann einfach die Variable ab, ist sie auf 1 -> LED ein, ist sie auf 0 -> LED aus.

    MfG

  4. #4
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    06.03.2007
    Beiträge
    176
    Zitat Zitat von coCo
    Hi,
    du musst eine Variable verwenden die getoggelt wird sobald du die Taste drückst. In der While Schleife fragst du dann einfach die Variable ab, ist sie auf 1 -> LED ein, ist sie auf 0 -> LED aus.

    MfG
    muss man ?

    ich muss nicht, bei mir funzt die LED On Abfrage auch ohne Variable

    lcd_gotoxy(19,3);
    lcd_puts( (PORTB&(1<<_tog_LED_PB)) ? "T" : " " );

    wenn sie also an ist, kann sie ausgeschaltet werden, wenn sie aus ist eingeschaltet

  5. #5
    Benutzer Stammmitglied
    Registriert seit
    03.04.2007
    Ort
    Frankfurt/M
    Beiträge
    67


    if (PIND & T1)
    {
    PORTD |= LED1;
    }
    if ((PIND & T1) && (PORTD & LED1))
    {
    PORTD &=~ LED1;
    }
    es geht leider immer noch nicht!

    du musst eine Variable verwenden die getoggelt wird sobald du die Taste drückst. In der While Schleife fragst du dann einfach die Variable ab, ist sie auf 1 -> LED ein, ist sie auf 0 -> LED aus.
    kannst du mir vielleicht ein Beispiel posten?

  6. #6
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    06.03.2007
    Beiträge
    176
    Zitat Zitat von RIFMAN
    es geht leider immer noch nicht!
    kannst du mir vielleicht ein Beispiel posten?
    was geht nicht ?

    schaltest du den Taster nach + oder GND ?
    Pullup ist on/off ?

    besser wäre Pullup setzen und die Taster nach GND zu schalten


    //extern void wait(uint8_t T);

    #define T1 0x04
    #define T2 0x08
    #define LED1 0x20
    #define LED2 0x40


    int main()
    {

    DDRD |= (1<<LED1); // LED1 definiert zum Ausgang machen
    DDRD |= (1<<LED2); // LED2 definiert zum Ausgang machen
    DDRD &=~(1<<T1); // T1 definiert zum Eingang machen
    DDRD &=~(1<<T2); // T2 definiert zum Eingang machen

    DDRD |= (1<<T1); // T1 Pullup setzen
    DDRD |= (1<<T2); // T2 Pullup setzen

    while(1)
    {
    if(PIND & T1==0)
    {
    while(PIND & T1==0)
    ;
    if(PORTD & LED1)
    PORTD &=~ LED1;
    else
    PORTD |= LED1;
    }
    if(PIND & T2==0)
    {
    while(PIND & T2==0)
    ;
    if(PORTD & LED2)
    PORTD &=~ LED2;
    else
    PORTD |= LED2;
    }
    }
    return 0;
    }

    Achtung LED wechselt erst nach Taster loslassen , Minientprellung

  7. #7
    Erfahrener Benutzer Robotik Einstein Avatar von SprinterSB
    Registriert seit
    09.06.2005
    Ort
    An der Saar
    Beiträge
    2.802
    @jar:

    Entprellt wird hier nichts... und die Shifts sind doppelt gemoppelt
    Disclaimer: none. Sue me.

  8. #8
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    06.03.2007
    Beiträge
    176
    Zitat Zitat von SprinterSB
    @jar:
    Entprellt wird hier nichts... und die Shifts sind doppelt gemoppelt
    1, na ja
    2 ???

    sind ja auch 2 LED und 2 Tasten

  9. #9
    Erfahrener Benutzer Robotik Einstein Avatar von SprinterSB
    Registriert seit
    09.06.2005
    Ort
    An der Saar
    Beiträge
    2.802
    (1 << LED1) ist immer 0. Dito für (1<<LED2), (1<<T1) und (1<<T2)...
    Wenn der Taster prellt, wird dennoch mehrfach umgeschaltet. Gleiches, wenn der Taster länger gedrückt resp. losgelassen bleibt (je nachdem, wie er angeschlossen ist).

    Zudem blockiert das "Entprellen" eines Tasters die Hauptschleife und damit insbesondere auch den jeweils anderen Taster...
    Disclaimer: none. Sue me.

  10. #10
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    06.03.2007
    Beiträge
    176
    Zitat Zitat von SprinterSB
    (1 << LED1) ist immer 0. Dito für (1<<LED2), (1<<T1) und (1<<T2)...
    dann wäre die define wohl besser, mag ich eh lieber
    und dann klappts auch mit dem shiften

    #define T1 PD2
    #define T2 PD3
    #define LED1 PD5
    #define LED2 PD6

Berechtigungen

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

MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad