Close

Trying to get a frame buffer working

A project log for Hacking the Crayola POV Dome Thing

I found a Crayola Digital Light Designer in a bargain bin and thought "What a Hack TREASURE!!!"

darrenlindleydarrenLindley 03/14/2020 at 23:230 Comments

What I need now is a frame buffer to represent the display in memory so the images do not have to be constantly calculate on every spin. Up till now I convert each line to the POV data structure and store them in different variables then draw them one by one. All I need to do is store the lines into an array during the initialisation process then draw each element of the array on every revolution of the spinner. I created an array of POV structs for 200 elemnts, gave it a go and it didnt work. I cant be using up all the memory, I still have 28k left to use! I changed somethings around and it still didnt work, and weird things were starting to happen. The Arduino program wasnt recognising my board, I had to rest the board and send the code before it completely reset.

Thats when something in my head said, is that 28ks of ROM or RAM. Check out the datasheet and I only have 2k of RAM to play with, this is enough to display about 50 columns. I looked and looked to get around this but you can only use flash to store variables that wont change, no good for this purpose. I wanted to setup some tests without the motor runnung and send back information using the Serial port but now I think my frame buffer has run into my boot loader cos the Serial wasnt working. This combined with the board not being recognised without resetting the board made it so frustrating I decided to abandon this board and use an Arduino Nano (under $10.00 online).

I also decide to make a platform for my board on the spinner and to add weight to counter balance the board. I used an old plastic membership card and glued it so the board would sit horizontally reducing wind resistance. A few days later I had the new board in and running great.

I though of adding external RAM, but I dont really want to add extra circuitry (Ive already added a resister). In the end I decided to try doing everything on the fly, change the image data to POV struct as needed, maybe this will give me the ability to draw the 200 columns I want. I tried that but the extra processing increases the time it takes to display a line on the screen which increaed the length of a pixel (ugly), now I can only get ~50 columns in one revolution.

So for now Ill go back to the 50 column frame buffer and use Flash memory to store my image arrays, which is fine cos you can only see a quarter of the screen properly anyway. Maybe using the Flash memory and condensing my code I can get aslightly bigger buffer.

Discussions