PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Um x weiterzählen und wieder bei 0 Beginnen? Ich steh völlig an, bitte um Hilfe.



Unregistriert
06.02.2016, 09:12
Ich möchte gerne eine LED Lampe die beim erneuten einschalten immer die Farbe wechselt gezielt ansteuern können. Wenn diese Lampe also auf weiß steht, möchte ich ihr durch rasches ein und aus schalten sagen können "schalte auf blau".

Beispiel:

0=weiß
1=rot
2=grün
3=blau

steht diese Lampe nun also gerade auf weiß und ich möchte blau ist das sehr einfach.

Istwert=0
Sollwert=3

Sollwert - Istwert = 3
3 Schritte weiterschalten und ich habe blau.

Wie gehe ich jedoch vor wenn ich nun von z.B. grün auf rot schalten möchte? Hier kann ich diese Rechnung leider nicht anwenden.

Hubert.G
06.02.2016, 09:22
Wie sagst du das die Lampe blau sein soll?
Machst du das mit PC, µC, oder sonst irgendwie?

i_make_it
06.02.2016, 09:49
Egal ob Hardare oder Software, das ist ein Zähler mit einem Überlauf der einenen Reset des Zählers verursacht (ihn zurück auf null setzt).
Kommt wirklich jeder Puls einzeln, ist das kein Problem.
In Software: Ist der Input ein zeitdiskreter Impuls, eine Zählschleife die bei jedem Signal um eins inkrementiert und einen Vergleich bei größer 3 hat.
In Software: Ist der Input eine Zahl, dann muß der aktuelle Zählerstand genommen werden und der Input aufaddiert werden.
Hiervon wird solange, rekursiv 4 subtrahiert, bis das Ergebniss kleiner 4 ist. Das Ergebniss wird dann zum neuen Zählerstand.
In Hardware: Bei einzelnen Impulsen ein CD 4017 mit dem fünften Ausgang (0 bis 3 gleich 4) auf dem Reseteingang und der Eingangsimpuls am Takteingang.
In Hardware: Bei einer Zahl als Input wird es etwas schwieriger, da es auf die Kodierung der Eingangszahl ankommt (Binär, BCD).

Bei einer Softwarelösung, wäre noch interessant welche Plattform (Microcontroller / Board) und welche Programmiersprache / Programmierumgebung genutzt wird. Da nur so konkrete Tips gegeben werden können die sich auf dem Zielsystem dann auch so implementieren lassen.

Unregistriert
06.02.2016, 10:48
Das ganze wird mit einem Atmel und einem Relais später realisiert. Es handelt sich um ein Pool Licht, dass durch kurzes ausschalten immer die Farbe wechselt. Wie ich die Hardware hin bekomme ist für mich kein Problem, jedoch scheitere ich derzeit noch daran, wenn ich z.B. 3 Schritte weiter zählen möchte und dabei wieder über 0 weiter muss. Also ein Überlauf. Ich habe keine Möglichkeit die Lampe zu resetten um immer von 0 wegzählen zu können (dann wäre das ganze einfach). Sie "merkt" sich den letzten Zustand immer. Stoße da leider an meine Grenzen :-) Wenn mir hier jemand mit einer kleinen "Formel" weiterhelfen kann, wäre ich sehr dankbar.

Hubert.G
06.02.2016, 12:19
Welche Programmiersprache verwendest du denn?
In eine Formel gießen kann ich das nicht.

Unregistriert
06.02.2016, 12:33
ich programmiere in bascom.

Hubert.G
06.02.2016, 12:49
Mit BASCOM tu ich mir schwer, mit C könnte ich dir helfen.
Es wird sich hier aber sich jemand finden.

Tomy83
06.02.2016, 18:46
if Zähler=4 then Zähler=0 hilft dir nicht?

Oder meinst du das der µC nicht weiß welche Farbe beim Einschalten leuchtet? Weil die Lampe die Farbe speichert, aber der µC immer bei 0 beginnt. Dann solltest du beim µC ausschalten den aktuellen Farbwert ins EE-Prom schreiben, und beim Programmstart wieder einlesen.

Holomino
07.02.2016, 02:58
(Soll+Feldgröße-Ist) Modulo Feldgröße.

