October 2005 Entries

wiring example front

wiring example back

How I envisioned the wiring in a tile without the edging

I may flip the connections so the LED is soldered to the 'male' part of the sipp socket. Easier to do wiring I think ... maybe .... only if i can solder while eating bacon.

From this comment

Tom Says:
October 31st, 2005 at 3:56 am e
Hi Clint!

Question: Do you think you 3-in-1-LEDs are bright enough (mcd-wise) for lighting that floor? I doubt it.
I'd go for 3 separate LEDs. Since I wasn't keen on soldering loose ends either I simply designed LED-cluster-PCB's for use with the same sort of connectors as the wustl-dudes. Just snap on those connectors on both ends of the cables and you should be set. Of course you'd still have to solder the LEDs/ connectors on the PCBs but that should be easier than frickling loose ends to cables.
If you're interested I could email a pic of the PCB.
Greetings from Germany.

TOM

Why am I soldering the wires to the SIPPS? Cause doing it now would be easier than later. I hate debugging, it is the programmer in me. Why leave something that could fail when all I need to do is do 4 quick little solder points to prevent the wire from ever parting from the sipp sockets.

The floor should have a decent sum of vibration and there is that chance that a wire could come loose. If that happens, I have to remove the Polycarbonate and then search for the problem.

If something does go wrong and I know the wires connection points can't be the issue unless the wire got cut somehow.

I'm investing a large sum of money in this. I want it to be done right and professional. I wouldn't buy something with loose wires.

Animation files load, I removed the mock module and added in a mock floor.

Need to work on a small reload issue and then form resizing issue.

I really want to try this out with a full blown .Net 2.0 also since it was just RTMed. Still need to actually compile it on the Visual Studio 2005 release rather than beta 2.

I finally found time and actually did it. Should fix the remaining 2 known issues and release it very soon.

After talking with my dad, I think I found my wire source. From Newark Electronics, it shall be 24 AWG wiring.

I was over at the Ace Hardware by my apartment and randomly found some 24 and did a small test cord to see how I liked it. This I did. So I shall buy it soon and shall be happy.

update
ordered 73C9195 from newark for $155 ... 5000 feet worth. I only need 3360 feet however for my floor. May need to beef that number out a bit more for spinning the wire and losing a tad for it. Should get it mid November I'm betting.

Now to buy the table saw, drill, and dado blade for tools and the wood and polycarbonate for supplies and I'll be done.

Anyone in Chicago that wants to spin wires, bend LEDs and do some busy work soldering to connect everything, I'll buy pizza and beer. mmmm, beer.

did plan on doing some coding today but 2 hardware issues (cellphone and desktop computer) along with a website issue with a buddy's site caused me to lose track of time. On the upside, I figured out why my desktop was bipolar when during on. I accidently put a ground on the power switch. As for my cellphone, I think something a bit more f-ed up is going on. I flashed / flexed the mofo and it still always wants to go into voice recording mode. I don't know what else to really do other than look at my Motorola RAZR and want to violently hit it. Ahh well, my contract was up in about a month anyways ... upgrade time. UPGRADE TIME. Me thinks a Treo 700 running Windows Mobile 5

3) There's no reason to make all the cables the same length. The extra delay is on the order of nanoseconds - not something you'll ever notice and probably countered by other parasitic effects anyway. It's true that there is an RC time constant that changes with length, but really all of those effects are just inconsequential. Use lengths that minimize your wiring; it'll get messy. (Scott suggests that "If you're going to make them all the same length, you'd better sneeze equally on all of them.")

- Grant

Time to recalculate. TO THE BATCAVE ... I mean back to work. And while I don't fully understand the sneezing joke, I'll sneeze like no other cause I roll 20's

http://washufloor.blogspot.com/

I personally like their connection option

ok, time for me to rethink this for a bit before I make a massive purchse.

after some 1 on 1 time with the digikey and jameco order catalogs I have a few options.

By going with a phone wire, I cut costs dramatically. 125 dollars /4 wires / 2000 feet

$0.015625 per foot (per wire) - phone wire (stripping may be an issue) [digikey]

$0.04 per foot - 22 AWG solid core wiring [jameco]
$0.03 per foot - 30 AWG solid core wiring [jameco]

