Hallo,
ich bin dabei einen Controller für mein LED Treppen- und Flurlicht zu
programmieren. Leider sind meine C-Kenntnisse verbesserungswürdig.
Der Controller überwacht drei Tasten (Treppe oben und unten und Taster
im Flur) und soll entsprechend die LED's schalten.
Der Flur hat nur eine LED, somit eine PWM. Das Treppenhaus hat 3 LEDS
(unten, Mitte, oben). Wird nun die untere Taste gedrückt, sollen die
LEDs von unten nach oben angehen (kurze Pause dazwischen). Wird die
obere Taste gedrückt, soll die Reihenfolge umgekehrt sein.
Die LEDs gehen nach eine einstellbaren Zeit (Variable dim) von alleine
aus. Aber nicht schlagartig, sondern per PWM Dimmung.
Zusätzlich soll eine Daueerlichtschaltung realisiert werden, bei der die
LEDs nicht automatisch ausgehen (Bzw. in dem Fall nach 18 Stunden),
wenn die Taste länger gedrückt wird.
Das Projekt hatte ich vor ein paar Jahren mal ohne PWM realisiert und
einige Funktionen wurden übernommen. Das alte Projekt ist auch gerade
bei mir im Einsatz, hat aber keine PWM Dimmung.
Prinzipiell funktioniert es auch, leider nur prinzipiell :-)
Automatische abschalten inklusive dimmen und Dauerlicht gehen.
Die Taster sind über Widerstände auf VCC gezogen und werden beim drücken
auf GND gezogen.
Am besten funktioniert die Flurschaltung. Jeder Tastendruck wird
erkannt. Leider schaltet der Controller manchmal auch die Treppen-LEDS
("Taste unten") mit ein. Warum auch immer :-(
Die "Taste unten (PIND4) funktioniert auch, nur die "Taste oben" (PIND2)
wird selten erkannt. Das liegt m.M.n. aber nicht an der HW, sondern
daran, welchen Zustand der Controller gerade hat.
Bsp:
PIND2 wird (mehrfach) gedrückt, nichts passiert
PIND4 wird gedrückt, LEDS an
PIND2 wird gedrückt, LEDS aus
usw...
Ich habe schon viel rumprobiert (sieht man im Code) aber es hat nichts
geholfen.
Was ich auch nicht verstehe, warum ich die Tasten per Widerstand auf
high ziehen muss. Ich habe die internen Pull-ups aktiviert. Messe ich
mit dem Oszi an dem PIN, liegen ca. 1 V an. Sobald der uC eingeschaltet
wird verhält er sich, als ob die Tasten gedrückt wären. Mit externen
Pull-ups geht es.
Hat Jemand eine Idee woran das liegen könnte?
Danke im Vorraus.
Christian