Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - FAQ - Zum CC1-Forum - Zum CC-Pro-Forum

Re: Fehlfunktion der Station? Kategorie: Verschiedenes (von Michael - 10.08.2004 1:34)
Als Antwort auf Re: Fehlfunktion der Station? von André H. - 9.08.2004 9:01
Ich nutze:
C-Control II Station
Hallo André,
erst einmal ganz herzlichen Dank für die Info (auch wenn ich gestehen mu�, da� ich nicht alles
verstanden habe ;-)  - zu den Details frage ich in einem späteren Posting noch einmal...
Aber es kann sehr gut sein, daÃ? ich groÃ?e induktive Lasten mit den Relais schalte: einmal ein
elektronisches Vorschaltgerät für Leuchtstoffröhren, au�erdem eine Pumpe für eine Beregnungs-
anlage sowie einen Ultraschallvernebler.

Du hast mich gebeten, das Script zu posten. Hier kommt es: es ist sicher noch verbesserungsfähig...
Die verwendete Funktion "wait_for_key" habe ich selbst geschrieben und im Modul "station.io" unter-
gebracht:

function wait_for_key() returns int
{
   while keycode == 255
   {keycode=getkey();}
   return keycode;
}

Hier das Hauptprogramm...
Solltest Du Verbesserungsvorschläge haben, wie sich manche Sachen eleganter lösen lassen, so
bin ich für jeden Tipp dankbar ;-)

Herzliche Grü�e,
Michael


/*************************
      Klimasteuerung
*************************/
type TIME
{
   int hour;
   int minute;
   int second;
}

  TIME licht_an, licht_aus;
  TIME nebel_an_1, nebel_aus_1;
  TIME nebel_an_2, nebel_aus_2;
  TIME nebel_an_3, nebel_aus_3;
  TIME regen_an_1, regen_aus_1;
  TIME regen_an_2, regen_aus_2;
  TIME regen_an_3, regen_aus_3;

  byte licht, nebel, regen;


function set_time1()
{
   system.settime(21, 38, 00);
}

function set_time2()
{
   int key, digitcounter;
   int hour, minute, second;
   string s;
   
   digitcounter = -1;
   hour = 0;
   minute = 0;
   second = 0;
   
   station_lcd.clear();
   station_lcd.home();
   station_lcd.print("Set Time");
   station_lcd.line2();
   station_lcd.print("--:--:--");
   
   key=station_io.wait_for_key();
   while ((digitcounter < 6) or (key != 14))
   {
      plm.beep(plm.TONE_C2); sleep 50; plm.beep(plm.TONE_OFF);
      s="--:--:--";
      if key <= 9
      {
         digitcounter = digitcounter + 1;
         if digitcounter <= 2
         {hour = hour*10 + key;
         station_io.wait_for_release();}
         else if digitcounter <= 4
         {minute = minute *10 + key;
         station_io.wait_for_release();}
         else if digitcounter <= 6
         {second = second *10 + key;
         station_io.wait_for_release();}
         
         s = "";
         if digitcounter == 1
         {str.putint(s,hour); s = s + "-:--:--";
         station_io.wait_for_release();}
         if digitcounter == 2
         {str.putint(s,hour); s = s + ":--:--";
         station_io.wait_for_release();}
         if digitcounter == 3
         {str.putint(s,hour)  ; s = s + ":";
          str.putint(s,minute); s = s + "-:--";
          station_io.wait_for_release();}
         if digitcounter == 4
         {str.putint(s,hour)  ; s = s + ":";
          str.putint(s,minute); s = s + ":--";
          station_io.wait_for_release();}
         if digitcounter == 5
         {str.putint(s,hour)  ; s = s + ":";
          str.putint(s,minute); s = s + ":";
          str.putint(s,second); s = s + "-";
          station_io.wait_for_release();}
         if digitcounter == 6
         {str.putint(s,hour)  ; s = s + ":";
          str.putint(s,minute); s = s + ":";
          str.putint(s,second);
          station_io.wait_for_release();}
      }
     
      if key == 13
      {
         digitcounter = digitcounter - 1;

         s = "";
         if digitcounter == 1
         {hour = hour / 10;
          str.putint(s,hour); s = s + "-:--:--";
          station_io.wait_for_release();}
         if digitcounter == 2
         {minute = 0;
          str.putint(s,hour); s = s + ":--:--";
          station_io.wait_for_release();}
         if digitcounter == 3
         {minute = minute / 10;
          str.putint(s,hour)  ; s = s + ":";
          str.putint(s,minute); s = s + "-:--";
          station_io.wait_for_release();}
         if digitcounter == 4
         {second = 0;
          str.putint(s,hour)  ; s = s + ":";
          str.putint(s,minute); s = s + ":--";
          station_io.wait_for_release();}
         if digitcounter == 5
         {second = second / 10;
          str.putint(s,hour)  ; s = s + ":";
          str.putint(s,minute); s = s + ":";
          str.putint(s,second); s = s + "-";
          station_io.wait_for_release();}
      }
     
      station_lcd.line2();
      station_lcd.print(s);

      station_io.wait_for_release();
      key = station_io.wait_for_key();
         
      station_io.wait_for_release();
   }
   system.settime(hour, minute, second);
   station_io.wait_for_release();
}

