Offline
Newbie
Karma: 4
Posts: 3
|
 |
« on: February 25, 2013, 03:06:09 pm » |
|
|
|
|
|
Logged
|
|
|
|
|
Valencia, Spain
Offline
Edison Member
Karma: 65
Posts: 2281
|
 |
« Reply #1 on: February 25, 2013, 03:22:40 pm » |
Very nice effect...!
|
|
|
|
|
Logged
|
|
|
|
|
Samplefinger
Offline
God Member
Karma: 8
Posts: 822
ALWAYS ASK FOR THREE. One to use. One to lose. One to abuse.
|
 |
« Reply #2 on: February 25, 2013, 04:37:16 pm » |
Holy cow that is really well done. Where did you get that diffuser screen? I don't know a lot about them but I have tried diffusing with thin white cloth and paper and never got a good result.
Care to share any code or schematics?
|
|
|
|
|
Logged
|
Latest Sampling Scores: ATXMEGA64A3U-MH x3, ATXMEGA256A3U-MH x3, SST38VF6404-90-5C-EKE x3, SST38VF6402-90-5C-EKE x3, PGA870 x3, THS770006 x3
|
|
|
|
Offline
Newbie
Karma: 4
Posts: 3
|
 |
« Reply #3 on: February 25, 2013, 05:44:18 pm » |
Thanks, sure  The diffuser screen is made of a sheet of tracing paper, attached to a frame made of foam core - see attached image. Standard paper is too white and opaque which results in really low contrast and the light hardly getting through. Note that the distance of the screen from the LED matrix is really important and will be different depending on the specific material used. The circuit itself is just an off-the-shelf Colorduino - I believe that a Rainbowduino would work just as well. The code for all the examples (library and sketches) is available on github.
|
|
|
|
|
Logged
|
|
|
|
|
Norfolk UK
Offline
Edison Member
Karma: 23
Posts: 1319
|
 |
« Reply #4 on: February 26, 2013, 04:30:12 am » |
The circuit itself is just an off-the-shelf Colorduino - I believe that a Rainbowduino would work just as well. Hi giladaya, I can confirm the code works on Rainbowduino with very little modification. Fantastic work.
|
|
|
|
|
Logged
|
|
|
|
|
Germany
Offline
Full Member
Karma: 1
Posts: 126
|
 |
« Reply #5 on: February 27, 2013, 04:21:18 am » |
Hello giladaya, this really looks great. I was searching for some nice Matrix Animations and started a thread, which was not very succesful LED Matrix - animation pattern. I´ll try to port your code to my matrix and go on collecting some nice effects  Some time ago I wrote a .NET program which can demonstrate matix animations on a PC. Maybe I´ll release it to make it easier to create some new effects. Greetings Thomas
|
|
|
|
|
Logged
|
|
|
|
|
Europe / Germany
Offline
Full Member
Karma: 4
Posts: 154
keep it simple
|
 |
« Reply #6 on: March 02, 2013, 09:46:19 am » |
Respect, well done! Good presentation, too. I can imagine, that it would look great on a huge indirect working matrix (so, that you just see the projection at a wall) with powerful LED strip elements... edit, next day: I have to test that with a serious output device... 
|
|
|
|
« Last Edit: March 04, 2013, 06:47:31 am by Helmuth »
|
Logged
|
|
|
|
|
San Francisco
Offline
Newbie
Karma: 0
Posts: 22
Arduino rocks
|
 |
