Pages: [1]   Go Down
Author Topic: Hallo komme leider nicht mehr weiter mit meiner Rolladenschaltung  (Read 1250 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 18
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hallo, ich hoffe mir kann jemand helfen. Bin gerade am aufbauen einer Rolladenschaltung, diese funktioniert soweit auch.
Momentan schaltet der LDR den Rollladen bei einer bestimmten Helligkeit hoch und bei der entsprechende Dunkelheit wieder runter.
Da ich ausschließen möchte das der Rolladen fährt, wenn z.B Autoscheinwerfer oder der Bewegungsmelder die Lampen am Haus kurz schaltet etc. habe ich mir überlegt das dieser nur schalten darf, wenn der Wert für eine bestimmte Zeit über oder unterschritten wird.

Aktueller Code:
//***************************Photoresistor***********************************

if ((photosensorValue > 800) && (remember1 == 1)){
remember1=0;//
T1_T2_val=0;//Ruhe position von den Rolladen
T1_T2_val --; //rolladen hochfahren
previousMillis1=millis();
}

//*************

if ((photosensorValue < 50) && (remember1 == 0)){
remember1=1;//variabel verhindert das der Rolladen erst wieder schalten darf, wenn es vorher dunkel war.(toggeln)

T1_T2_val=0;
T1_T2_val ++;//rolladen runterfahren
previousMillis2=millis();}

//***********************************Haupttaster**************************************
if(HT1_state !=HT1_oldState){
if(HT1_state == HIGH){
if(T1_T2_val  > -1){
T1_T2_val --;}}}
HT1_oldState=HT1_state;

if(HT2_state !=HT2_oldState){
if(HT2_state == HIGH){
if(T1_T2_val < 1){
T1_T2_val ++;}}}
HT2_oldState=HT2_state;

//*************************************Rolladenküche***********************************
if(T1_state !=T1_oldState){
if(T1_state == HIGH){
if(T1_T2_val  > -1){
T1_T2_val --;}}}
T1_oldState=T1_state;
  
if (T1_T2_val == -1){
digitalWrite(R1,HIGH);
if (currentMillis-previousMillis1 > rollMoveTime){
previousMillis1=currentMillis;
T1_T2_val ++;
T1_oldState=0;
HT1_oldState=0;}}
 
else{digitalWrite(R1,LOW);
previousMillis1=0; }
  
//****************************  
  
 if(T2_state !=T2_oldState){
 if(T2_state == HIGH){
 if(T1_T2_val < 1){
 T1_T2_val ++;}}}
 T2_oldState=T2_state;
  
 if (T1_T2_val == 1){
 digitalWrite(R2,HIGH);      
 if (currentMillis-previousMillis2 > rollMoveTime){
 previousMillis2=currentMillis;
 T1_T2_val --;
 T2_oldState=0;
 HT2_oldState=0;}}
    
 else{digitalWrite(R2,LOW);
 previousMillis2=0; }}
      

probiert habe ich u.a. folgendes:

if (photosensorValue > 800){
rememberValue1=1;}
else{rememberValue1=0;}