function compare_time(TIME zeit1, TIME zeit2) returns byte
{
   long sec1, sec2;
   sec1 = (zeit1.hour * 60 + zeit1.minute)*60 + zeit1.second;
   sec2 = (zeit2.hour * 60 + zeit2.minute)*60 + zeit2.second;
   if sec1 == sec2 {return 0;}
   if sec1 > sec2 {return 1;}
   if sec1 < sec2 {return 2;}
}

function Licht_an()
{
   station_io.RELon(1);
   station_io.LEDon(6);
   licht = 1;
}

function Licht_aus()
{
  station_io.RELoff(1);
  station_io.LEDoff(6);
  licht = 0;
}

function Nebel_an()
{
   station_io.PORTset(3, 1);
   station_io.LEDon(7);
   nebel = 1;
}

function Nebel_aus()
{
   station_io.PORTset(3, 0);
   station_io.LEDoff(7);
   nebel = 0;
}

function Regen_an()
{
   station_io.PORTset(2, 1);
   station_io.LEDon(8);
   regen = 1;
}

function Regen_aus()
{
   station_io.PORTset(2, 0);
   station_io.LEDoff(8);
   regen = 0;
}

//-----------------------
  thread Zeitsteuerung
//-----------------------
{
   run 5;
   TIME zeit;
   string uhrzeit, line2;
   int comp;
   do
   {
     zeit.second = system.second();
     zeit.hour   = system.hour();
     zeit.minute = system.minute();
   }
   while system.second() != zeit.second;
   
   uhrzeit = "";
   str.putintf(uhrzeit, zeit.hour, 2);
   str.putstring(uhrzeit, ":");
   str.putintf(uhrzeit, zeit.minute, 2);
   str.putstring(uhrzeit, ":");
   str.putintf(uhrzeit, zeit.second, 2);
   
   station_lcd.line2();
   station_lcd.print(uhrzeit);

// licht an
   comp = compare_time(zeit, licht_an);
   if comp == 0 {Licht_an();}
// licht aus
   comp = compare_time(zeit, licht_aus);
   if comp == 0 {Licht_aus();}
   
// NEBEL
// nebel an 1
   comp = compare_time(zeit, nebel_an_1);
   if comp == 0 {Nebel_an();}
// nebel aus 1
   comp = compare_time(zeit, nebel_aus_1);
   if comp == 0 {Nebel_aus();}
// nebel an 2
   comp = compare_time(zeit, nebel_an_2);
   if comp == 0 {Nebel_an();}
// nebel aus 2
   comp = compare_time(zeit, nebel_aus_2);
   if comp == 0 {Nebel_aus();}
// nebel an 3
   comp = compare_time(zeit, nebel_an_3);
   if comp == 0 {Nebel_an();}
// nebel aus 3
   comp = compare_time(zeit, nebel_aus_3);
   if comp == 0 {Nebel_aus();}

   
// REGEN
// regen an 1
   comp = compare_time(zeit, regen_an_1);
   if comp == 0 {Regen_an();}
// regen aus 1
   comp = compare_time(zeit, regen_aus_1);
   if comp == 0 {Regen_aus();}
// regen an 2
   comp = compare_time(zeit, regen_an_2);
   if comp == 0 {Regen_an();}
// regen aus 2
   comp = compare_time(zeit, regen_aus_2);
   if comp == 0 {Regen_aus();}
// regen an 3
   comp = compare_time(zeit, regen_an_3);
   if comp == 0 {Regen_an();}
// regen aus 3
   comp = compare_time(zeit, regen_aus_3);
   if comp == 0 {Regen_aus();}
}