What i was thinking about doing possibly was doing a 22 gauge for power then the 30's for the RGB.

I can see reasons for using either ... I just don't know. Phone wire hack gives me a nicely bundled wire that is still 300% cheaper. However, aesthetically, I think I'd perfer the combo 22 / 30 AWG wiring or just all 22 AWG wiring. Hand crank out more stuff, look more hardcore when someone sees the wiring.

Doing the 22 / 30 would cost about 650. Phone would end up doing about 330. Phone I'm not positive is solid core too. The 'test' cord I just

destroyed 'tested' was stranded. This worried me since I really HATE doing the stranded core.

How the hell am I going to haul 20,000 feet worth of wiring home from work anyways. And car isn't an option where I live / work.

after spending like 20 minutes attempting to mount 1 damn sipp socket on the ribbon cord ... I've decided I'm spending the money and getting solid core wiring of some sort.

I think I'm going to opt for a table saw armed with a Dado blade.

This will provide me with a constant cut depth along with an easy set up and cutting system.

What I'd really perfer to use would be a radial arm saw but they are a tad too expensive 700ish for the smallest ones afte a quick search. Maybe I can convince my dad that buying one is a worth while investment and let me borrow it.

A table saw will have to do I guess.

Doing the boards the way I want causes a big issue. I dislike stranded core wire since doing the wiring is SO damn annoying. Only real way I think to make it effective is to tin / solder up the stripped ribbon ends to make it a solid peice, insert that then into the SIPP socket then solder that. The issue is the tinning of the ribbon cord. If too much solder is on it, it won't easily fit in the sipp socket.

Solid core is an easier option here.

8 boards * 64 lights * 4 wires each = 2048 wires * 10 feet = 20480 feet of wiring / 1000 foot reels = 21 reels * $40 dollars from Jameco = $840

I can use phone cord that comes with the 4 wires i need which reduces the total amount to (8 * 64 * 10) = 512 cords if they can be bought in 10+ feet lengths and oddly enough ... they can.

From DigiKey, I can get a straight cord assembly (100+ ordering) at 14 feet for 1.31 each. Brings down cost but assembly will be way easier. If I opt for the ribbon cable, I only need to spend 100ish dollars more. If I opt for ditching the ribbon cable and just doing phone cord, I'll spend 650ish dollars.

I guess a huge amount comes down to how much time is doing all this ribbon cable really worth. Is it 500 dollars worth? I guess another question is can I

sucker bribe my friends into help doing some of this cabling.

ok, I figure if I have an 8 foot width, I should have some extra slack on the ribbon cords. So I figure I should cut each to 10 feet.

Why make everyone the same length? Easy, time to travel then for each cord will be the same. Only way I can assure everyone LED will blow their colorful load at the exact same time.

So I have 500 feet of ribbon. Each ribbon cord has 4 sub cords built into it. So in actuality, I have 2000 feet of ribbon. Since I have 10 feet lengths, that gives me 200 ribbons. I'm totally under my required amount. I'm short 250 (I'm only doing 7 modules) plus if I want to do a mini-project I still need more. I figure I'm going to need to just buy at least another 7. I might as well just end up buying 10 for the "just in case" factor. Plus I need to buy some male power connectors anyways since I got a bit aggressive soldering a couple.

I'm thinking I'll need some sort of a hand held jigsaw, some form of an actual saw (miter or hand) and a drill. I was thinking I could cut the two 'groove' cuts then use the jigsaw to knock it out all the way. Then I have all these nice little joints. drill them on a frame around the edge and bam, should be structurely sturdy ... I think.

Phase 1 - plan and prep

Troops lined up

USB and Firmware ready and flashed

LED Drivers - really annoyed to get working 100%

Connection joints soldered

Looks really empty right now

Only 700 more to bend

Box-o-cords, prepped and ready for cutting and soldering

Phase 2 - Reconnaissance on the enemy

My new enemy - view point 1

My new enemy's buddy

How are you going to fit on my floor Stephen Colbert, you sex bastard

Phase 3 - draw on paper like you know what you're doing.

Battle plans - the orange drawing

Battle plans - the math

Phase 4 - building

My "helper"

Still need to buy some power tools and actually order wood (I said wood) along with the polycarbonate. My TV kinda worries me since there will be a decent amount of weight on one spot of the floor almost all the time. DAMN you Stephen Colbert for being so damn funny. I know it can be on a grid joint but still that is just another thing to remember.

Just did a measurement from the wall to the radiator, just over 168 which provides me with a very nice 8 feet (16 columns) horizontal and 14 feet (28 rows) deep. This is excellent for many reasons. No need to cut the polycarbonate. I have to use only 7 modules but still it is all good. Big 6" tiles (5" middle).

it is going to be LEGENDARY.

Now on to doing some power tool research

After my friends attempted to convert me into a sports fan, I thought about the floor size. 6" tiles even with 7 modules is still too big for my apartment. 4" tiles doesn't provide the width I'd like.

SO what is the happy middle? 5.5". Maybe 5.75. 5.75 provides a 92" width (7.66 feet) while 5.5 provides 88" width (7.33 feet). Both work. The advantage of working with 5.5" tiles vs 5.75" is the 8" inches of breathing room will let me keep the PSU's out of harm's way against a wall. Plus 5.5 is a nicer number to deal with I think. Could be wrong on that one however.

4" tiles is the only way I can get 8 modules. So the question is is 6.66 feet enough width? I'd be far happier with the extra foot I think but I'll need to whip up some visuals. I'm having a friend's girlfriend who is an interior decorator whip me up a nice little thingie in Autocad. If I can't get them quickly, I may revert to Illustrator and whip up some crappy vector graphics.

I'll release a new version shortly.

It will have the Animation file loading ability added in which resizes the animation to the proper size. Also I'm planning on adding in a new 'mock floor' which will mimic the 'mock module' but you know, just bigger and show you what your entire floor should be doing.

Features still planned are random animation file changes based on the loaded directory with a specified time shift. This may be in this release, may not.

Really need to reorg the code so updating is a tad easier also. Atleast on the diagnostic.cs. Also I should tweak the animiation file load. I do two reads when I really can pull off just one.

I still think I'm screwed in terms of the plugin however.

After talking with my dad, a former tool and die maker turned supervisor, I told him about a couple of options I saw. I also told him about the size I was aiming for and the amount of exposed floating area.

He constantly said to go with polycarbonate, a material much like lexan AKA bullet proof glass. With 1/4" sheets, he was worried about it bending even over such a small epxosed area and said suck it up and just go with the 3/8". The cost between the two is decent but not the worst.

All the SKU's are from McMaster-Carr

Polycarbonate Sheet 3/8" Thick, 48" X 96" (8574K76), Clear costs $267.51 each. The 1/4" (8574K75) costs $159.45.

To save cost here, i could order 2 48"x48" (8574K65) at a cost of $92.29. This would cost 184.58 per grouping and the added benfit of a thicker material.

There is Abrasion-Resistant Polycarbonate also. The costs for using this material goes up greatly. For a 3/8" Thick, 48" X 96" sheet, it costs 651.64. DAMN ... I'd use the trick of using 2 48"x48" (8707K145) which are 190.07 bringing the cost for this to be $380.14. Still royally expensive but no scratching.

Now this still leaves me with the need for an additional middle layer to diffuse the light. I haven't decided on this middle layer yet. I'm afraid to buy a film that ends up being way too opaque

I just ordered myself a new digital camera so way more pictures are in store. Newegg.com is the bomb. My camera was still cheaper with the gig high speed SD card I got than just the camera would have been at best buy.

I also realized a nasty little issue about my apartment's living room ... that is it is 15' feet with a radiator. I can deal with the 15', was really hoping it was 16' but whatever. The radiator I'll have to build around no matter what and I really don't want to disturbed it.

It jets out 1.5" out so I have a little annoying issue since that brings the floor's max length to 13.5". I was thinking about using either 1"x3" or 1"x4" boards to raise the primary floor, 1x4" would be the smartest since I can just use 2"x4" to raise the rest. This will cause any tile to be increased by 1" so a 4"x4" tile becomes 5"x5" since the border edge is shared.