« Reply #7 on: March 04, 2013, 07:22:53 pm » |
This looks great! Once my 8x8 matrix arrives, I'd like to try to adapt it as an interactive nightlight, where new particles would be triggered if a PIR motion detector is triggered while ambient light is low. I was thinking I might be able to accomplish this by updating your "Flame.ino" example ( https://github.com/giladaya/arduino-particle-sys/blob/master/examples/Flame/Flame.ino). In that example, some of the parameters for the particle system are established in Setup: source.x = 112; source.y = 1; Emitter_Fountain::minLife = 20; Emitter_Fountain::maxLife = 80; Particle_Std::ay = 1; I was thinking that I could add some lines to Loop that would adjust these continuously. For instance: if (triggerPin == HIGH && ambientLight <= lightThreshold) { //assuming these are all defined elsewhere... Particle_Std::ay = 1; } else { Particle_Std::ay = 0; } I expect this would leave the particles at the bottom of the display most of the time, but then they'd shoot up when the PIR is triggered in the dark. Any ideas or suggestions for a more elegant implementation, or smarter usage of the library? Thanks! I'm looking forward to experimenting with this.
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Edison Member
Karma: 18
Posts: 1297
|
 |
« Reply #8 on: March 06, 2013, 12:53:31 am » |
@giladaya: Could it be, that you swapped columns and rows ( width and height) in you code? I'm currently trying to port your "fire"-code to a WS2812 LED strip with 6 columns ( 6 pixel width) and 8 rows (8 pixel hight). As I understand your code, the function "generateline()" creates a new pixel-line on the bottom line of the matrix. But your code says: /** * Randomly generate the next line (matrix row) */ void generateLine(){ for(unsigned char x=0;x<ColorduinoScreenHeight;x++) { line[x] = random(64, 255); } } So you are using "x" for the position of the "cursor" on the line, but you use the ColorduinoScreenHeight as upper border. This is not a problem, as long as you use this nomenclature consistently and yout matrix has exactly the same number of rows and columns. Problems start if the number of columns and rows differ. Another point is the declaration of the mask-Arrays ( valueMask[ColorduinoScreenWidth][ColorduinoScreenHeight] and hueMask[ColorduinoScreenWidth][ColorduinoScreenHeight]) Mario.
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Jr. Member
Karma: 0
Posts: 54
|
 |
« Reply #9 on: March 12, 2013, 08:31:11 am » |
my dream is to make one of this.....
|
|
|
|
|
Logged
|
|
|
|
|
Samplefinger
Offline
God Member
Karma: 8
Posts: 822
ALWAYS ASK FOR THREE. One to use. One to lose. One to abuse.
|
 |
« Reply #10 on: March 12, 2013, 08:47:13 am » |
my dream is to make one of this.....
Set your dreams higher. This guy did a great job but at this point this is almost a canned project, all the data you need is right here and it isn't all that expensive. So just do it. Then design something yourself, that is the real challange.
|
|
|
|
|
Logged
|
Latest Sampling Scores: ATXMEGA64A3U-MH x3, ATXMEGA256A3U-MH x3, SST38VF6404-90-5C-EKE x3, SST38VF6402-90-5C-EKE x3, PGA870 x3, THS770006 x3
|
|
|
|
Offline
Jr. Member
Karma: 0
Posts: 54
|
 |
« Reply #11 on: March 13, 2013, 12:44:26 am » |
beginning from the low side..... nest step is higher 
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Newbie
Karma: 0
Posts: 8
|
 |
« Reply #12 on: April 28, 2013, 08:42:32 pm » |
@mkl0815 did you ever manager to port this? I've tried to make this library independent but it seems to rely on the colorduino libraries. All I need is to be able to define the columns and rows and get r,g,b for each pixel. Haven't had any luck so far, if I remove the colorduino library reference everything goes to pot. @giladaya: Could it be, that you swapped columns and rows ( width and height) in you code? I'm currently trying to port your "fire"-code to a WS2812 LED strip with 6 columns ( 6 pixel width) and 8 rows (8 pixel hight). As I understand your code, the function "generateline()" creates a new pixel-line on the bottom line of the matrix. But your code says: /** * Randomly generate the next line (matrix row) */ void generateLine(){ for(unsigned char x=0;x<ColorduinoScreenHeight;x++) { line[x] = random(64, 255); } } So you are using "x" for the position of the "cursor" on the line, but you use the ColorduinoScreenHeight as upper border. This is not a problem, as long as you use this nomenclature consistently and yout matrix has exactly the same number of rows and columns. Problems start if the number of columns and rows differ. Another point is the declaration of the mask-Arrays ( valueMask[ColorduinoScreenWidth][ColorduinoScreenHeight] and hueMask[ColorduinoScreenWidth][ColorduinoScreenHeight]) Mario.
|
|
|
|
|
Logged
|
|
|
|
|
Europe / Germany
Offline
Full Member
Karma: 4
Posts: 154
keep it simple
|
 |
« Reply #13 on: May 01, 2013, 02:10:32 pm » |
Hi, here a concept, how to map 2 rows to a RGB strip using FastSPI_LED... /* * Copyright (C) 2013 Gilad Dayagi. All rights reserved. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. */
/* * An example for the Arduino particle system library * A wandering particle that emits colorful smoke * * Note: this example uses the colorduino library becuse that is what I had, * but any device that supports setting a pixel to an RGB value can be used */
//#include <Colorduino.h>
#include <FastSPI_LED.h> #include "ParticleSys.h" #include "Particle_Std.h" #include "Particle_Fixed.h" #include "Emitter_Fountain.h" #include "PartMatrix.h"
#define NUM_LEDS 20
//change the order of your rgb here struct CRGB { unsigned char r; unsigned char g; unsigned char b; }; struct CRGB *leds;
const byte numParticles = 50; boolean pulseOn = false;
Particle_Std particles[numParticles]; Particle_Fixed source; Emitter_Fountain emitter(0, 0, 5, &source); ParticleSys pSys(numParticles, particles, &emitter); PartMatrix pMatrix;
/** * Render the particles into a low-resolution matrix */ void drawMatrix(){ pMatrix.reset(); pMatrix.render(particles, numParticles); //update the actual LED matrix for (byte y=0;y<8;y++) { //for(byte x=0;x<8;x++) { //Colorduino.SetPixel(x, y, pMatrix.matrix[x][y].r, pMatrix.matrix[x][y].g, pMatrix.matrix[x][y].b); leds[y].r = pMatrix.matrix[3][y].r; leds[y].g = pMatrix.matrix[3][y].g; leds[y].b = pMatrix.matrix[3][y].b; leds[NUM_LEDS-y].r = pMatrix.matrix[4][y].r; leds[NUM_LEDS-y].g = pMatrix.matrix[4][y].g; leds[NUM_LEDS-y].b = pMatrix.matrix[4][y].b; // } } }
void setup() { FastSPI_LED.setLeds(NUM_LEDS); //select your chipset according to your strip type here - have a look at FastSPI documentation //i´m using a LPD1101 right know who behaves like a LPD6803 FastSPI_LED.setChipset(CFastSPI_LED::SPI_LPD6803); FastSPI_LED.init(); FastSPI_LED.start(); leds = (struct CRGB*)FastSPI_LED.getRGBData(); //Colorduino.Init(); // initialize the board // compensate for relative intensity differences in R/G/B brightness // array of 6-bit base values for RGB (0~63) // whiteBalVal[0]=red // whiteBalVal[1]=green // whiteBalVal[2]=blue //byte whiteBalVal[3] = {36,63,7}; // for LEDSEE 6x6cm round matrix //Colorduino.SetWhiteBal(whiteBalVal); randomSeed(analogRead(0)); //source.vx = 3; //source.vy = 1; source.x = 112; source.y = 1; Emitter_Fountain::minLife = 20; Emitter_Fountain::maxLife = 80; Particle_Std::ay = 1; //PartMatrix::isOverflow = false; //init all pixels to zero pMatrix.reset(); }
void loop() { pSys.update(); drawMatrix(); FastSPI_LED.show();
delay(20); }
|
|
|
|
|
Logged
|
|
|
|
|
0
Offline
Newbie
Karma: 0
Posts: 1
Arduino rocks
|
 |
« Reply #14 on: May 23, 2013, 02:37:43 pm » |
This is incredible work! Can it be adapted to plain arduino and single color 8x8 matrix ?
|
|
|
|
|
Logged
|
|
|
|
|
|