//------------
  thread main
//------------
{
  int key;
 
  station_lcd.init();
  station_lcd.clear();
  station_io.Clear();

  station_lcd.home();
  station_lcd.print("Function Mode");
   
// setze variablen für Lichtsteuerung
  licht_an.hour = 08;
  licht_an.minute = 00;
  licht_an.second = 00;
  licht_aus.hour = 20;
  licht_aus.minute = 00;
  licht_aus.second = 00;
  licht = 0;
 
// setze variablen für Regensteuerung
  regen_an_1.hour = 07;
  regen_an_1.minute = 00;
  regen_an_1.second = 00;
  regen_aus_1.hour = 07;
  regen_aus_1.minute = 01;
  regen_aus_1.second = 00;

  regen_an_2.hour = 14;
  regen_an_2.minute = 00;
  regen_an_2.second = 00;
  regen_aus_2.hour = 14;
  regen_aus_2.minute = 01;
  regen_aus_2.second = 00;
 
  regen_an_3.hour = 19;
  regen_an_3.minute = 00;
  regen_an_3.second = 00;
  regen_aus_3.hour = 19;
  regen_aus_3.minute = 01;
  regen_aus_3.second = 00;
 
  regen = 0;

// setze variablen für Nebelsteuerung
  nebel_an_1.hour = 07;
  nebel_an_1.minute = 00;
  nebel_an_1.second = 00;
  nebel_aus_1.hour = 09;
  nebel_aus_1.minute = 00;
  nebel_aus_1.second = 00;

  nebel_an_2.hour = 14;
  nebel_an_2.minute = 00;
  nebel_an_2.second = 00;
  nebel_aus_2.hour = 15;
  nebel_aus_2.minute = 00;
  nebel_aus_2.second = 00;
 
  nebel_an_3.hour = 19;
  nebel_an_3.minute = 00;
  nebel_an_3.second = 00;
  nebel_aus_3.hour = 21;
  nebel_aus_3.minute = 00;
  nebel_aus_3.second = 00;

  nebel = 0;

  set_time2();
  run Zeitsteuerung;
 
  station_lcd.clear();
  station_lcd.home();
  station_lcd.print("Function Mode");

  loop
  {
  key = station_io.getkey();
  while key == 255 {key = station_io.getkey();}
  plm.beep(plm.TONE_C2); sleep 50; plm.beep(plm.TONE_OFF);
  if key == 10 // licht
  {
     if licht == 1 {Licht_aus();}
     else {Licht_an();}
  }
  if key == 11 // nebel
  {
     if nebel == 1 {Nebel_aus();}
     else {Nebel_an();}
  }
  if key == 12  // regen
  {
     if regen == 1 {Regen_aus();}
     else {Regen_an();}
  }
  station_io.wait_for_release();
  }
}


    Antwort schreiben


Antworten:

Re: Fehlfunktion der Station? (von André H. - 10.08.2004 10:42)
    Re: Fehlfunktion der Station? (von Michael - 10.08.2004 14:56)