However, I do believe my initial calculators were based on 6"x6" tiles, not 5"x5", that extra inch may make a difference since that is 2.66" difference with that extra inch calculated in. May not be a bad idea though to have the floor centered so I don't constantly have to move my entertainment center.

I'm thinking 1 entire module will be lost due to the radiator. Not the end of the world I guess, still sucks though.

I found out why you shouldn't sandblast.

It is next to impossible to get a uniformed blast. Also you run the risk of melting the material.

And now you know ... and knowing is half the battle, GI Joe!

Figured out a solution to the reading, only way i could properly get a correct string returned. Any other way I attempted negates a less than steller response.

public static string ReadFile(string FilePath)
{
 string contents = string.Empty;

 if (File.Exists(FilePath))
 {
  contents = Encoding.Default.GetString(File.ReadAllBytes(FilePath));
 }
 return contents;
}

current code works with the proposed appendment to the file format. It also works with the current files. Both returns the proper string length now.

If I open ColorChart.ddf up with TextPad, I get a proper count.

These means for some reason the read function is incorrect. This sucks. Time to find out why and how I can resolve this.

damn $!%#$%*@&@^? and poo

Ok, I wrote some code and now I'm wondering if I'm on crack, the file reader not liking unix based files or the files are incorrect.

ASSUMPTIONS MADE:

  1. All the MIT animation files are based on 16 columns and 32 rows.
  2. The content is composed of 3 char's with the value of char being an int that between 0 and 255
  3. If I take the mod of the length of the file by 3 by 16 by 32, I will get 0

With Test.ddf, I got the file length to be 1508 chars. Now that isn't a good number since right away I know it isn't divisible by three. How do I know this? Add up all the numbers, if that number is divisible by three, then you're good. 1+5 is, 8 is not. Also that number isn't divisible by 512.

Colorchart.ddf, reads in at 1524. Divides nicely by three. But the issue is, that is only 508 (1524 / 3), not 512 colors.

To prove I'm not crazy, here is the code for it so far.
IO.ReadFile is a wrapper function around a StreamReader.ReadToEnd() so the stream is closed and what not. Code reusablity blargh. Returns a string.

public Animation(string AnimationFilePath, int Rows, int Columns)
{
 // load using IO.readfile

 this.Cols = Columns;
 this.Rows = Rows;

 // mit animation file defaults
 // 32 rows x 16 columns
 int manipulateRows = 32;
 int manipulateCols = 16;

 // non-standard MIT animation file
 string[] entireAnimationFileArray = Regex.Split(IO.ReadFile(AnimationFilePath), "\r\n|\n|\n\r");
 string entireAnimationFile;

 if (entireAnimationFileArray.Length == 3)
 {
  if( !int.TryParse(entireAnimationFileArray[0], out manipulateRows) )
   throw new FileLoadException("Non-standard ddf animation file, Rows [first line] did not parse");

  if (!int.TryParse(entireAnimationFileArray[1], out manipulateCols))
   throw new FileLoadException("Non-standard ddf animation file, Columns [second line] did not parse");

  entireAnimationFile = entireAnimationFileArray[2];
 }
 else if (entireAnimationFileArray.Length == 1)
  entireAnimationFile = entireAnimationFileArray[0];
 else
  throw new FileLoadException("Non-standard ddf animation file");

 if (entireAnimationFile.Length % ( manipulateRows * manipulateCols * 3) != 0)
  throw new FileLoadException(string.Format("Non-standard ddf animation file, the file is does not contain the proper amount of data for {0} rows and {1} columns", manipulateRows, manipulateCols));

 AnimationBuffer = new int[(entireAnimationFile.Length / (manipulateRows * manipulateCols * 3))][];

 for (int i = 0; i < AnimationBuffer.Length; i++)
 {
  AnimationBuffer[i] = new int[this.Rows * this.Cols * 3]; // RGB that bizzo
 }

 // think I should just stretch the image to fit.
}

RE: a comment? wow, I can't believe people read this. comment by Taras regard sand blasting the lexan, not a bad idea ... however I don't have a sand blaster nor know even where to begin to research places that can do 4x8 feet panes of lexan.

Now the funny thing is, I just got off the phone with my brother and he just bought a sand blaster so I do believe around Thanksgiving, I'll be doing some test peices. I still think wax paper as a middle layer would work. Hackish solution but effective.

