A video of the flashing LED and a quick look at the source code
Circuit Diagram
The Ground is not actually connected to each LED
6 LED Video Doocumentation
A diagram of how the Circuit is set up
int led1 = 2;
int led2 = 3;
int led3 = 4;
int led4 = 11;
int led5 = 10;
int led6 = 9;
void setup() {
pinMode(led1, OUTPUT) ;
pinMode(led2, OUTPUT) ;
pinMode(led3, OUTPUT) ;
pinMode(led4, OUTPUT) ;
pinMode(led5, OUTPUT) ;
pinMode(led6, OUTPUT) ;
}
void loop () {
digitalWrite(led1, HIGH);
delay (1000);
digitalWrite(led1, LOW);
delay (1000);
digitalWrite(led2, HIGH);
delay (1000);
digitalWrite(led2, LOW);
delay (1000);
digitalWrite(led3, HIGH);
delay (1000);
digitalWrite(led3, LOW);
delay (1000);
digitalWrite(led4, HIGH);
delay (1000);
digitalWrite(led4, LOW);
delay (1000);
digitalWrite(led5, HIGH);
delay (1000);
digitalWrite(led5, LOW);
delay (1000);
digitalWrite(led6, HIGH);
delay (1000);
digitalWrite(led6, LOW);
delay (1000);
}
For this project we altered the provided base code to make colors appear with certain effects along the LED strip. For instance, you can alter the colors using the RGB color hexes, also if you wanted an effect like the one here instead of a solid led strip you can put theaterChase instead of colorWipe.
// A basic everyday NeoPixel strip test program.
// NEOPIXEL BEST PRACTICES for most reliable operation:
// - Add 1000 uF CAPACITOR between NeoPixel strip's + and - connections.
// - MINIMIZE WIRING LENGTH between microcontroller board and first pixel.
// - NeoPixel strip's DATA-IN should pass through a 300-500 OHM RESISTOR.
// - AVOID connecting NeoPixels on a LIVE CIRCUIT. If you must, ALWAYS
// connect GROUND (-) first, then +, then data.
// - When using a 3.3V microcontroller with a 5V-powered NeoPixel strip,
// a LOGIC-LEVEL CONVERTER on the data line is STRONGLY RECOMMENDED.
// (Skipping these may work OK on your workbench but can fail in the field)
#include <Adafruit_NeoPixel.h>
#ifdef __AVR__
#include <avr/power.h> // Required for 16 MHz Adafruit Trinket
#endif
// Which pin on the Arduino is connected to the NeoPixels?
// On a Trinket or Gemma we suggest changing this to 1:
#define LED_PIN 6
// How many NeoPixels are attached to the Arduino?
#define LED_COUNT 17
// Declare our NeoPixel strip object:
Adafruit_NeoPixel strip(LED_COUNT, LED_PIN, NEO_GRB + NEO_KHZ800);
// Argument 1 = Number of pixels in NeoPixel strip
// Argument 2 = Arduino pin number (most are valid)
// Argument 3 = Pixel type flags, add together as needed:
// NEO_KHZ800 800 KHz bitstream (most NeoPixel products w/WS2812 LEDs)
// NEO_KHZ400 400 KHz (classic 'v1' (not v2) FLORA pixels, WS2811 drivers)
// NEO_GRB Pixels are wired for GRB bitstream (most NeoPixel products)
// NEO_RGB Pixels are wired for RGB bitstream (v1 FLORA pixels, not v2)
// NEO_RGBW Pixels are wired for RGBW bitstream (NeoPixel RGBW products)
// setup() function -- runs once at startup --------------------------------
void setup() {
// These lines are specifically to support the Adafruit Trinket 5V 16 MHz.
// Any other board, you can remove this part (but no harm leaving it):
#if defined(__AVR_ATtiny85__) && (F_CPU == 16000000)
clock_prescale_set(clock_div_1);
#endif
// END of Trinket-specific code.
strip.begin(); // INITIALIZE NeoPixel strip object (REQUIRED)
strip.show(); // Turn OFF all pixels ASAP
strip.setBrightness(255); // Set BRIGHTNESS to about 1/5 (max = 255)
}
// loop() function -- runs repeatedly as long as board is on ---------------
void loop() {
// Fill along the length of the strip in various colors...
colorWipe(strip.Color(129, 216, 208), 200); // Red
colorWipe(strip.Color(32, 178, 170), 200); // Pink
colorWipe(strip.Color(0, 128, 128), 200); // Purple
colorWipe(strip.Color(180, 238, 180), 200); // Blue
colorWipe(strip.Color(64, 114, 148), 200); // Blue Green
colorWipe(strip.Color(138, 6, 154), 200); // Teal
colorWipe(strip.Color(0, 236, 255), 200); // Green Blue
colorWipe(strip.Color(153, 180, 75), 200); // Green
colorWipe(strip.Color(255, 173, 17), 200); // Yellow
colorWipe(strip.Color(192, 214, 223), 200); // Orange
colorWipe(strip.Color(255, 255, 255), 500); // Orange
// Do a theater marquee effect in various colors...
// theaterChase(strip.Color(127, 127, 127), 50); // White, half brightness
// theaterChase(strip.Color(127, 0, 0), 50); // Red, half brightness
// theaterChase(strip.Color( 0, 0, 127), 50); // Blue, half brightness
rainbow(20); // Flowing rainbow cycle along the whole strip
//theaterChaseRainbow(50); // Rainbow-enhanced theaterChase variant
}
// Some functions of our own for creating animated effects -----------------
// Fill strip pixels one after another with a color. Strip is NOT cleared
// first; anything there will be covered pixel by pixel. Pass in color
// (as a single 'packed' 32-bit value, which you can get by calling
// strip.Color(red, green, blue) as shown in the loop() function above),
// and a delay time (in milliseconds) between pixels.
void colorWipe(uint32_t color, int wait) {
for(int i=0; i<strip.numPixels(); i++) { // For each pixel in strip...
strip.setPixelColor(i, color); // Set pixel's color (in RAM)
strip.show(); // Update strip to match
delay(wait); // Pause for a moment
}
}
// Theater-marquee-style chasing lights. Pass in a color (32-bit value,
// a la strip.Color(r,g,b) as mentioned above), and a delay time (in ms)
// between frames.
void theaterChase(uint32_t color, int wait) {
for(int a=0; a<10; a++) { // Repeat 10 times...
for(int b=0; b<3; b++) { // 'b' counts from 0 to 2...
strip.clear(); // Set all pixels in RAM to 0 (off)
// 'c' counts up from 'b' to end of strip in steps of 3...
for(int c=b; c<strip.numPixels(); c += 3) {
strip.setPixelColor(c, color); // Set pixel 'c' to value 'color'
}
strip.show(); // Update strip with new contents
delay(wait); // Pause for a moment
}
}
}
// Rainbow cycle along whole strip. Pass delay time (in ms) between frames.
void rainbow(int wait) {
// Hue of first pixel runs 5 complete loops through the color wheel.
// Color wheel has a range of 65536 but it's OK if we roll over, so
// just count from 0 to 5*65536. Adding 256 to firstPixelHue each time
// means we'll make 5*65536/256 = 1280 passes through this outer loop:
for(long firstPixelHue = 0; firstPixelHue < 5*65536; firstPixelHue += 256) {
for(int i=0; i<strip.numPixels(); i++) { // For each pixel in strip...
// Offset pixel hue by an amount to make one full revolution of the
// color wheel (range of 65536) along the length of the strip
// (strip.numPixels() steps):
int pixelHue = firstPixelHue + (i * 65536L / strip.numPixels());
// strip.ColorHSV() can take 1 or 3 arguments: a hue (0 to 65535) or
// optionally add saturation and value (brightness) (each 0 to 255).
// Here we're using just the single-argument hue variant. The result
// is passed through strip.gamma32() to provide 'truer' colors
// before assigning to each pixel:
strip.setPixelColor(i, strip.gamma32(strip.ColorHSV(pixelHue)));
}
strip.show(); // Update strip with new contents
delay(wait); // Pause for a moment
}
}
// Rainbow-enhanced theater marquee. Pass delay time (in ms) between frames.
void theaterChaseRainbow(int wait) {
int firstPixelHue = 0; // First pixel starts at red (hue 0)
for(int a=0; a<30; a++) { // Repeat 30 times...
for(int b=0; b<3; b++) { // 'b' counts from 0 to 2...
strip.clear(); // Set all pixels in RAM to 0 (off)
// 'c' counts up from 'b' to end of strip in increments of 3...
for(int c=b; c<strip.numPixels(); c += 3) {
// hue of pixel 'c' is offset by an amount to make one full
// revolution of the color wheel (range 65536) along the length
// of the strip (strip.numPixels() steps):
int hue = firstPixelHue + c * 65536L / strip.numPixels();
uint32_t color = strip.gamma32(strip.ColorHSV(hue)); // hue -> RGB
strip.setPixelColor(c, color); // Set pixel 'c' to value 'color'
}
strip.show(); // Update strip with new contents
delay(wait); // Pause for a moment
firstPixelHue += 65536 / 90; // One cycle of color wheel over 90 frames
}
}
}
In this picture the NeoPixel strip is plugged into the number 6 pin allowing it to be controlled from there. The black wire is the ground wire and the white wire is plugged into a 5 volt pin powering the strip. I have the Arduino taped to the outside so it does no block the LEDs.
Brief - Guidelines that lead to a final results or questions that you feel need an answer or solution. Can be something that is interesting to you or some problem that is given
Research - Looking up information that is relevant to your brief or answers your questions. This can include published papers, images that could be used for design inspiration, and other solutions to the problem that you may have found. Also asking other questions to get to a final wanted result are welcome during this step
Idea and Brainstorming - Using your research, come up with ideas that lead to a solution to your original brief/driving question . This can include designs for the items, solutions to research questions, and other additional items that may be needed for answering your questions.
Prototype - Taking your ideas from the previous step, come up with a physical object that you can you use in the next step of the process. If you are working on a questions or research based project, this is when you will come up with a finalized version of your big question or hypothesis that will be used in the next step of the process
Testing - Taking what you have done in the Prototype step, begin to run some form of testing in order to collect data that can be used to help prove what was done either a 100% success or a 70% still needs some modifications. This step usually have a form of procedure that goes with it, whether it be a series of physical test done by yourself or a large data collection to prove a theory
Evaluation - Looking back over the data from the test, this step allows you to look over the data from your test and figure out if you need to rework something. This step is unique because it can happen at any point in the process, once you are very comfortable in using it, and it can also take you back to any step. For instance, you are building a prototype but it fell apart before you even had a chance to test, which means you have to go back to ideas and brainstorming a way to fix it. You inadvertently pushed yourself through the rest of the design process and back to coming up with an idea
In this project we will be prototyping and then making desktop organizers.
I will first prototype the organizer to see if I like it then I will build a full scale version
The final model has to be a certain size and must have a certain number of compartments
Craftsmanship 2"x2" Cube
In this project we were directed to make a cube exactly 2 inches in length width and height. Because we wanted exactly 2 inches we had to take into account the width of the card board and how that would affect the lengths. Furthermore, I learned not to use superglue with cardboard.
.I really like this one because it creates something creative and useful at the same time.
This design is super minimalist and I always enjoy that.
I think the idea of having compartments in the midsection is neat and clean looking.
In this activity we were directed to make a pattern using two different principles and elements of design. I chose Shape and movement, I used the orientation of the triangles to make the line move towards the right.
My idea mainly came from a store i went to a while back. They sold high quality stationary and had all the pens and pencils in triangular tubes angled upwards. I thought that looked cool and decided to implement it into my design.
Although I showed 2 rows of triangular sections i soon realized this was a large tasks and gave up, I have also removed the side pocket. A top down view is shown in the lower right hand corner.
My 2 elements/principles of design are repetition and shape. I think the repeating triangles give a nice touch of uniqueness. However, creating these triangular tubes was quite tedious and i might not make them tilted next time.
I do think my craftsmanship was a little messy and there a few places with weird hot glue formations. Furthermore, ignoring my own advice i decided to try and use super glue, this did not end well because the glue was soaked up by the cardboard.
In this model you can see that my triangular design has changed quite a bit because of my laziness. Instead of tubes angled upwards i made them parallel with the ground. In the top left hand corner you can see the charging port (honestly i didn't even do much work on it, I just punched it through the back and called it a day.)
Here's the final design, I have removed the flap[ door from the bottom and replaced it with a more secret way of opening it (shown in presentation). I realized that, while the triangular tubes took more time they definitely looked better.
. My original inspiration for the project was more like the first model with triangular tubes angled upwards. I'm kinda sad it didn't make it into the final project because of time. With this project I used a foam board that I quite liked using. In the future I would much rather use this than cardboard because of how clean and good it looks. It is also very easy to work with and makes the craftsmanship much easier. The design process also played a large role in the design part of this project. The first few days I was wondering about how to make the triangles good looking, then I realized i could alternate upside down and right side up triangles to create a nice pattern. After I had figured that out I prototyped my new design. Once I was happy with this I moved on to creating the final project. Because I had a time restriction I had to omit some features and replace them with others. Overall, I feel like given a day or two I could have included the original triangular tubes, however some of the things i changes were fun and interesting like my new concealed compartment instead of the tray.