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: Realais takten mit Sekundenabfrage Kategorie: Programmierung Basic (von Achim - 28.05.2004 0:37)
 Als Antwort auf Realais takten mit Sekundenabfrage von Holger - 27.05.2004 23:17
> Ich möchte ein paar Relais mehrmals pro Minute schalten.

Kein Problem.

> Dazu habe ich ein Programm geschrieben was das machen soll. Dummerweise schalten die Relais
> nur einmal pro Minute um.

Dann hast Du Fehler im Programm.

> Eine OR Verknüpfung im IF Befehl:
> (if second=5) OR (second=20) then goto ein …..hat nicht funktioniert.

Mal abgesehen von der falsch gesetzten Klammer wird diese OR Verknüpfung durchaus funktionieren.

> Auch wenn ich zwei IF Befehle hintereinander schreibe bringt es nix.

Wenn das korrekte OR -Statement aufgrund eines Fehlers an anderer Stelle schon nicht die gewünschte
Wirkung zeigt, wird ein ersatzweise eingefügtes anderes korrektes  Statement(-paar) den Fehler, der ja
an anderer Stelle liegen muss, auch nicht korrigieren können. ;-)

> Was kann ich sonst
> noch versuchen ?

Debuggen. Wenn Du der Meinung bist, an einer Stelle (z. B. dem OR-Statement) liege der Fehler,.
schreibe ein minimales Programm mit diesem Statement und schaue, ob es tut was es soll. Beim
OR-Statement z. B.


#loop
if (second = 5) OR (second = 20) then print "if (second = 5) OR (second = 20) war true"
pause 1
goto loop
end




> 'Sensorabfrage'
> #anfang
> if zuend = on then goto warn
> if tast1 =off then goto spuelen
> if tpoel<dauer then goto dauer


Das Kleiner-Zeichen ist ein Sonderzeichen (HTML). Daher so etwas immer in <code> </code>
einpacken und &lt; und &gt; verwenden und die Vorschau bemühen. Ansonsten sind Deine
Listings auf Anhieb nicht lesbar.

Du hast den Code ab den Labeln spuelen und dauer nicht gepostet.


> if tpoel<heiz then goto heizphase
> #heizphase


Sinnfrei, oder?

> LED4=1
> if second=5 then goto ein
> if second=25 then goto aus
> goto anfang
> #ein rel1=on :rel2=on :rel3=on goto anfang
> #aus rel1=off :rel2=off :rel3=off goto anfang
> goto anfang
> #warn
> LED2=1
> beep 200,50,20  'Spülwarnung'
> goto anfang
>
> Jetzt kommt das seltsame:
> Wenn das Programm durch Taster 1 auf #warn springt, bleibt es dort
>  hängen und nervt mit pieeeep...pieeep....usw. bis in alle Ewigkeit, obwohl der Taster
> nicht mehr gedrückt wird. Dabei sollte es doch eigentlich beim nächsten Schleifendurchlauf nicht
> mehr zu #warn springen. Irgendwie komme ich der Sache nicht auf die Schliche ;-{

Bitte die Zeilenlänge selbständig kürzen. Diese war zu lang.

Ich finde das Verhalten nicht seltsam,  da ich nicht sehe, wo die Variable zuend
je zurückgesetzt wird. Von daher ist bei einmal gesetztem zuend der Code


> 'Sensorabfrage'
> #anfang
> if zuend = on then goto warn
...
> #warn
> LED2=1
> beep 200,50,20  'Spülwarnung'
> goto anfang


eine offensichtliche Endlosschleife.

Vielleicht solltest Du Dich zunächst einmal an einfacherern Aufgaben versuchen.

HTH

Bye
 Achim

 Antwort schreiben

Bisherige Antworten: