3D printed case for 'fakeduboys'

Hi!

I published a 3D printed case suitable for a ‘DIY Arduboy Clone’ mounted on a 70x50mms piece of board.

Link. http://www.thingiverse.com/thing:2283349


I hope you find it useful.:grin:

Have fun!

6 Likes

Awesome! Does the sound works properly with that buzzer?

1 Like

Omg hah it’s using mouse button switches!

1 Like

Yes!! desoldered from recicled broken mouses. The ‘click’ is great. :slight_smile:

1 Like

Sounds ok, without any resistor, sounds a bit ‘broken’ but with the wheel potentiometer you can adjust the volume and keep a good sound.
A 200-400 Ohms resistor it’s ok for a good sound and aceptable volume

Really nice! Thanks for sharing,

1 Like

Oooooooo I just noticed you used a 1.3" SH1106 OLED, can you please explain what changes you made to the libraries to get it working?

For the SH1106 screen i take some code from a library shared through this community… (I can´t remember the thread…)

The changes in code are in the src/core/core.cpp and src/Arduboy2core.cpp for arduboy and arduboy2 libraries.

In Arduboy2/src/arduboy2core.cpp relace the two ‘paintscreen’ funcions with this:

void Arduboy2Core::paintScreen(uint8_t *image, bool clear){
	for (int8_t i = 7; i >= 0; i--)
	{
    LCDCommandMode();
    SPI.transfer(0xB0 + i);		// Set row
    SPI.transfer(0x02);		// 0x02, Set lower column address (use 0x00 for SD1306)
    SPI.transfer(0x10); // Set higher column address
    LCDDataMode();
     
    for (uint16_t j = 128; j > 0; j--)
    {
		if(clear) image[i*128+128-j] = 0;
		  SPI.transfer(image[i*128+128-j]);
    }
	}	
}
void Arduboy2Core::paintScreen(const uint8_t *image)
{ 
	for (int8_t i = 7; i >= 0; i--)
	{
    LCDCommandMode();
    SPI.transfer(0xB0 + i);		// Set row
    SPI.transfer(0x02);		// 0x02, Set lower column address (use 0x00 for SD1306)
    SPI.transfer(0x10); // Set higher column address
    LCDDataMode();
    
    for (uint16_t j = 128; j > 0; j--)
        {
		      SPI.transfer(image[i*128+128-j]);
        }
	}
}

And for the Arduboy/src/core/core.cpp in the Arduboy library replace the paintScreen funcion for this code:

void ArduboyCore::paintScreen(unsigned char image[])
{ 
	for (int8_t i = 7; i >= 0; i--)
		{
		LCDCommandMode();
		SPI.transfer(0xB0 + i);		// Set row
		SPI.transfer(0x02);		// 0x02, Set lower column address (use 0x00 for SD1306)
		SPI.transfer(0x10); // Set higher column address
		LCDDataMode();
		
		for (uint16_t j = 128; j > 0; j--)
		{
			  SPI.transfer(image[i*128+128-j]);
		}
	}
}

i’m pretty sure that with only this changes the SH1106 works well but i wrote this modifications some weeks ago and maybe i forgot something.

The good thing it’s that this code works for SSD1306 and SH1106 and the only change it’s the 0x02 value in one line. So you can easily adapt for both drivers.

And the bad thing it’s that consumes more memory. not much but i can’t load Evade that occupies 99% of memory. (Solved deleting some parts of the soundtrack data :grin:)

Try and comment if worked or have some issues.

If people it´s interested I can share the full file or the library trough OneDrive or something like this. I don’t have Github.

Hope you find useful this code. good luck!

1 Like

yaaaaaaaa! Thank you very much! Muchas gracias!

I will try this out this soon, I got all the parts for my own fakeduino and will put aside some time to build it, if I can stop trying to play Circuit Dude that is.

Thank you again!

2 Likes

You’re wellcome! De nada!

Good luck with your fakeduboy!!

1 Like

Whoa. These are wicked-looking!

1 Like

Sorry for necrobumping but I want to share here that im working on my own front cover and its going to be even more accurate to the original design.

Not only will you have a smaller fakeduboy (if you cut off some parts), but it can also work with the existing arduboy!

You can check out the work-in-progress model here

1 Like