-
-
Selbsthaltung BackLeds
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.
-
Erfahrener Benutzer
Fleißiges Mitglied
Moin,
guck mal unter wikipedia.de bei ´flipflop´, sowas musst du mit Variablen programmieren.
Mit Zauberwort, das wäre perfekt gewesen.
Grüße, (Michael)
-
Erfahrener Benutzer
Robotik Einstein
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.
-
Erfahrener Benutzer
Roboter Genie
Möglicherweis kann es ein Problem mit dem Tastenprellen geben.
-
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
-
Foren-Regeln
Lesezeichen