Ok, I've noticed a major issue with the files and am attempting to over come it.

The issue is monkeys ... ok, not monkeys, but the fact that the files are prerendered for a certain size floor.

I'm going to have 'non-standard' file that has the first 2 lines be the row and colums then followed by the normal data. The function still supports the standard files. I determine if it is a standard file or my 'custom' file by \r\n|\n|\n\r pattern shoved into a Regex.Split to give me a string array. If it is of size 3 and index 0 and 1 parse as integers, then I know it is a valid file.

I'm also validating that the file has the proper amount of data. This would be if animation data length divided by the amount of rows multiplied by the columns defined by the file. If there is a remainder, then bounce that mother. I haven't verified this actually is proper but it seems correct ... after a couple beers.

From here I'll determine the center of the dance floor in comparison to the center of the data file then determine the corners. From that , I should be able to tell I think since I'll have an offset var.

But since my battery on my laptop is about to die and I need to rock out with my buddies and finish off my PBR I depart.

Well, I got my first comment, I'm gleening with joy.

However, Polycarbonate MR-10 is clear, I want something frosted, diffuse , or translucent to help prevent such a harsh transition.

HOWEVER, this type of plastic does have a massive advantage since it is scratch resistant. I may need to figure out a middle layer that provides this diffusion.

If I were to use this material, I'd want the .236 thickness and would need a total of 4 (for this application atleast). In this quantity, total price is 1728 with a phatty discount of 648 for a total of 1080. DAMN, no christmas presents for my brother this year. However I don't think I could get this much lower.

and if anyone ever wants to comment, please do so.

More so, if anyone knows how the hell I can sample Audio that is currently playing else where in the system, hook a brotha up so I can port the XMMS part.

700 of those bad boys are coming. Due date ... 6 weeks ... Nov 22 ... damn it ... right when xbox 360 is coming out.

Now on to finding translucent bullet proof glass.

I wonder if I can sample the audio data going to the speakers. DirectX 9 maybe?

God I really need to stop having these so I can sleep and not need to drink a gallon of coffee at work.

I had a plan ... my friends and sweet, sweet beer changed that plan. So the progress I wanted to make I didn't on the application. What I really need to do is order my LEDs finally and figure out how I'm going to do my living room and get a new digital camera.

But I digress on the point of this post which was application development. I finally got the "mock module" code done. I figured out why my success on module load reading bit didn't work (when writing, it checks for success so it was double checking so it was waiting with no one answering). After talking with someone though email, I realized the XML file example I gave on the website wasn't in the proper letter-casing. While the XML file that was given in the source was correct, I still felt it was needed to make the settings non-case-sensitive.

I also got some UI code added in for the animation files. I emailed Grant on a question regarding how the files actually work. Just want to verify I read the code correctly. If what I think is true, then I'm going to have to do some tweaking to get it to load properly on a "non-standard-configured" boards.

I did a bunch of research on getting a winamp plug in .Net �? doesn't look like it is going to happen any time soon at least by me. What I want is a DSP wrapper in .Net that works. Once I have a wrapper, I can do the rest with ease. I found a C++ wrapper but I don't think that will port to .Net or I am just too retarded.

So what I was thinking was extending my diagnostic app out and have it cycle through the animations randomly on a timer. This disappoints me but what can one do?

Also can any application 'hear' an event that is fired off from another? If so can a COM fire off an 'event' and have a .Net application pick it up?

Possible extending of the app also would be to add in a board on the right side that is defined by the XML config file. Provide a real time update on how the board should be acting / looking. Call me a sucker for wasting memory and CPU cycles.

I'm not dead, just busy. I got 7 boards totally working, 1 board has 1 red LED that won't work. One board looks correct but not working and one board I just know I totally f'ed up.

I'm going to start researching WinAmp code and see which style plugin is the best. I'm aiming for an Audio plugin so if people still would want a visual on their monitor / tv, they still can. ( I "heart" MilkDrop as a visual plugin).

I did some code review on two of the .C files from MIT but have yet to implement them since I'm not sure how the data from WinAmp comes to me. I've already spotted a couple areas where their code runs into a couple possible buffer overflows along with loop optimizations that could be done