- Labornetzteil AliExpress         
Ergebnis 1 bis 5 von 5

Thema: Selbsthaltung BackLeds

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    23.05.2005
    Ort
    Bez. Schärding
    Beiträge
    85

    Selbsthaltung BackLeds

    Anzeige

    Praxistest und DIY Projekte
    Hi!
    Aufgabe:

    Programmiere eine Selbsthaltung:

    mit Taster 1 linke BackLED einschalten/ausschalten
    mit Taster 2 rechte BackLED einschalten/auschalten
    mit Taster 3 FrontLED einschalten/auschalten

    Bedingung:
    Das jeweilige LED muss nach dem Loslassen des Tasters den Schaltzustand behalten!
    zb: Drücken von Taster 1(und wieder loslassen)==> linke BackLED "ein", und durch nochmaliges drücken wieder aus, usw.

  2. #2
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    13.07.2006
    Ort
    Bielefeld
    Beiträge
    166
    Moin,

    guck mal unter wikipedia.de bei ´flipflop´, sowas musst du mit Variablen programmieren.

    Mit Zauberwort, das wäre perfekt gewesen.


    Grüße, (Michael)

  3. #3
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    06.02.2005
    Ort
    Hamburg
    Alter
    37
    Beiträge
    4.255
    Du brauchst einen Befehl, der bei jedem Aufruf die LED umschaltet. Der sieht in C so aus:

    Allgemeine Form:
    PORTx^=(1<<Px);

    Für die FrontLED:
    PORTD^= (1 << PD6);

    Für die BackLEDs:
    PORTC^= (1 << PC0);
    und
    PORTC^= (1 << PC1);

    müsste so passen, ich hab keinen Asuro, mit dem ich es testen könnte.

  4. #4
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    12.06.2005
    Ort
    Südwestdeutschland
    Beiträge
    1.142
    Blog-Einträge
    3
    Möglicherweis kann es ein Problem mit dem Tastenprellen geben.

  5. #5
    Benutzer Stammmitglied
    Registriert seit
    23.05.2005
    Ort
    Bez. Schärding
    Beiträge
    85

    Variablen

    Hi!
    Danke für eure Antworten!!!

    unter flipflop bei wikipedia hab ich nur die funktion gefunden, aber nichts programmiertechnisches,

    Weil ich noch kein Programmiergenie bin, weiß ich nicht, wie ich die Ports ins Programm einbinden soll

    ich hab das mal mit variablen "versucht" zu programmieren:


    #include "asuro.h"

    int main(void) {
    Init ();

    int FLED = 1;
    int BLED = 1;

    while (1) {
    if (PollSwitch()==0) {StatusLED(GREEN);SerWrite("00",2);}


    else if (PollSwitch()==4, BLED==1)
    {BackLED(ON,OFF);BLED = 0;SerWrite("04",2);Msleep(500);
    } // wenn taster 3 und bled 1 dann BackLED ein und bled setze 0

    else if (PollSwitch()==4, BLED==0)
    {BackLED(OFF,OFF);BLED = 1;SerWrite("04",2);Msleep(500);
    } // wenn taster 3 und bled 0 dann BackLED aus und bled setze 1


    else if (PollSwitch()==2, FLED==1)
    {FrontLED(ON);FLED = 0;SerWrite("01",2);Msleep(500);
    }

    else if (PollSwitch()==2, FLED==0)
    {FrontLED(OFF);FLED = 1;SerWrite("01",2);Msleep(500);
    }

    }
    }

    Das problem dabei ist aber, dass mit jedem taster nur die BackLED aktiviert wird. Asuro verhält sich so als würde er nur die erste bedingung durchlaufen(der rote Teil)

    Was hab ich da falsch gemacht?
    Wie könnte man es besser programmieren?

    Danke im voraus für eure Antworten,

    Gruß matl

Berechtigungen

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

LiFePO4 Speicher Test