Ich arbeite zurzeit an meiner Projektarbeit für die Schule. Ich möchte einen Taster dazu bringen das wenn ich ihn zum 1. mal anclicke das mein Licht angeht. Beim 2. Mal anclicken soll das Licht (also die Led) etwas dunkler werden. Beim 3. und 4. mal soll es noch dunkler werden also von 100% auf 75% auf 50% auf 25% helligkeit. Beim 5. mal anclicken soll es wieder ausgehen.
ist es den überhaupt möglich eine Led so zu "dimmen" ?
Und geht es das ich den Schalter so programmiere das er bei jedem click was anderes macht?
Kenne mich um ehrlich zu sein nicht so richtig damit aus. Hab auch versucht in meinem Arduino Heft was zu finden aber da steht nichts von so einem Programm.
Im englischen Teil des Forum müssen die Beiträge und Diskussionen in englischer Sprache verfasst werden. Deswegen wurde diese Diskussion in den deutschen Teil des Forums verschoben.
Das Problem ist, dass es mehr Möglichkeiten gibt, etwas zu machen als in ein Heft passt.
Das gilt sogar für das Internet mit den Millionen Beispielen, die du dort finden kannst.
Und für jede mögliche Funktion gibt es zig Varianten, wie man es machen kann. @combie s Art zeichnet sich dadurch aus, dass man gar nichts sieht. Das nennt sich Kapselung, ist elegant, hilft dir aber nicht weiter.
"dimmen" ist schon der richtige Ausdruck, da solltest du viel finden.
Leider geht beim Uno analogWrite nicht mit der eingebauten LED, da müsstest du dich entscheiden, ob du einen anderen Pin, Vorwiderstand und LED nimmst, oder die eingebaute LED anders zum vermeintlich schwächer leuchten bringen willst.
"Bei jedem Click eine andere Funktion"
Mach mal, dass bei "jedem Click" eine Zeile im SerialMonitor ausgegeben wird. Das ist schon schwierig. ( @noiasca's Tip "state change detection") Wenn das geht, kannst du ja bei jeder Ausgabe eine Zahl um eins hochzählend ausgeben.
Dann bist du schon ziemlich nah dran.
Danke für die Blumen!
Kapselung ist nicht der einzige Aspekt.
Modularisierung, Wiederverwendung und Flachheit spielen auch eine Rolle.
z.B. hat meine Variante nur ein if an der Oberfläche und keine Schleifen.
Schalter sind doof. Die kann man nicht programmieren.
Tipp:
Du willst keine 5 verschiedenen Funktionen/Befehle. sondern 5 verschiedene Werte ausgeben.
Es bietet sich ein Array an.
const int ledPin = 9; // Pin, an dem die LED angeschlossen ist
const int buttonPin = 2; // Pin, an dem der Taster angeschlossen ist
int brightness = 0; // Variable zur Speicherung der Helligkeit
int buttonState = 0; // Variable zur Speicherung des aktuellen Tasterzustands
int lastButtonState = 0; // Variable zur Speicherung des vorherigen Tasterzustands
void setup() {
pinMode(ledPin, OUTPUT); // Der Pin, an dem die LED angeschlossen ist, wird als Ausgang konfiguriert
pinMode(buttonPin, INPUT); // Der Pin, an dem der Taster angeschlossen ist, wird als Eingang konfiguriert
}
void loop() {
buttonState = digitalRead(buttonPin); // Lese den aktuellen Tasterzustand
// Wenn der Taster gedrückt wird
if (buttonState != lastButtonState && buttonState == HIGH) {
brightness += 25; // Erhöhe die Helligkeit um 25%
if (brightness > 100) {
brightness = 0; // Wenn die maximale Helligkeit erreicht ist, setze sie auf 0 zurück
}
analogWrite(ledPin, (brightness / 100.0) * 255); // Setze die Helligkeit der LED entsprechend der aktuellen Variable
}
lastButtonState = buttonState; // Speichere den aktuellen Tasterzustand für den nächsten Durchlauf
delay(50); // Warte kurz, um Fehlauslösungen durch Prellungen zu vermeiden
}
Weil ich mir den code den Anforderungen entsprechend generiert lassen habe, ihn mir durchgelesen habe, für gut befunden habe, aber aufgrund von Zeit/Hardwaremangel ihn nicht auf einem Arduino ausprobiert habe.
Ich bin hier nicht auf einer Partnerbörse und bin deswegen nicht auf das finden von Freunden hier im Forum angewiesen. Damit kann ich also leben. Und das sich hier im Forum die Elite gleich auf den Schlips getreten fühlt wenn es nicht nach ihrem Kopf geht, dass ist mir auch schon aufgefallen.
Aber anstatt hier alles schlecht zu reden, trage doch einfach mal was sinnvolles zum Thema bei und stelle meinen von mir gepostetetn (müll) code in den Schatten!
Weil mit Sicherheit, kann man aus der einfachen Aufgabenstellung auch eine Wissenschaftliche Arbeit machen und dieses dann mit Doktortitel abschließen, aber ganz ehrlich sollte es selbst der (müll) code von Chatgpt in diesem fall völlig tun und man kann sich mehrere Stunden Zeitintensives programmieren sparen.
Und am Ende (so meine Meinung) kommt es nicht drauf an wo der code herkommt, sondern das es funktioniert!
Aber ja um es zu perfektionieren, könnte man die LED im Setupbereich noch auf LOW setzen