Das Open-Control-Projekt - Die Alternative zur C-Control-I


Das Forum zur C-Control-1
Welche C-Control-Varianten existieren?
Übersicht - Suchen - Neueste 50 Beiträge - Neuer Beitrag - Login - Registrieren
INFO - FAQ - CC2-Forum - CCPro-Forum 

 Re: Digitale Eingänge gleichzeitig betätigen Kategorie: Open-Micro/Open-Mini/Open-Midi/Open-Macro/Open-Maxi (von Max Oppl - 20.12.2012 18:59)
 Als Antwort auf Re: Digitale Eingänge gleichzeitig betätigen von Jens - 20.12.2012 11:23
Max Oppl nutzt:  Open-Mini, Open-Macro, C-Control 2
> Hallo Max!
>
> Zuerst mĂĽsstest Du Deine Taster anders abfragen und dabei auch gleichzeitig verriegeln.
>
> Define Taster1 Port[9]
> Define Ver1 Byte
> Define Zeit1 Word
>
> If (Not Taster1) And (Ver1 = 0) Then  'durchlaufen wenn Taster EIN
>    Ver1 = 1  'Verriegelung aktivieren
>    Zeit1 = 120  'Laufzeit einstellen
>    Pause 5  'Schalterentprellung
> End If
> If (Taster1) And (Ver1 = 1) Then  'durchlaufen wenn Taster AUS
>    Ver1 = 0  'Verriegelung aufheben
>    Pause 5  'Schalterentprellung
> End If
>
> So erfasst Du beide Schaltzustände, einmal EIN und einmal AUS. Durch die Verriegelung wird die If Anweisung auch nur 1x durchlaufen, dadurch wird die „Zeit1“ Variable auch nur dann verändert wenn Du den Taster betätigst. Anschließend brauchst Du ein „Zeitglied“ wo die Zeit verändert wird.
>
> Define Sekunde Byte
>
> If Second <> Sekunde Then  'durchlaufen wenn nicht gleich
>    Sekunde = Second  'verriegeln - neu zuweisen
>    If Zeit1 > 0 Then Zeit1 = Zeit1 – 1  'Zeit runter zählen
> End If
>
> Die If Anweisung wird 1x pro Sekunde durchlaufen, damit hast Du also eine Zeitbasis mit einer Sekunde. Die Variable „Zeit1“ wird also jede Sekunde um 1 herab gesetzt, bis sie wieder bei 0 angekommen ist. Mit dem Taster hast Du zuvor den Wert auf 120 eingestellt, die Variable erreit so also nach 2 Minuten wieder den Wert 0. Und zu guter letzt muss Du die entsprechenden Ausgänge nur noch in Abhängigkeit der „Zeit1“ Variable schalten.
>
> Define Licht1 Port[11]
>
> If Zeit1 > 0 Then
>    Licht = on  'Licht 1 einschalten
> Else
>    Licht = off  'Licht 1 ausschalten
> End If
>
> Und das war es auch schon. Das ganze packst Du in eine Endlosschleife und Deine Lichtsteuerung ist fertig...
>
> LG Jens

Danke Jens, es funktioniert auch mit zwei Tastern. Hier das Programm:

Define Taster1 Port[9]
Define Taster2 Port[10]
Define Ver1 Byte
Define Ver2 Byte
Define Zeit1 Word
Define Zeit2 Word
Define Licht1 Port[11]
define licht2 port[12]
define licht3 port[4]
define licht4 port[15]
define licht5 port[16]
Define Sekunde Byte
Define Sekunde1 Byte

licht1=off
licht2=off
licht3=off
licht4=off
licht5=off

#start
If (Not Taster1) And (Ver1 = 0) Then  
   Ver1 = 1  
   Zeit1 = 120  
   Pause 5  
End If
If (Taster1) And (Ver1 = 1) Then  
   Ver1 = 0  
   Pause 5  
End If
If Second <> Sekunde Then  
   Sekunde = Second  
   If Zeit1 > 0 Then Zeit1 = Zeit1 -1  
End If

If (Not Taster2) And (Ver2 = 0) Then  
   Ver2 = 1  
   Zeit2 = 120  
   Pause 5  
End If
If (Taster2) And (Ver2 = 1) Then  
   Ver2 = 0  
   Pause 5  
End If
If Second <> Sekunde1 Then  
   Sekunde1 = Second  
   If Zeit2 > 0 Then Zeit2 = Zeit2 -1  
End If

If Zeit1 > 0 Then
   Licht1 = on  
Else
   Licht1 = off  
End If

If Zeit2 > 0 Then
   Licht2 = on  
Else
   Licht2 = off  
End If
goto start

Wenn ich mit dem Taster1 Licht1 anschalte, dann sollte Licht3, Licht4 und Licht5 jeweils 120 sec
nacheinander brennen, Taster 2 sollte weiterhin separat schaltbar sein. Wie mĂĽsste ich dann das Programm umbauen?  
Frohe Weihnachten
GruĂź
Max

 Antwort schreiben

Bisherige Antworten:

Re: Digitale Eingänge gleichzeitig betätigen (von Jens - 20.12.2012 19:41)