PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : c-Control Programmierung



Beta
26.04.2009, 21:01
Hallo Freunde,
ich möchte mir so gerne einige Steuerungen für meine Wohnung bauen.
Meine Problem ist Programmierung der Tasten, mit C-Control,
ich möchte nur eine Taste Programieren
z.B


Define E1 Port[1] (eingabe)
Define A1 Port[2] (ausgabe)

#Loop
If E1=on Then A1=On else A1=off
Goto Loop

Damit kann ich Taste E1 drücken, und A1 bekommt Signal,
aber wenn ich E 1 los lasse geht auch A1 auf Knie,
es sollte so sein:
E1 kurze klick A1 =on
E1 2. mal kurze klick A1=off.

Zweite Problem ist:

Wenn ich E1 Kurze Signal gebe soll A1 Signal erhalten, nach eine Minute später soll A1 wieder auf 0 gehen.

Kann man mir bitte helfen ? es geht ja nur eine Eingang und eine Ausgang.

Ich habe alles versucht auch Goto Gosub Wait usw. Pause
bidde bidde helfen
Danke vorraus
Gruss
Beta

hardware.bas
27.04.2009, 11:57
Fürn genauen Test reichts bei mir zeitlich zwar jetzt auch nicht, jedoch
kann muss man bei der C-Control eh die zu benutzenden Ports immer
abfragen. Dann konnte man bei Tastendruck in eine Schleife springen,
während des Tastendruckes in der Schleife verbleiben, nach Loslassen
aus der Schleife springen und eine Bitvariable, mit der man weitere
Funktionen auslösen kann, umschalten mit TOGGLE. Ist nur ein Beispiel
mit warscheinlich vielen GOTOs, aber GOTO ist vollwertiger Befehl, wie
die meisten anderen auch. VG Mica

Beta
28.04.2009, 19:21
Danke Mica,
sagte ich doch, ich habe alles versucht, für jemand der richtig ahnung hat, ist nur paar Zeile das weiss ich, aber wie? mit schleifen funktioniert nicht.
Gruss
Beta

hardware.bas
28.04.2009, 19:49
Sind schnelle Schaltroutinen verlangt,vielleicht gehts noch anders.
VG Micha

FriLu
01.05.2009, 15:27
Hi,
Hilfsvariable erstellen ( Bit-Typ reicht );
Unterprogramm erzeugen;
Ins Unterprogramm springen wenn taste gedrückt;
Im Unterprogramm Hilfsvariable Invertieren,
Ausgang mit wert der Hilfsvariablen laden,
sekunden und minuten auf "0" stellen,
warten bis Taste losgelassen ( wichtig! ),
return
2tes UP:
Inder Hauptschleife minuten auf > 0 testen, wenn ja:
Ins 2te Up springen
Hilfsvariable und ausgang auf 0 stellen
return
Schönheitsfehler:
Es wird ständig ( 59 von 60 min ) ins 2te UP gesprungen,
aber aus bleibt aus ;)
MfG Lutz

Beta
02.05.2009, 19:48
hallo Liebe Lutz,
danke für die Hilfe, ich muss kurz die Program sehen sonst kann ich nicht verstehen was du meinst:) mit unter Programm habe ich auch versucht, aber die C-Control ist schnelle als ich drücken kann, deswegen ensteht eine schleife die relasi ist nicht mehr an, sonden an aus, es brumt also.

Gruss
Beta

danke
Beta

joergm6
02.05.2009, 21:09
Hallo Beta,
oder etwa so, aber ungetestet, das Prinzip sollte aber erkennbar sein


define E1 Port[1] (eingabe)
define A1 Port[2] (ausgabe)
define SaveSecond as byte
define TimeSecond as byte

#Loop
if SaveSecond<>second then ' jede Sekunde 1x abarbeiten
SaveSecond=second
if TimeSecond>0 then dec TimeSecond ' Timeout runterzählen
if TimeSecond=1 then A1=off ' ausschalten wenn Zeit abgelaufen
end if
If E1=on then ' Taste gedrückt
if A1=off Then ' wenn aus dann einschalten
A1=On
TimeSecond=61 ' Timeout 60 Sekunden
else ' wenn an dann ausschalten
A1=off
TimeSecond=0
end if
wait E1=off ' warte bis Taste losgelassen
end if
goto Loop

Gruß Jörg

FriLu
03.05.2009, 11:43
Hi,
etwas ausführlicher:



'**************************************
' Port mit einer Taste Ein/Aus,
' Max 60 sek Ein.
' FriLu 03.05.09
'**************************************
define Taste Port[1]
define Relais Port[2]
define merker byte ' Bit reicht,
' def je Bas-Dialekt unterschiedlich
'**************************************
#Loop
if Taste then gosub Tastendruck
if min > 0 then gosub Zeit
goto Loop
'**************************************
'*** UPs ******
#Tastendruck
merker= not merker
Relais= merker
min= 0
second= 0
wait not Taste ' Warten bis
' Taste losgelassen !
return
'******************
#Zeit
merker= off
Relais= off
return
'******************
' Bemerkungen:
' zur HW:
' Taste an Ub und Eingang,
' zwischen Eingang und Masse Widerstand (Pulldown)
'
' Zum Programm:
' Ungetestet!


lange nicht mehr C-Control programmiert,
hoffe, das stimmt so...
MfG Lutz

Beta
31.05.2009, 11:15
Vielen Dank für eure Hilfe Jörg und Lutz, es hat nicht Funktioniert, aber ich kann das rest selber raus finden, ich suchte nur den Weg, wie ich anstellen soll,
gruss
Beta

joergm6
31.05.2009, 23:07
Hallo beta,

- wir wissen ja nicht was für eine C-Control du hast, wenn mit LCD-Display, arbeite dich mit LCD-Ausgaben der Variablen oder Tastenereignissen an die Lösung.
- Teste erstmal die Hauptschleife ohne Tastenereignisse und erweitere dann Schritt für Schritt.
- Evtl muss die Funktion "dec TimeSecond" durch "TimeSecond=TimeSecond-1" ersetzt werden, wenn deine OS-Version zu alt ist und "dec" noch nicht kennt.

Gruß Jörg