|
|
Taal:
|
|
int vStairSteps = 14; // aantal treden int O_nr[15] = {00, 44, 46, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13}; // output nummers in een array zette int iDown = 22; // Nummer input PIR onderaan de trap int iUp = 24; // Nummer input PIR bovenaan de trap int ValFade[15]; // huidige Fade waarden per tree onthouden int vUpGestart = 0; int vDownGestart = 0; int BreakCnt = 0 ; //------------------------------------------------------------------------------------------------------------------------------- void setup() { for (int i = 1 ; i <= 15; i++) { // alle PWM pinnen op output zetten pinMode(O_nr[i], OUTPUT); } pinMode(iDown, INPUT); // PIR inputjes op ingang zetten pinMode(iUp, INPUT); digitalWrite(iDown, LOW); digitalWrite(iUp, LOW); Serial.begin(9600); // serieel verbinding straten voor eventueel debuggen } //------------------------------------------------------------------------------------------------------------------------------- void loop() { int vDown = 0; int vUp = 0; vDown = digitalRead(iDown); vUp = digitalRead(iUp); //Serial.print(vDown); //Serial.println(vUp); if ( vUp == 1 & vUpGestart == 0 & vDownGestart == 0) { vUpGestart = 1 ; trap_op_aan( 1, 150); } if ( vDown == 1 & vDownGestart == 0 & vUpGestart == 0) { vDownGestart = 1 ; trap_neer_aan( 1, 150); } if (vDown == 1 & vUpGestart == 1) { delay(2000); trap_op_uit(10, 5, 20); do { delay(100); } while (digitalRead(iDown) > 0 || digitalRead(iUp) > 0 ); vUpGestart = 0 ; BreakCnt = 0; } if (vUp == 1 & vDownGestart == 1) { delay(2000); trap_neer_uit(10, 5, 20); do { delay(100); } while (digitalRead(iDown) > 0 || digitalRead(iUp) > 0 ); vDownGestart = 0 ; BreakCnt = 0; } if (vUpGestart == 1) { delay(100); BreakCnt = BreakCnt + 1; if (BreakCnt > 300) { trap_op_uit(10, 5, 20); vUpGestart = 0 ; vDownGestart = 0 ; BreakCnt = 0; } } if (vDownGestart == 1) { delay(100); BreakCnt = BreakCnt + 1; if (BreakCnt > 300) { trap_neer_uit(10, 5, 20); vUpGestart = 0 ; vDownGestart = 0 ; BreakCnt = 0; } } } //------------------------------------------------------------------------------------------------------------------------------- //vStart = een drempel tussen de verschillende treden.. als deze op 0 staat zullen alle treden tegelijk uitfaden... //staat deze op 50 ,zal elke tree apart uitfaden //vStep = stap grote van het uit fade //vSpeed = wachtlus //------------------------------------------------------------------------------------------------------------------------------- void trap_op_uit(int vStart, int vStep, int vSpeed) { int i = 1; // tel op, zolang nog niet alle treeden uit zijn do { for (int j = 1; j < vStairSteps + 1; j ++) // starten bij tree 1 { if ( i > (j * vStart) ) // waarde teller groter als drmpel * huidige tree { if (ValFade[j] > 0 ) // Led al uit? nee dan verlagen { ValFade[j] = ValFade[j] - vStep; analogWrite(O_nr[j], ValFade[j]); // Uitgang aansturen } } } i++; delay(vSpeed); } while ( ValFade[vStairSteps] > 0); // laatste tree Uit? } //------------------------------------------------------------------------------------------------------------------------------- //vStart = een drempel tussen de verschillende treden.. als deze op 0 staat zullen alle treden tegelijk uitfaden... //staat deze op 50 ,zal elke tree apart uitfaden //vStep = stap grote van het uit fade //vSpeed = wachtlus //------------------------------------------------------------------------------------------------------------------------------- void trap_neer_uit(int vStart, int vStep, int vSpeed) { int i = vStairSteps * vStart; do { for (int j = vStairSteps; j > 0; j--) // starten bij tree 14 { if ( i < (j * vStart) ) { if (ValFade[j] > 0 ) { ValFade[j] = ValFade[j] - vStep; analogWrite(O_nr[j], ValFade[j]); } } } i--; delay(vSpeed); } while ( ValFade[1] > 0); // laatste tree Uit? } //------------------------------------------------------------------------------------------------------------------------------- void trap_op_aan (int vStep, byte speed) { for (int i = 1 ; i < vStairSteps + 1 ; i++ ) { // lus welke al de treeden afgaat (van onder(1) naar boven(14) for (int fadeValue = 0 ; fadeValue <= 255; fadeValue += vStep) { // lus welke de PWM output van de tree aanzet ValFade[i] = fadeValue; analogWrite(O_nr[i], ValFade[i]); delayMicroseconds(speed); } } } //------------------------------------------------------------------------------------------------------------------------------- void trap_neer_aan (int vStep, byte speed) { for (int i = vStairSteps ; i > 0 ; i-- ) { // lus welke al de treeden afgaat (van boven(14) naar onder(1) for (int fadeValue = 0 ; fadeValue <= 255; fadeValue += vStep) { // lus welke de PWM output van de tree aanzet ValFade[i] = fadeValue; analogWrite(O_nr[i], ValFade[i]); delayMicroseconds(speed); } } }