Hello again,
Its going futher.
Its the complete code with the switch modes.
I want to use "TimerSet1" voor switch on and off in the evening.
Who ha an idea?
Regards Henk,
// Ingangen en uitgangen benoemen.
// LDR.
int Ldr = A0; //ingang van ldr=a0.
int LdrVal = 0; //startwaarde van ldr=0.
//Schakelaar.
int Sch = A1; //ingang van schakelaar=a1.
int SchVal = 0; //startwaarde van sch=0.
//Pir.
int Pir = A2; //ingang van pir=4.
int PirVal = 0; //startwaarde van pir=0.
// Variabelen benoemen.
int LdrSet= LOW;
int SchSet= LOW;
int PirSet= LOW;
int Count= LOW;
int TimerSet1 = HIGH;
int TimerSet2 = LOW;
//int TimerSet3 = HIGH;
int Counter= 30;
int AC_LOAD1 = 10; // Output to Opto Triac pin
int AC_LOAD2 = 11; // Output to Opto Triac pin
int Carport = 128; // Dimming1 level (0-128) 0 = ON, 128 = OFF
int Voordeur = 128; // Dimming2 level (0-128) 0 = ON, 128 = OFF
//-------------------------------------------------------------------------
void setup()
{
Serial.begin(9600);
pinMode(AC_LOAD1, OUTPUT);
pinMode(AC_LOAD2, OUTPUT);
attachInterrupt(0, zero_crosss_int, RISING);
}
//-------------------------------------------------------------------------
void zero_crosss_int()
{
int dimtime1 = (75 * Voordeur); // (10000us - 10us) / 128 = 75 (Approx)
int dimtime2 = (75 * Carport); // (10000us - 10us) / 128 = 75 (Approx)
if ( dimtime1 > dimtime2)
{ delayMicroseconds(dimtime2);
digitalWrite(AC_LOAD2, HIGH);
delayMicroseconds(10);
digitalWrite(AC_LOAD2, LOW);
delayMicroseconds( dimtime1 - dimtime2);
digitalWrite(AC_LOAD1, HIGH);
delayMicroseconds(10);
digitalWrite(AC_LOAD1, LOW);
}
else
{ delayMicroseconds(dimtime1);
digitalWrite(AC_LOAD1, HIGH);
delayMicroseconds(10);
digitalWrite(AC_LOAD1, LOW);
delayMicroseconds( dimtime2 - dimtime1);
digitalWrite(AC_LOAD2, HIGH);
delayMicroseconds(10);
digitalWrite(AC_LOAD2, LOW);
}
}
//-------------------------------------------------------------------------
void loop()
{
LdrVal=analogRead (Ldr);
PirVal=analogRead (Pir);
SchVal=analogRead (Sch);
if (LdrVal < 30) {LdrSet = HIGH;}
if (LdrVal > 50) {LdrSet = LOW;}
if (PirVal > 400) {PirSet = HIGH;}
if (PirVal < 200) {PirSet = LOW;}
if (SchVal <500) {SchSet = HIGH;}
if (SchVal >800) {SchSet = LOW;}
if (Counter < 1) {TimerSet2 = LOW;}
//Schakelaar.
if (SchSet == HIGH)
{
Carport = 0;
Voordeur = 0;
//Console.println ("Buiten_Full_Hand");
}
//Donker en Beweging
else if (PirSet == HIGH && LdrSet == HIGH )
{
Carport = 0;
Voordeur = 0;
Counter = 30;
TimerSet2 = HIGH;
//Console.println ("FullLight");
}
//Donker en Beweging en Deur full
else if (PirSet == LOW && LdrSet == HIGH && TimerSet1 == HIGH && TimerSet2 == HIGH)
{
Carport = 120;
Voordeur = 0;
Counter--;
//Console.println ("Doorlight");
}
else if (PirSet == LOW && LdrSet == HIGH && TimerSet1 == HIGH && TimerSet2 == LOW)
{
Carport = 128;
Voordeur = 128;
//Console.println ("LowLight");
}
else
{
Carport = 128;
Voordeur = 128;
//Console.println ("Off");
}
delay(100);
}//loop