Help with making first clone?

Sorry, im not sure how to search this particular thread, but can anyone help me (or point me towards the correct resources) with making a diy clone on a breadboard? Ive got all the materials I need(a leonardo, ssd1306 tested/compatible screen, breadboard, buttons, and jumper wires), and I see where the correct pins go into the leonardo, but when it comes to using a breadboard, im not sure how to wire and use the buttons, and how to connect those to the leonardo. Thanks!

**edit: I also have all the arduboy libraries installed as well

OK, well… these were not written for the Arduboy, but if what you want is a good intro to breadboards / buttons, then @Pharap’s Pokitto tutorials may help:



Oh wonderful, thanks so much!

1 Like

How about some more details or a picture of the parts you’ll be using for your breadboard arduboy? It would be easier to give some help.

1 Like

Sorry for the delay, had a job change and just had a lot on my plate. But at the moment I have a Leonardo, an ssd1306 compatible (and tested) oled screen, a breadboard, buttons, and variety of resistors (just in case). Id imagine some of the pin wiring is in the header files? But I wasnt able to locate where. I also need to do a bit more reading on how to wire buttons. But other than that, Im not too sure where to go from here. Thanks!

1 Like

Sorry, way late to the party, I see you pin setup above.

Alright, I can understand the button tutorial fairly well, but unfortunately it seems my breadboard is too small for really setting up anything particularly functional (and my materials/moneys limited so my jumper cables are quite a bit too long and unwieldy), so I’m gonna have to get another breadboard and I’ll have better space to work with.

But in the meantime, just for the sake of teaching myself for future reference, I think im gonna just go ahead and try to follow along with what I have at the moment (which would place the buttons in a row). Only question I have, is that the button tutorial places the buttons across the two sides of the breadboard. I know each side and each row is isolated, so the flow of electricity would be over to that side and those particular rows, but do buttons need to be separated that way, or if I got a bigger breadboard could I place them in different places (further into each side for the breadboard for an up and down, respectively, as opposed to left and right using the same setup as the tutorial)?


1 Like

I guess there won’t be too many regulation on where you physically put the button (so in theory you can have the button at the other side of the street wired up correctly to a seperate board.)
By the way, got more info on the display. Good thing, I can get myself a 1.54 inch bigger one. :)
Good luck with yours, I am heading to work.

1 Like

I wanted to eventually make my own PCBs for this project, as i started with a beginner sensor to oled readout, and am now stepping up to this.

Learning the hardware prototyping is the next logical step for me to learn (beyond just adding to what Arduino fundamentals I already know), then after that i want to make it more neat and functional.

But what I was asking in this case, was more specifically, if a button needed to be wired in a way comparable to the tutorial (as in separated across the two sides of the breadoard) or if placing the button, resistor, +/-, and the data cable all on the same side (as both sides of the button) would be okay.

I just wasn’t sure if voltage (or +/-) on one side of the button could interfere with the other side. But I think I was just confusing myself a bit now that I look back at the above tutorial on buttons. I now see that the two sets of prongs don’t connect to the positive and negative independently of each other, but rather as a single signal via the one button press, essentially, so this would mean you could also put the data cable on either side (so long as it was still appropriately connected to power or ground) if I’m not mistaken.

EDIT: sorry for the paragraph, I just know there is a post cap on threads and trying to be conscientious, while still remaining as detailed as possible.

1 Like

Alright, I’ve gotten the buttons wired how I think they should be, but have yet to wire anything to the Arduino. Does anyone have any suggestions how I could illustrate just what I’m doing on the bread board, other than pictures? Would rather do something other than show the mess of extra long wires I’ve got going on, can just add the image as an edit to this post later.

In the meantime, I’ll be moving on to looking at the Arduino wiring and probably setting up the screen (because I can just wire it directly to the arduino). is (was?) a useful way of creating a virtual representation of wires / components on a breadboard.

1 Like

Still is, sort of.

Instead of doing frequent small builds they tend to do infrequent large builds. The last release was 2 years ago but the last commit was 27 days ago, and I suspect other branches are more active.

Awesome, thanks! Gonna be pretty tied up the next day or two but will try to look at that asap and attach to this post instead (because it’s more recent). Thanks!

Sorry, quick question- saw in Mr blinkys pinout table that his screen is wired differently. It was my understanding that the arduboy library used the ssd1306 library, and my wiring is different for that. Am I mistaken? Does it just work with ssd1306 compatible screens? Or was Mr blinkys using a different screen? Thanks

A little tip about the forum:

People will get a notification if you mention them using an ‘@’.

For example @CatDadJynx would give you a notification and @Mr.Blinky will give Mr Blinky a notification. It helps in situations like this where you’ve got an idea of who might know the information that you need.

1 Like

Oh alright, thanks! Good timing too actualy, had another question- sorry. I found in the arduboy core.cpp the pin locations, which match up to @Mr.Blinky 's, but i see that both say the buttons should be in A0-3, which i presume are analog pins, but the other two buttons (a and b) are just in pin 7 and 8. Are these digital? Thanks!

1 Like

You rang my lord?

The pins are GPIO meaning General Purpose Input / Output. They can be configured as simple input or output ports or a special function that has been assigned to that pin. On Arduboy A0…A3 are configured as digital inputs with internal pull-ups (meaning when the button is not pressed, the connection is open and pulled high so when it is read it will be read as a logic ‘1’) Pins 7 and 8 are also configured as digital inputs with pull-ups.

How you wire up your display depends on the Arduino you use and the number of pins on your display.
If you’re display has 7 pins and you’re using an Arduino Leonardo or Micro, you can wire it up exactly as Arduboy.

However if you’re using a (SparkFun) Pro Micro 5V. you need to wire it up slightly differently because the Pro Micro does not have a pin 12. The same counts for the green led pin and for the 2nd speaker pin. They are not available on the Pro Micro

The standard solution for this is to:

  • connect the OLED CS pin to GND (ground)
  • not use a RGB LED
  • connect the 2nd speaker pin to GND (ground)

The Advantage is that you can run existing hex files on your home made Arduboy(when you’re using a SSD1306 display. The disadvantage is that you’ll miss some sounds with certain sketches and miss the RGB LED (which is IMO convenient to have for the system sound settings)

The alternate solution is to connect those signals to other pins that are available on the Pro Micro. The disadvantage of this is that you can not upload standard arduboy hex files. You will have to build/compile/upload them with the Arduino IDE and you will have to use modified libraries. But with the homebrew package) this is made easy.

Note that I’ve edited my pinout table the other day and added the standard wiring for Pro Micro 5V

1 Like

Alright, thanks! I was just a bit confused by the display library being used, but now I see it’s just the arduboy library taking care of that itself. I have a Leonardo, so I’ll change my pin locations for the screen and use the corresponding button inputs as well. Will post with an update soon, thanks!

Also, i have an 8 pin ssd1306 oled, but three are for vin, gnd, and 3v3. I’ve gotten everything plugged into the Leonardo accordingly, except for those last two.

Edit: found the appropriate answer to my question in a much much much earlier response by the OP of this entire thread. Seems it does require the icsp headers, will update shortly

Double edit: actually, sorry, seems I was mistaken, what I was looking at was for a different screen. Still unsure as to where to put those two. Thanks!