Wenn Bascom reines Basic ist, sollte der Modulo als MOD geschrieben werden, wahrscheinlich also:

Distanz = (Soll+4-Ist) MOD 4

i_make_it
07.02.2016, 07:23
Das ganze wird mit einem Atmel und einem Relais später realisiert.

ich programmiere in bascom.
Ich kann zwar auch klein Bascom, aber Google hilft ja bekanntlich.
Mal sehen was man da rausbekommt.



Ich möchte gerne eine LED Lampe die beim erneuten einschalten immer die Farbe wechselt gezielt ansteuern können.

Also muß der Amtel das Einschalten mitbekommen.
"Beim Enschalten", heist schon mal "steigende Flanke".
Also einen Interrupt mit Rising.
http://staff.ltam.lu/feljc/electronics/bascom/BASCOM_Tutorial_2.pdf

Damit bekommt Bascom dann schon mal mit das es einen Einschaltvorgang gibt.



Wenn diese Lampe also auf weiß steht, möchte ich ihr durch rasches ein und aus schalten sagen können "schalte auf blau".


Dafür braucht es dann den Ausgang der entsprechend getoggelt wird.
Und deine Tabelle, damit Bascom weis um wieviel Schritte es schalten muß.



0=weiß
1=rot
2=grün
3=blau




Wie gehe ich jedoch vor wenn ich nun von z.B. grün auf rot schalten möchte? Hier kann ich diese Rechnung leider nicht anwenden.

Da hatte ich ja schon geschrieben, das es ein Zähler mit Überlauf ist und wie die Rechnung funktioniert.

Jetzt muß sich der Amtel aber noch mit der Lampe synchonisieren um die Lampe in die richtige Farbe schalten zu können.
Und ggf. will man ja auch überwachen ob die Lampe nun an ist und in welcher Farbe.

Zum reinen Synchonisieren, reicht ein einzelner Fotosensor (LDR) und ein passender Farbfilter (Man kennt ja noch die 3D-Brillen mit einer roten und einer grünen Folie).
Zum bestimmen der aktuellen Farbe braucht es drei Sensoren mit den entsprechenden Filtern.

Unregistriert
08.02.2016, 08:04
Ich habe es jetzt hinbekommen. Zwar nicht ganz wie ich es zu beginn geplant hatte aber es läuft nun.

Eigentlich hatte ich geplant, dass ich die Farbe durch weiterklicken zuerst mal einstelle (am Display sehe) und erst wenn ich meine gewünschte Farbe gewählt habe, die einzelnen Schritte danach gesamt ausgeführt werden. Also am Ende der Farbwahl, schaltet dann das Relais dementsprechend z.B. 3 mal rasch aus und wieder ein. Somit hätte ich die Farben die zwischen diesen 3 Schritten liegen nicht gesehen an der Lampe, da diese erst nach einer kurzen Wartezeit die neue Farbe anzeigt. Das ganze wird später mit einem SSR Relais realisiert, somit höre ich nichts klicken.

Ich habe es nun so gelöst, dass die einzelnen Schritte in Echtzeit durchgeführt werden. Ich switche also die Farben einzeln durch und sehe den Farbwechsel auch sofort immer. Somit ist das ganze einfach zu programmieren. Wenn Farbe > 4 dann Zähler wieder auf 0. Das ganze wird natürlich noch im Artmel nicht flüchtig abgespeichert und somit bin ich immer synchron (auch wenn mal die Versorgungsspannung ausfällt).

Den MOD Befehl werde ich mir mal ansehen in Bascom. Danke an alle die geholfen haben. Meine Poolsteuerung ist nun so gut wie fertig und der Sommer kann kommen :-)

Peter(TOO)
08.02.2016, 18:37
Hallo,

Wenn Farbe > 4 dann Zähler wieder auf 0. Das ganze wird natürlich noch im Artmel nicht flüchtig abgespeichert und somit bin ich immer synchron (auch wenn mal die Versorgungsspannung ausfällt).
Ist eigentlich ganz einfach:


Farbe = Farbe + 1
IF Farbe >4 THEN Farbe = 0

wird zu


Farbe = Farbe + 1
Farbe = Farbe MOD 5

MfG Peter(TOO)

Unregistriert
09.02.2016, 14:10
Danke, werde mir den MOD Befehl mal ansehen.