Hi, ich nehme an, daß Eltakos die Stromstoßrelais sind. Jetzt möchtest Du normale Relais an die Led1, Led2, Led3 Pinports anschließen? Was genau funktioniert denn an meinem letzten Code mit den Relais nicht?
Gruß
Searcher
Hi, ich nehme an, daß Eltakos die Stromstoßrelais sind. Jetzt möchtest Du normale Relais an die Led1, Led2, Led3 Pinports anschließen? Was genau funktioniert denn an meinem letzten Code mit den Relais nicht?
Gruß
Searcher
Geändert von Searcher (28.03.2013 um 07:10 Uhr)
Hoffentlich liegt das Ziel auch am Weg
..................................................................Der Wegzu einigen meiner Konstruktionen
Hi Searcher!
Richtig! Eltakos sind die Stromstoßschalter!
Dein Code funktioniert entsprechend meiner Beschreibung zu 100% richtig!!Danke dafür!
MEIN Fehler war das ich nicht bedacht hatte das ich die Eltakos abfragen muss, da beim Szenariendurchlauf ja immer nur einmal die Ausgänge auf high gesetzt werden.
Als Beispiel:
LED1 & Led2 & Led3 werden im letzten Szenario auf high gesetzt. Also alle 3 Eltakos ziehen an und halten. Das nächste Szenario wäre Led1 high, Led2&3 low. Es würde nichts passieren da Led1 einfach high bleibt und Led2&3 keinen weiteren Impuls zum lösen des Eltkaos bekommen. Da ich aus Platzgründen nicht die Möglichkeit habe die Position der Eltakos ab zu fragen und denke das eine Änderung Softwaremäßig wohl sehr Umfangreich würde, dachte ich an Standart Relais zum betreiben der Schaltung...
War halt mein Denkfehler! Sorry! Übe´noch!
Viele Grüße,
p@ty
Kein Problem. Aber was funktioniert mit dem letzten Code von mir nicht. Ich überlege ja schon an einer Lösung, kann aber nur vermuten, daß Du mit dem kurzen Tastendruck das vorher angewählte Szenario nicht einschalten kannst?
Ist das so
Nur sagen, was Du brauchst - hab heute ein bißchen Zeit. SONDERANGEBOT
Guß
Searcher
Hoffentlich liegt das Ziel auch am Weg
..................................................................Der Wegzu einigen meiner Konstruktionen
Sonderangebot??? Da muss ich zu greifen!!!
Mit Led´s funktioniert Dein Code Klasse! Aber mit selbshaltenden Eltakos klappts dann natürlich nicht.
Okay, ich versuche es nochmal in Worte zu fassen....^^
Option 1 Relais!
Hierbei sollte die Szenarienauswahl ja passen da die Relais ja abfallen wenn keine Spannung anliegt.
Da sie ja nicht über Selbsthaltung verfügen muss das der Druck auf den Taster bewerkstelligen.
Halt Taster drücken = Led1 usw High! Nochmal drücken Led´s low! usw...
Option 2 Eltakos!
Hier würde der Code soweit abgeändert werden müssen, daß die Led´s bzw Eltakos einen zusätzlichen Impuls bekommen um vorm Szenarienwechsel wieder low zu sein. Da ja sonst die Eltakos aufgrund ihrer Selbshaltung die ganze Zeit über High wären. Man müsste sie abfragen welchen Zustand sie haben und diese Information wieder zum µC führen. Leider ist Hardwareseitig absolut kein Platz zur verfügung.
Also dann doch Option 1 mit "Normalen" Relais! ^^
Danke für Deine Hilfe Searcher!
Viele Grüße,
p@
Tasten wir uns mal ran. Ich hab immer noch nicht verstanden, was im Datail unbefriedigend ist und hab einfach mal was gemacht. Kennst das, was von Planung über Entwicklung, Fabrikation, Lieferung und Montage am Ende übrig bleibt?
Nicht getestet aber sollte so sein:
Auswahl Szenario wie gehabt.
Am Ende der Auswahl bei Taster loslassen werden die Relais(Leds) nicht abgeschaltet, aktuelles Szenario bleibt an.
Mit folgendem kurzem Tastendruck wird dann abgeschaltet.
Mit weiterem kurzen Tastendruck wird vorhergehendes Szenario wieder eingeschaltet.
Hab noch ein Case für den kuzen Tastendruck eingefügt und das Abschalten der LedX am Ende rausgenommen. - Dieses Case wieder entfallen nach Update. Kurzer Tastendruck wird am Ende abgefragt.
PS. Ohhh schon Fehler entdeckt - Update kommt später
Update gemacht
Code:'################################### '### Bascom Demoversion V2.0.7.5 ### '################################### $regfile = "m168def.dat" $framesize = 32 $swstack = 32 $hwstack = 34 $crystal = 16000000 Dim Hundertstelsekunden As Word 'enthält Tastendrucklänge in Hundertstel Sekunden Dim Ledspeicher As Byte 'Speichert Zustand der LEDs in einzelnen Bits Const Led_1 = 0 'Zum Adressieren der Bits in Ledspeicher Const Led_2 = 1 'Zum Adressieren der Bits in Ledspeicher Const Led_3 = 2 'Zum Adressieren der Bits in Ledspeicher Portd.4 = 1 'Pullup an PD4 einschalten Taster Alias Pind.4 'Taster an PD4 Led1 Alias Portc.0 'Anschluß für LED1 ? Led2 Alias Portc.1 'Anschluß für LED2 ? Led3 Alias Portb.3 'Anschluß für LED3 ? Config Led1 = Output Config Led2 = Output Config Led3 = Output Do 'Hauptschleife Debounce Taster , 0 , Taste_gedrueckt , Sub 'Wenn Tasteranschluß auf 0 (low) -> Subroutine Taste_gedrueckt 'Debounce hat bei Aktivität auf dem PIN ca. 25ms Verzögerung Loop 'Ende Hauptschleife Taste_gedrueckt: 'Unterprogram wird angesprungen, wenn Taste gedrückt wurde Hundertstelsekunden = 0 'initialisieren für Zeitmessung While Taster = 0 'Solange Taster gedrückt ist... Waitms 10 '0,01s Zeitmeßschritte Incr Hundertstelsekunden 'alle 10ms erhöhen Select Case Hundertstelsekunden 'Hundertstelsekunden enthält Länge des Tastendruckes in Hundertstelsekunden Case 20 To 69 : Ledspeicher = Bits(led_1) 'Taste zwischen 200ms und <700ms gedrückt Case 70 To 119 : Ledspeicher = Bits(led_2) 'Taste zwischen 700ms und <1200ms gedrückt Case 120 To 169 : Ledspeicher = Bits(led_3) Case 170 To 219 : Ledspeicher = Bits(led_1 , Led_2) Case 220 To 269 : Ledspeicher = Bits(led_1 , Led_3) Case 270 To 319 : Ledspeicher = Bits(led_2 , Led_3) Case 320 To 369 : Ledspeicher = Bits(led_1 , Led_2 , Led_3) Case 370 : Hundertstelsekunden = 19 'Taste 3,7s und länger gedrückt-> Auswahl Lichtszenario beginnt neu End Select if Hundertstelsekunden >= 20 then 'wenn Selektion, dann Leds entsprechend einschalten Led1 = Ledspeicher.Led_1 Led2 = Ledspeicher.Led_2 Led3 = Ledspeicher.Led_3 end if Wend if Hundertstelsekunden < 20 then 'wenn Taste nur kurz gedrückt wurde ... If Led1 = 1 or Led2 = 1 or Led3 = 1 then 'und irgendeine Led eingeschaltet ist Led1 = 0 'dann alle ausschalten Led2 = 0 Led3 = 0 else 'oder gespeichertes Szenario einschalten. Led1 = Ledspeicher.Led_1 Led2 = Ledspeicher.Led_2 Led3 = Ledspeicher.Led_3 end if end if Return 'zurück zur Hauptschleife End 'end program
Geändert von Searcher (28.03.2013 um 13:39 Uhr) Grund: Programm berichtigt, hoffentlich
Hoffentlich liegt das Ziel auch am Weg
..................................................................Der Wegzu einigen meiner Konstruktionen
Jepp, das womit sich der Kunde zufrieden geben muss
aber nichts mehr mit dem eigentlich angenommenen Auftrag zu tun hat! ^^
Mein Gott bist Du schnell!!! Ja, genau so sollte es sein!
Kann Deinen Code aber erst heute Abend testen! Hab´ erst gegen 17h Feierabend! Aber dann ist langes Osterwochenende und das hast Du mir gerade um 100% verbessert!
Bin schon sehr gespannt!
Viele Grüße!
p@
Geändert von Searcher (28.03.2013 um 12:49 Uhr)
Hoffentlich liegt das Ziel auch am Weg
..................................................................Der Wegzu einigen meiner Konstruktionen
Lesezeichen