Topics - 3D printed Star with 2D array

Page 1 of 1

3D printed Star with 2D array

Welcome to the Tweaking4All community forums!
When participating, please keep the Forum Rules in mind!

Topics for particular software or systems: Start your topic link with the name of the application or system.
Examples: "MacOS X - Your question", "MS Word - Your Tip or Trick".

Please note that switching to another language when reading a post will not work!
Posts will not have a translated counterpart.

Home Forums Hardware Arduino 3D printed Star with 2D array

Viewing 9 posts - 1 through 9 (of 9 total)
• Author
Posts
• 6936

Spike
Participant

Hi

Everyone, Further to my previous post on Multi Dimensional arrays, I have finally got my head around them.
Or to be more accurate, Hans has given me the ability to get my head around them. Huge thanks Hans.
Anyway, now that I’ve got it working, I thought I would share it in the hope that it may help others, and also give you all something to build on.
I have commented the code liberally to help with guidance for anyone that needs it. I’ve uploaded a video so you can see what it looks like in practice on YouTube.
This is where the 3D design and files came from Thingiverse And here is the code for you to do with as you wish.
`#include <Adafruit_NeoPixel.h>#define arms 5 // Number of arms on star#define lightPerArm 30 // Max number of pixels per arm#define PIN 6 // Data pin#define NUM_LEDS 144 // Total number of pixelsAdafruit_NeoPixel strip = Adafruit_NeoPixel(NUM_LEDS, PIN, NEO_GRB + NEO_KHZ800);// Array to define the pixels in each armuint16_t Star[arms][lightPerArm] = { { 0,1,6,7,8,9,26,27,28,29,30,31,56,57,58,59,60,61,62,63,96,97,98,99,100,101,102,103,104,105}, // Arm 1          { 2,10,11,12,13,32,33,34,35,36,37,64,65,66,67,68,69,70,71,106,107,108,109,110,111,112,113,114,115},  // Arm 2          { 3,14,15,16,17,38,39,40,41,42,43,72,73,74,75,76,77,78,79,116,117,118,119,120,121,122,123,124,125},  // Arm 3          { 4,18,19,20,21,44,45,46,47,48,49,80,81,82,83,84,85,86,87,126,127,128,129,130,131,132,133,134,135},  // Arm 4          { 5,22,23,24,25,50,51,52,53,54,55,88,89,90,91,92,93,94,95,136,137,138,139,140,141,142,143,144} };    // Arm 5                                      void setup() {                                   strip.begin();  strip.setBrightness(40); //adjust brightness here  strip.show(); // Initialize all pixels to 'off'}  void loop() {  for(int i=0; i<10; i++) { // Number of times the loop repeats ArmSpin (random(255), random(255), random(255), 100, 100); // Function parameters (Red, Green, Blue, StepDelay, LoopDelay) delay(100); //Delay before loop repeats  } for(int i=0; i<25; i++) {  SnowSparkle(0x10, 0x10, 0x10, 20, random(100,500));  }}//Light each arm sequentially clockwise with a random colour, then radialy wipe colour to black (off). void ArmSpin (byte red, byte green, byte blue, int StepDelay, int LoopDelay) {  for(int arm=0; arm<arms; arm++) { // Count ARMS strip.setPixelColor(Star[arm][lightPerArm], strip.Color(0,0,0)); // Background pixel colour for(int light=0; light<lightPerArm; light++) { // Count LIGHTS per ARM   strip.setPixelColor(Star[arm][light], strip.Color(red, green, blue)); //change RGB color value here                }         strip.show();       delay(StepDelay);   }       for(int x=0; x<=NUM_LEDS-1; x++) {      strip.setPixelColor(x,0,0,0);  strip.show();//delay(LoopDelay);  }  delay(LoopDelay); }// Fill the dots one after the other with a colorvoid colorWipe(uint32_t c, uint8_t wait) {  for(uint16_t i=0; i<strip.numPixels(); i++) { strip.setPixelColor(i, c); strip.show(); delay(wait);  }}void showStrip() {   strip.show();}void setPixel(int Pixel, byte red, byte green, byte blue) {  strip.setPixelColor(Pixel, strip.Color(red, green, blue));}void setAll(byte red, byte green, byte blue) {  for(int i = 0; i < NUM_LEDS; i++ ) { setPixel(i, red, green, blue);   }  showStrip();}void SnowSparkle(byte red, byte green, byte blue, int SparkleDelay, int SpeedDelay) {  setAll(red,green,blue);  int Pixel = random(NUM_LEDS);  setPixel(Pixel,0xff,0xff,0xff);  showStrip();  delay(SparkleDelay);  setPixel(Pixel,red,green,blue);  showStrip();  delay(SpeedDelay);}`
6938

Spike
Participant

It appears that my code didn’t paste well, sorry.

So I have attached the .ino here if you need it.

Attachments:
6941

Hans
Keymaster

Thanks Spike!
I’ll see if I can clean it up, but having an attachment helps as well …

6945

Hans
Keymaster

6947

Spike
Participant

Thank you Hans,

6949

Hans
Keymaster

Oh no, thank you for posting all that is needed to make this cool Christmas star!

6953

Spike
Participant

Here is the layout that I used to determine which LEDs should be address for each arm of the array. It’s nothing special, but it did the job for me.

I hope this will help anyone that is having a hard time getting their head around the arrays and how they relate to this project. I know I had a hard time getting to grips with arrays, until I found all the info that Hans gave us.
Attachments:
6956

Hans
Keymaster

Thanks Spike for posting the layout!

I think I might build this one too … but I’ll probably just work with wood (MDF)
Love it!

Attachments:
6960

Spike
Participant

Thats would be great to see Hans.

I don’t have a workshop so can’t really work with wood or metal etc. Though I do love my 3D printers, one of which I built myself and I do love to use and tweak them.

Viewing 9 posts - 1 through 9 (of 9 total)

You must be logged in to reply to this topic.