/* * WhiteLEDsThrob.INO * Todd Andersen * 20-NOV-16 * *Based on: "Throb" *http://playground.arduino.cc/Tutorials/Throb * * A variation on Blink. This sketch presents the concept of PWM or * Pulse Width Modulation. It "throbs" the brightness of an LED, making it * gradually brighter and dimmer. */ int ledPin1 = 2; // White LEDs on board int ledPin2 = 3; int ledPin3 = 4; int ledPin4 = 5; int ledPin5 = 6; int ledPin6 = 7; int cycleTime = 100; // Total duration of single PWM cycle (100 or greater is best) int changeSpeed = 3; // Throb speed, Change the onTimePerCycle per Cycle (mSec) boolean brightnessGoingUp = true; // Brightness up (true) / down (false) int onTimePerCycle = 0; // Milliseconds to turn the LED ON within a cycle void setup(){ // Run once, Start sketch pinMode(ledPin1, OUTPUT); // Set digital pins as outputs pinMode(ledPin2, OUTPUT); pinMode(ledPin3, OUTPUT); pinMode(ledPin4, OUTPUT); pinMode(ledPin5, OUTPUT); pinMode(ledPin6, OUTPUT); } void loop(){ // Continously runs digitalWrite(ledPin1, HIGH); // LEDs on digitalWrite(ledPin2, HIGH); digitalWrite(ledPin3, HIGH); digitalWrite(ledPin4, HIGH); digitalWrite(ledPin5, HIGH); digitalWrite(ledPin6, HIGH); delay(onTimePerCycle); // Wait for onTimePerCycle (mSec) digitalWrite(ledPin1, LOW); // LEDs off digitalWrite(ledPin2, LOW); digitalWrite(ledPin3, LOW); digitalWrite(ledPin4, LOW); digitalWrite(ledPin5, LOW); digitalWrite(ledPin6, LOW); delay(cycleTime - onTimePerCycle); // Wait for cycle to complete // Adjust brightness up or down depending on current T / F state if (brightnessGoingUp){ onTimePerCycle += changeSpeed; } else{ onTimePerCycle -= changeSpeed; } // Full brightness, LEDs on for the complete cycle if (onTimePerCycle >= cycleTime){ brightnessGoingUp = false; // Brightness DOWN onTimePerCycle = cycleTime; // Ensure brightness did not go over } // if we are at zero brightness, where the LED is not on at all in a cycle if (onTimePerCycle <= 0){ brightnessGoingUp = true; // Brightness UP onTimePerCycle = 0; // Ensure onTime didn't go bellow zero } }