if (rememberValue1==1  && remember == 1){
if (currentMillis-previousMillisPhoto>3000){
previousMillisPhoto=currentMillis1;
T1_T2_val=0;
T1_T2_val --;
remember1=0;
else{previousMillisPhoto=0;}

if ( photosensorValue<120){
rememberValue2=1;}
else{remeberValue2=0;}

if (rememberValue2==1 && remember == 0){

if (currentMillis-previousMillisPhoto>3000){
reviousMillisPhoto=currentMillis2;
T1_T2_val=0;
T1_T2_val ++;
remember1=1;
else{previousMillisPhoto=0;}

leider geht dieses aber auch nicht und nun bin ich an den Punkt gekommen wo ich leider nicht mehr weiter komme.
LG


« Last Edit: September 04, 2012, 06:25:51 am by acoolio » Logged

Germany
Offline Offline
Faraday Member
**
Karma: 56
Posts: 2973
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Vielleicht hilft es uns, und evtl. sogar dir smiley,
wenn du beschreibst, wofür die ganzen Variablen gedacht sind und was welche Werte bedeuten sollen:

rememberTime ist eine Leiche, klar,  aber

remember1 ---
T1_T2_val   --- zählt rauf und runter, aber was bedeutet welcher Wert
HT1_state (schon entprellt, wenns ein Taster ist ?)
HT2_state

T1_state
T2_state
???

Als Ausgabe wird nur ein Bit ( R1 ) entweder auf HIGH oder LOW gesetzt.
D.h. "nix tun" wird dadurch gelöst, dass keine der if Bedingungen erfüllt sind, und der Rolladen zwei eigene Endschalter hat, richtig?
 
Das ganze wird übrigens lesbarer, wenn du richtig einrückst ( macht die IDE für dich mit Tools/AutoFormat = Strg-T )
und du das dann in Code Tags ( # ) packst.

Quote
diese funktioniert soweit auch
Und was passiert in der komplizierten Version, die du jetzt hast ?
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 18
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hallo,

Zu den Variabeln:
HT1=Haupttaster hoch
HT2=Haupttaster runter
Der Haupttaster soll dazu dienen, damit ich alle Rolladen ( werden insgesamt smiley-cool hoch oder runter fahren kann.
T1=Rolladen hoch
T2=Rolladen runter
R1=Relay hoch
R2=Relay runter
T1_T2_val bei =0 Rolladen tuen nichts, bei 1 Rolladen fahren runter, bei -1 Rolladen fahren  hoch, diese fahren momentan nur 5sec hoch bzw. runter, deswegen denke ich das ich den Taster auch nicht entprellen muß, da es nichts ausmacht, wenn der Taster öfters schalten würde oder wird.In dem Falle das der Rolladen fährt, kann ich diesen mit dem entgegengesetzten Taster stoppen ( auch mit dem Haupttaster). Das funktioniert soweit ganz gut.Der LDR schaltet mir die Rolladen beim überschreiten des Hellwertes hoch und beim unterschreiten des dunkelwertes autom. wieder runter und der T1_T2_val wert geht auf=0 also Ruheposition.
Ich habe die Variabel remember1 mit eingebaut, damit die Rolladen nicht anfangen zu toggeln, wenn der Hell Wert grenzwertig sein sollte und mal eine Wolke am Himmel sein soll d.h Rolladen werden vom LDR erst wieder autom hochgefahren , wenn der LDR Wert kleiner als dunkel Wert war.Nun ist es aber so das ich gern eine gewisse Zeit, sagen wir mal so das der LDR erst schalten darf wenn der Wert länger als 3min >Hellwert ist oder 3min kleiner dunkelwert ist.
Hoffe es bringt etwas Licht in die Sache.
Habe mir gerade was ausgedacht, kann es aber momentan nicht ausprobieren.

if(photosensorValue>800&&remember1==1&&photoMillis==0){
photoMillis=millis();}
else if(photoMillis+3000(nur zum testen)<millis(){
remember1=0;
T1_T2_val=0;
T1_T2_val ++;
previousMillis1=millis();
photoMillis=0;}

if(photosensorValue<120&&remember1==0&&photoMillis==0){
photoMillis=millis();}
else if(photoMillis+3000(nur zum testen)<millis(){
remember1=1;
T1_T2_val=0;
T1_T2_val --;
previousMillis1=millis();
photoMillis=0;}

Könnte dies so gehen oder habe ich einen Denkfehler? Hoffe es ist ein bisschen verständlicher geworden.
LG
« Last Edit: September 04, 2012, 06:32:00 am by acoolio » Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 1
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hallo acoolio,

hast du dein Problem mittlerweile gelöst? Einen Rollladen-Motor per Arduino anzusteuern, würde mich auch mal interessieren. Was hast du denn für Rollläden und wie steuerst du die an? Gibt es da ein genormtes Protokoll, für das ich auch Anleitungen finde?

Würde mir wirklich sehr helfen...

MfG
jenald
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 25
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Er hat einfach 2 Relais an den Tastern die an seiner Wandbedienung sind
abgegriffen und emuliert quasi den manuellen Tastendruck smiley
Logged

Pages: [1]   Go Up
Jump to: