Hi,
was hast du den für ein Problem mit der Uhr und welcher Teil vom Programm ist für die Lauflichtgeschwindigkeit zuständig?
Hallo Bascom Programmierer,
ich benötige mal eure Hilfe bei einem Projekt.
Ich habe vor bei meier Treppe die Stufen mit LED´s zu beleuchten, dazu sollen die LED´s per PWM gedimmt werden und wie ein Lauflicht von oben nach unten durchlaufen. Die Geschwindigkeit wird so eingestellt das es wie ein Dauerleuchten aussieht. Um Port pins zu sparen mache ich das mit einen 4067 Multiplexer (Im Prog fehlen noch die 8-4-2-1 Code Angaben da die Hardware noch nicht fertig ist). Ein LDR Sensor erfasst die Lichtstärke im Flur und stellt dann die PWN in zwei Stufen ein (Abend und Nachtwert)
Jetzt zu meinem Problem:
1. Ich möchte das die Beleuchtung von 10-15 Uhr immer ausgeschaltet ist. Dazu habe ich schon eine Uhr mit einprogrammiert, aber irgendwie habe ich da ein Brett vor dem Kopf...
2. Könnt ihr mir noch sagen ob ich den Programmteil mit der Lauflichtgeschwindigkeit richtig gemacht habe? konnte ich bisher leider nicht testen.
PWM, Uhr und LDR funktioniern soweit tadellos.
Vielen Dank schon mal
Jemand mit einer neuen Idee ist ein Spinner, bis er Erfolg hat.
(Mark Twain)
Hi,
was hast du den für ein Problem mit der Uhr und welcher Teil vom Programm ist für die Lauflichtgeschwindigkeit zuständig?
Schaut ruhig mal auf meiner Homepage vorbei :
http://kampis-elektroecke.de
Oder folge mir auf Google+:
Daniel Kampert
Es gibt 10 Arten von Menschen. Die einen können Binär, die anderen nicht.
Gruß
Daniel
Hallo Kampi,
die Uhr an sich läuft reibungslos ich möchte halt nur das in der Zeit von 10 bis 15 Uhr die LED´s aus sind bzw, keine PWM ausgegeben wird.
( siehe Programmteil PWM wir an pin 17 ausgegeben)
Der teil mit dem Lauflicht ist im Prog beschrieben mit Geschwindigkeit bzw. Variable geschwindigkeitll wird gesteuert vom Timer0
Das prog. Habe ich eigentlich soweit ganz übersichtlich unterteilt.
Gruß
Neutro
Jemand mit einer neuen Idee ist ein Spinner, bis er Erfolg hat.
(Mark Twain)
Hi,
also die Berechnungen für den Timer0 sehen (soweit ich es sehen kann) gut aus.
Nur soweit ich das gesehen habe, hast du beim Timer1 für die Uhr einen kleinen Fehler gemacht. Der Timer1 ist ein 16-Bit Timer und zählt bis 65535. Das heißt du musst den Timer mit 3035 vorladen um auf genau 1 Sekunde zu kommen.
Schaut ruhig mal auf meiner Homepage vorbei :
http://kampis-elektroecke.de
Oder folge mir auf Google+:
Daniel Kampert
Es gibt 10 Arten von Menschen. Die einen können Binär, die anderen nicht.
Gruß
Daniel
Stufe 15 wird nie angesteuert.
Wenn immer nur eine Stufe leuchten soll, würde es auch per Schieberegister gehen, wo immer nur Bit geschoben wird.Code:If Timecount = Geschwindigkeitll Then Incr Lednr Timecount = 0 End If If Lednr = 15 Then Lednr = 0 End If Select Case Lednr Case 1 : Gosub Stufe1 Case 2 : Gosub Stufe2 Case 3 : Gosub Stufe3 Case 4 : Gosub Stufe4 Case 5 : Gosub Stufe5 Case 6 : Gosub Stufe6 Case 7 : Gosub Stufe7 Case 8 : Gosub Stufe8 Case 9 : Gosub Stufe9 Case 10 : Gosub Stufe10 Case 11 : Gosub Stufe11 Case 12 : Gosub Stufe12 Case 13 : Gosub Stufe13 Case 14 : Gosub Stufe14 Case 15 : Gosub Stufe15 End Select
Z. B.
Code:$regfile = "m8def.dat" $crystal = 4000000 Dim Geschwindigkeitll As Byte Geschwindigkeitll = 40 '40x25ms =1 Sek. Dim Timecount As Word Timecount = 1 Dim Lednr As Word Config Dcf77 = Pind.5 , Timer = 1 , Gosub = Sectic 'DCF-Uhr Routine, lässt sich auch mit einem 4MHZ Quarz ohne DCF-Empfänger nutzen Pin Alias Portd.6 'Angenommen der DataPIN Pclock Alias Portd.7 'Angenommen, der ClockPIN Lednr = 1 Do Gosub Lauflicht Loop End Lauflicht: If Timecount = Geschwindigkeitll Then If Lednr = 32768 Then 'nur 15 Stufen, daher auf die Erste springen Lednr = 1 Else Shift Lednr , Left End If Timecount = 0 End If If _hour > 9 And _hour < 16 Then Lednr = 32768 End If Shiftout Pin , Pclock , Lednr , 0 'hier die Schieberegister mit den LEDs ansteuern Return Sectic: 'Uhranzeigen Return
Wenn das Herz involviert ist, steht die Logik außen vor! \/
Hallo Peterfido,
Das mit der Stufe 15 ist schon so gewollt, die hatte ich erst mit vorgesehen bekommt aber keine LED´s.
Das mit dem Schieberegister ist sicherlich auch eine gute möglichkeit das Lauflicht umzusetzen, kommt aber im Endeffekt aber ja auf´s gleiche raus.
Was viel wichtiger ist: du hast das stück code mit der Uhrzeit mit reingebracht!! Danke!!! Ich werde das mal ausprobieren, werde damit dann den PWM Timer deaktivieren.
Ich melde mich dann wieder wenn ichs prbiert habe.
Danke bis hierhein schon mal an alle
Jemand mit einer neuen Idee ist ein Spinner, bis er Erfolg hat.
(Mark Twain)
So, jetzt melde ich mich dann auch noch mal wieder zu Wort.
Das Programm läuft nun meinen Wünschen entsprechend nachden ich die
Programmzeile
If _hour > 9 And _hour < 16 Then
stop timer0
else
start Timer0
end if
eingefügt hatte. (Hätte man eigentlich auch selber drauf kommen können,
aber ich bin froh das man hier im Forum kompetente Hilfe bekommt.
@ Kampi: ich hatte den Timerwert mit dem RNavr Tool ausgerechnet und die Werte so übernommen.
Vielen Dank
Neutro
Jemand mit einer neuen Idee ist ein Spinner, bis er Erfolg hat.
(Mark Twain)
Hallo,
die Timerberechnung mit dem RNavrTool liegt bei mir auch immer um eins daneben. Das könnte mal überarbeitet werden. Evtl. noch eine Option auf CTC wäre ebenso wünschenswert.
Wenn das Herz involviert ist, steht die Logik außen vor! \/
Warum sind die Zeitvariablen (Stunde, Minute, Sekunde) eigentlich als Word definiert?
Grüße
Thomas
@Peterfido: Danke für die Info bezg. des RNAVR Tool, ich werde den Wert noch korrigieren.
@Thomas E: Ich hatte das Uhrenprogramm mal vor Jahren im Netz gefunden und das dann einfach immer so übernommen. Eigentlich sollten dafür ja Byte Variablen
völlig ausreichen. Müsste ich mal testen ob das irgendwas ausmacht.
VG
Neutro
Jemand mit einer neuen Idee ist ein Spinner, bis er Erfolg hat.
(Mark Twain)
Lesezeichen