From 42493221c1ede2649bf7b864fff0fc8b7967f9dd Mon Sep 17 00:00:00 2001 From: Michel Date: Thu, 25 Dec 2014 01:52:31 +0100 Subject: [PATCH] v1.0.0 --- Sketch/Sketch.ino | 78 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 78 insertions(+) create mode 100644 Sketch/Sketch.ino diff --git a/Sketch/Sketch.ino b/Sketch/Sketch.ino new file mode 100644 index 0000000..342ea11 --- /dev/null +++ b/Sketch/Sketch.ino @@ -0,0 +1,78 @@ +/************************************* + * Kerstboomshield voor Arduino + * Author: Michel Bats + * Website: www.batssoft.nl + * Version: 1.0.0 + * Revision: 20141216 + *************************************/ + +// Bepalingen +int ledPin[] = { + 5 ,6}; // Uitgangen met PWM-mogelijkheden +int randomLed[] = { + 0 ,0}; // Variabele om te gebruiken bij het aftellen tot het moment van omschakelen +int countLedUp[] = { + 0 ,0}; // Variabele waarbij bij 1 de LED feller moet gaan branden en bij 0 zwakker +int currentLedPwm[] = { + 0 ,0}; // Variabele waarin de huidige PWM-waarde is opgeslagen (0-255) +int ledCount = 2; // Aantal aangesloten LED's (of LED-arrays) +int delayChangeCountDown; +int currentDelay; + +// Aanmaken benodigde variabelen +int temp0; + +void setup() { + // Loop om door het aantal volgens ledCount te gaan + for (int i=0; i <= (ledCount-1); i++){ + // eerst initialisatie van de PWM-puls op de uitgangen + analogWrite(ledPin[i], currentLedPwm[i]); + } +} + +void loop() { + if (delayChangeCountDown <= 0){ + currentDelay = random(1, 20); + delayChangeCountDown = random(1,10000); + } + + // Loop om door het aantal volgens ledCount te gaan + for (int i=0; i <= (ledCount-1); i++){ + // Controleren of randomLed 0 of kleiner is zodat deze een nieuwe waarde kan krijgen (random() tussen max in de nieuwe richting en de helft van max en huidige waarde) + if (randomLed[i] <= 0){ + // Waarde countLedUp omdraaien + countLedUp[i] = map (countLedUp[i], 1, 0, 0, 1); + // Controleren of countLedUp nu 1 of 0 is. + if (countLedUp[i] == 1) { + // In geval van een 1: temp0 vullen met de maximaal aantal stappen tussen currentLedPwm en de maximale PWM-puls-waarde (255). + temp0 = 255 - currentLedPwm[i]; + } else { + // In geval van een 0: temp0 vullen met currentLedPwm aangezien dat de stappen zijn tot de minimale waarde voor een PWM-puls (0). + temp0 = currentLedPwm[i]; + } + // radom() waarde aanmaken tussen het maximale verschil en de helft daarvan. + randomLed[i] = random(temp0/2, temp0); + } + + // Controleren of de LED(-array) feller of zwakker moet gaan branden op basis van countLedUp + if (countLedUp[i] == 1) { + // currentLedPwm met 1 ophogen. + currentLedPwm[i]++; + } else { + // currentLedPwm met 1 verlagen. + currentLedPwm[i]--; + } + + // randomLed met 1 verlagen. + randomLed[i]--; + + // De waarde van currentLedPwm wegschrijven naar de uitgang van de LED(-array) + analogWrite(ledPin[i], currentLedPwm[i]); + } + + // Pauze inlassen met het aantal ms volgens delayPotValueMap + delay(currentDelay); +} + + +