Forum: Mikrocontroller und Digitale Elektronik Zustandswechsel Zählen in Schleife


von Paule G.. (Gast)


Lesenswert?

Eine einfache Sache, aber ich komme nicht drauf.
Wenn ich einen zählerstand messen möchte und die Zählende beobachte, 
bekomme ich, wenn ich die Reflektorlichtschanke auslese immer  Werte um 
ca 0 für keine Zählscheibe oder 150 für Zählscheibe


Wie zähle ich jetzt, beim fortlaufenden durchlaufen der Schleife, immer 
nur beim Wechsel  von 0 zu 150 um eins hoch?!

von EAF (Gast)


Lesenswert?

Per Schmittrigger positive Flanken erzeugen, diese dann erkennen und 
zählen.

von Paule G.. (Gast)


Lesenswert?

1
Kot Anfang
2
  IF ADC_Value >=150 THEN Signal_neu := 1 ELSE Signal_neu := 0;
3
       IF Signal_alt <> Signal_neu THEN Inc (Zaehlerstand);
4
       Signal_alt := Signal_neu;
Kot Ende

So zählt er doppelt, weil logischerweise bei jedem Zustandswechsel



Hat sich gerade erledigt..so gehts
[code]IF ADC_Value >=100 THEN Signal_neu := 1 ELSE Signal_neu := 0;
       IF Signal_alt < Signal_neu THEN Inc (Zaehlerstand);
       Signal_alt := Signal_neu;
[code]

Die Regelung das man nur jede Stunde posten kann unangemeldet, ist 
einfach kacke

von Helge (Gast)


Lesenswert?

.. vor allem, daß man auf den eigenen Beitrag 1h nicht antworten kann.

Eleganter wärs, falls dein uC einen eingebauten Zähler hat, die 
Lichtschranke als dessen Eingang zu verwenden. - und jedenfalls nicht 
auf einen ADC für einen digitalen zustand zu schauen.

von Einer (Gast)


Lesenswert?

EAF schrieb:
> Per Schmittrigger positive Flanken erzeugen, diese dann erkennen und
> zählen.

Wow!

Den Kauderwelsch aus dem Eingangspost hätte ich niemals verstanden.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Paule G.. schrieb:
> IF ADC_Value >=100 THEN Signal_neu := 1 ELSE Signal_neu := 0;
>        IF Signal_alt < Signal_neu THEN Inc (Zaehlerstand);
>        Signal_alt := Signal_neu;
Ich würde das so machen:
1
if (signal==0 and adc>100) { // lo->hi
2
   signal = 1;
3
   cnt = cnt+1;
4
}
5
if (signal==1 and adc<50) {  // hi->lo
6
   signal = 0;
7
}
Dann hätte ich sogar eine Hystere drin, und der Zähler würde nicht bei 
jedem Zappeln zwischen 99 und 100 schon hochzählen...

Paule G.. schrieb:
> Die Regelung das man nur jede Stunde posten kann unangemeldet, ist
> einfach kacke
Uns wären vernünftige, auf die Sache bedachte und in der Wortwahl 
besonnene User auch lieber. Aber leider gibt es laufend Störenfriede und 
Trolle.
> Die Regelung das man nur jede Stunde posten kann unangemeldet, ist
> einfach kacke
Ich kenne Foren, da kannst du nicht mal 1 einzigen Post ohne Anmeldung 
absetzen. Und bei manchen nicht mal mehr als den Anfangsbeitrag lesen 
oder gar irgendwelche Bilder anschauen.

Was war nochmal das Problem?

: Bearbeitet durch Moderator
von Rad-Geber (Gast)


Lesenswert?

Lothar M. schrieb:

> Was war nochmal das Problem?

Das Problem besteht noch -und es heißt Lothar Miller.

Meinst Du ernsthaft, daß Leute darum betteln sollten, helfen zu dürfen, 
ohne daß sie dabei schikaniert werden?

von A. S. (Gast)


Lesenswert?

Rad-Geber schrieb:
> Meinst Du ernsthaft, daß Leute darum betteln sollten, helfen zu dürfen,
> ohne daß sie dabei schikaniert werden?

Dir ist aber schon klar, dass der "Helfende" hier der TO war und die 
eine Stunde nicht ausgereicht hat, entweder klare Gedanken zu fassen 
oder das Trollen fallen zu lassen.

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.