Exercise 1 - Digital LED strip 'for' loop
The Circuit
- For additional information there is a very good Adafruit guide to all things digital LED strip related here.
- Refer to this link about installing additional libraries and install the FastLED and Adafruit Neopixel libraries. You should now have some extra examples in your Arduino 'File > Examples' menu. Try some of them out, you may need to change the code a little to say what pin you are using to control the LEDs, or how many LEDs are in your strip.
- Paste the following code into the Arduino IDE and follow the instructions:
/* The code below shows you how to set individual pixels with a colour on digital LED strip using the * Adafruit Neopixel library (though you could use the fastLED library instead!) * Upload it and give it a go! * * Look at the Arduino site reference page and the description of * the 'for' statement under the 'Structure' section. Use this control * structure to light up each LED on your strip in sequence one colour, * and then another. * https://www.arduino.cc/en/Reference/HomePage * * A little clue for you: The 'for' example from the reference page can be broken down as follows: for (int i=0; i <= 255; i++){ for...{ - stop the code and do this 'for' loop until it has finished int i=0 - set an integer (whole number) variable called 'i' to 0, i <= 255 - while the 'i' variable is less than or equal to 255... i++ - increment the 'i' variable by one on each loop of the 'for' statement" analogWrite(PWMpin, i); - set the output value of a pin to the one contained in the 'i' variable delay(10); } - wait 10 milliseconds, close the 'for' loop and carry on with the other code * * * Luke Woodbury 31 March 2016 */ #include <Adafruit_NeoPixel.h> #ifdef __AVR__ #include <avr/power.h> #endif // Which pin on the Arduino is connected to the NeoPixels? #define PIN 6 // How many NeoPixels are attached to the Arduino? #define NUMPIXELS 60 // When we setup the NeoPixel library, we tell it how many pixels (LEDs) we have on our strip, //and which pin to use to send signals. // Note that for older NeoPixel strips you might need to change the third parameter--see the strandtest // example for more information on possible values. Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800); const int wait = 500; //constant to hold delay time in milliseconds int pixel = 0; //variable to hold current pixel number void setup() { pixels.begin(); // This initializes the NeoPixel library... pixels.show(); // and clears the LEDs } void loop() { pixel = 0; //sets our 'pixel' variable to the first pixel, on a 60 LED strip they are numbered 0 - 59 pixels.setPixelColor(pixel, pixels.Color(200,50,0)); //set the pixel number with orange pixels.show(); //send the updated pixel color to the strip delay(wait); //use our 'wait' constant as the delay time pixels.setPixelColor(pixel, pixels.Color(50,100,200)); //set the pixel number with blue pixels.show(); //send the updated pixel color to the strip delay(wait); //use our 'wait' constant as the delay time }
Extension exercises
- try using a button to make the LED strip go one colour when it is pressed and another when it is released
- try using a pot or an LDR to make pixels light up depending on the incoming value
- how would you reverse the direction of the LEDs lighting up?
Click on a link
Exercise 2 - Servo motor and the 'if' statement
Exercise 3 - 7 segment display and the 'switch case' statement