Forum: Mikrocontroller und Digitale Elektronik Nur ein Ausgang auf High setzen


von PIC18 (Gast)


Lesenswert?

Hallo an alle lieben,

ich habe 8 schalter an einem Eingang des Mikrocontrollers(PIC18) 
angeschlossen. Durch umschalten des Schalters soll die am Ausgang 
angeschlossene LED leuchten! Für jede schalter habe ich jeweils einen 
LED angebracht!

Die Funktionen( in C ) der einzelnen schalter werden dann in einer 
do-while Schleife nacheinander aufgerufen.

Jetzt möchte ich hier eine Verriegelung einbauen, sodass nur eine LED am 
ausgang leuchten kann!

Das Problem: Wenn ich 2 Schalter schließe, blinken die LED´s am 
Ausgang..

Wie kann ich dieses Problem beseitigen???

Gruss

von Peter II (Gast)


Lesenswert?

PIC18 schrieb im Beitrag #2799323:
> Wie kann ich dieses Problem beseitigen???

ich würde den C code umschreiben.

von PIC18 (Gast)


Lesenswert?

Peter II schrieb:
> ich würde den C code umschreiben.

Das ist mir schon klar..Ich würde ja gerne wissen wie ich das 
umschreiben kann oder sollte??

Gruss

von Michael H. (michael_h45)


Lesenswert?

PIC18 schrieb im Beitrag #2799338:
> Ich würde ja gerne wissen wie ich das
> umschreiben kann oder sollte??
am besten so, dass es nacher stimmt!

Netiquette

von pompete (Gast)


Lesenswert?

.....vielleicht mit einem entsprechenden Programmierwerkzeug?....oder 
was ist jetzt Deine Frage?

von pompete (Gast)


Lesenswert?

....ich sitze in meinem Zimmer,warum ist es hier dunkel?

von PIC18 (Gast)


Lesenswert?

Ich habe das Programm selber geschrieben.

void main(void)
{
do{
Schalter1();
Schalter2();
..
..
}while(1);
}

Da der die einzelnen Funktionen durchgeht, kann auch mehrere LED's am 
Ausgang leuchten. Dies ist ja mein Problem... :)

von Al3ko -. (al3ko)


Lesenswert?

Mach eine if Anweisung? Wenn ein Schalter getätigt, setze alle anderen 
Ausgänge auf low

von Peter II (Gast)


Lesenswert?

PIC18 schrieb im Beitrag #2799349:
> Ich habe das Programm selber geschrieben.

und warum zeigst du uns das nicht? Wie sollen wir dir sagen was du 
ändern sollte wenn wir nicht sehen wie du es gemacht hast.

von PIC18 (Gast)


Lesenswert?

Jetzt sieht ihr es.. Könnt ihr mir jetzt einen lösungsweg empfehlem???

Gruss

von 121212qw (Gast)


Lesenswert?

Hi

>Jetzt sieht ihr es.. Könnt ihr mir jetzt einen lösungsweg empfehlem???

Ich sehe nichts.

MfG Spess

von Wolfgang (Gast)


Lesenswert?

PIC18 schrieb im Beitrag #2799448:
> Jetzt sieht ihr es.
Wo? Keine Ahnung was Schalter1() und Schalter2() machen.
Mit dem Bruchstück kann doch keiner etwas anfangen.

Du mußt dir den vorherigen Schalterzustand merken, damit du damit 
vergleichen kannst und nur bei einer Änderung an den Schaltern den 
Zustand der LEDs änderst. Hast du über Entprellung nachgedacht?
Wenn aller Schalter auf einem Port liegen, dürfte das die Sache 
übersichtlicher gestalten.

von Nils H. (curby23523)


Lesenswert?

8 Schalter an einem Eingang? Multiplexen?

von PIC18 (Gast)


Lesenswert?

Die schaltern sind in den unterschiedlichen ports 
angeschlossen..(a,b,c,d) eine entprellung habe ich bereits auch mit 
warteschleifen implementiert.
In der funktion schalterX() geht die led bei einer unterschreitung des 
schwellwertes( also beim schliessen des schalters) an--> if( adcval < 
threshold) led=1; else led=0;
Die funktionen sind für alle anderen schaltern identisch

Gruss

von Peter II (Gast)


Lesenswert?

du sollst nicht schreiben was der code macht, sondern uns deinen code 
zeigen. sonst wird dir hier niemand helfen.

von hagi (Gast)


Lesenswert?

> In der funktion schalterX() geht die led bei einer unterschreitung des
> schwellwertes( also beim schliessen des schalters) an--> if( adcval <
> threshold) led=1; else led=0;

Das einlesen des Tastenstatus ist ja auch die richtige Aufgabe für einen 
ADC .....

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.