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: Zeitschaltuhr Kategorie: Programmierung Basic (von mibr85 - 31.08.2005 17:26)
 Als Antwort auf Re: Zeitschaltuhr von ManfredW - 31.08.2005 17:19
mibr85 nutzt:  CC1-Unit V1.1
Hier noch eine frage.
warum gehen wenn die temperatur steigt die relais nacheinander an und bleiben alle an erst wenn die temperatur sink gehen nach einander die jeweiligen relais wieder aus.
ich will aber das jeweils nur ein relais angeht.
hier der quelltext:

'Digitalports
define Clock Port[1] 'Serial clock input für SHT75
define Data Port[2] 'Serial data für SHT75
define DS Port[3]'DATA IN für Relaisplatine
define SH Port[4] 'Shift CLK für Relaisplatine
define ST Port[5] 'Stotre CLK für Relaisplatine


'Variablen
define tempW word[1] 'Überlappung mit Byte 1 & 2 !!!!
define temp  byte[1] 'temporäres Datenbyte
define temp2 byte[2] 'temporäres Datenbyte
define i     byte[3]
define ack   byte[4]

define dataW   word[3]
define dataWhi byte[5]
define dataWlo byte[6]

define Temperatur word[4]
define Feuchte word[5]

define tempW2  word[6]




define rel byte[13] 'Byte-Puffer für rel1 bis rel8
define rel1 bit[97] 'Relais 1
define rel2 bit[98] 'Relais 2
define rel3 bit[99] 'Relais 3
define rel4 bit[100] 'Relais 4
define rel5 bit[101] 'Relais 5
define rel6 bit[102] 'Relais 6
define rel7 bit[103] 'Relais 7
define rel8 bit[104] 'Relais 8
define rn byte[14] 'Relaisnummer



 gosub SHTinit
#messen
 Temperatur = SHTgettemp
 Feuchte = SHTgethyg
 put 12
 print "Temperatur:",
 print Temperatur '/100;",";abs((Temperatur/10))mod 10;abs(Temperatur mod 10);"°C"
 print "Feuchte: ",
 if Feuchte>=0 then print Feuchte else print "Fehler" '/10;",";Feuchte mod 10;"%rH" else print "Fehler"
 pause 50
 gosub Lüfter
goto messen

#Lüfter
 rel = 0
 if temperatur >3200 then rel1=on
 if temperatur >3100 and <=3200 then rel2=on
 if temperatur >3000 and <=3100 then rel3=on
 if temperatur >2900 and <=3000 then rel4=on
 if temperatur >2800 and <=2900 then rel5=on
 if temperatur >2700 and <=2800 then rel6=on
 if temperatur >2600 and <=2700 then rel7=on
 if temperatur >2500 and <=2600 then rel8=on
 goto next
 #zurück
return



#next
 gosub shift
 pulse ST
goto zurück


#shift
 for rn=7 to 0 step -1
  DS=(rel shr rn) and 1
  pulse SH
 next
return





'-------------------------------- benötigt für sensor -----------------------------------------------

#SHTinit
 deact Data
 Clock = 0
 for i=0 to 10 pulse Clock
return

#SHTstart
 Clock =-1
 Data  = 0
 Clock = 0
 Clock =-1
 deact Data
 Clock = 0
return

#SHTwrite
 for i=0 to 7
  if (temp shl i) and &h80 then deact Data else Data = 0
  pulse Clock
 next i
 deact Data
 Clock = -1
 temp=(Data=0)
 Clock =0
return temp

#SHTread
 temp=0
 for i=0 to 7
  Clock =-1
  temp=(temp shl 1) or (Data and 1)
  Clock = 0
 next i
 if ack then Data = 0 else deact Data
 pulse Clock
 deact Data
return temp

#SHTreadint
 tempW = timer
 #SHTwloop
  if timer-tempW>=50 then return &hF000
 if Data then goto SHTwloop
 ack = 1
 dataWhi=SHTread 'High-Byte
 ack = 0
 dataWlo=SHTread 'Low-Byte
return dataW

#SHTgettemp
 gosub SHTstart
 temp = &b00011 : gosub SHTwrite
 dataW = SHTreadint-4000
return dataW

#SHTgethyg
 gosub SHTstart
 temp = &b00101 : gosub SHTwrite
 Feuchte=SHTreadint
 if Feuchte and &h8000 then return -1
 tempW = Feuchte shr 4
 i = Feuchte mod 16
 looktab shtab,tempW,tempW2
 tempW = tempW - 1
 looktab shtab,tempW,tempW
 tempW2 = ((tempW2 - tempW) * i) shr 4
 Feuchte = tempW + tempW2
return Feuchte

table shtab "sht.tab"


 Antwort schreiben

Bisherige Antworten:

Re: Relais Programm testen (von ManfredW - 31.08.2005 18:10)
    Re: Relais Programm testen (von mibr85 - 31.08.2005 18:24)
        Re: Relais Programm testen (von ManfredW - 31.08.2005 19:03)