DIY Arduboy (help)

Hi. I recently got all the parts to make my actual Arduboy clone and I have decided to pull the plug on the custom Picovaders console. Not because it didn’t work because I think it might but because I can just reuse that board for my real Arduboy clone. I can just play Picovaders on that. It will be way more useful this way. So far I soldered the pins to the Pro micro and attached the screen.

So I did everything I needed to do before burning the bootloader. When it was finished it said “done burning” or something. I did it again just to be sure it was actually burned, because my Nano said the same thing but it never got burned. I think maybe this board actually did get burned but now I’m going to wire up the rest of the stuff.

I know I asked this before but I can’t find the reply anywhere. How do I wire up a passive buzzer? I remember something about resistors or something but I don’t know.


This is what I have so far. I just need to wire up the buttons then upload the game.

I recommend to upload the Hello World example at this stage to confirm you have soldered up the display wiring correctly. If it doesn’t work as expected it’s easier to troubleshoot at this stage.

Are you sure? I recommend to put a bit more effort in to documenting the things you’ve done. This will be helpful in case something doesn’t go as expected.

I wouldn’t asume something like that. When using the Arduino IDE make sure you have enabled the enable verbose output during options in Preferences:
preferences
With these options enabled a lot of useful information gets logged during compiling/uploading and bootloader burning. That will be helpful for troubleshooting.

By reading that log you will know if the bootloader (and fuses) were burned successfully.

Don’t give up so easily. In the top right in the community is a search option with advanced search option. You can also search by liked replies. If you liked the reply it’s easier to find.

By spending some time using the search option you’ll get the hang of it and will find a lot of useful information.

Depending on which wiring you chose you can hook the passive piezo buzzer directly to the GPIO pins or one GPIO pin and GND. You can optionally put a resistor in series to limit the volume in case it’s too loud.

In case of an passive electromagnetic buzzer I recommend to put a 100 or 220 uF/16V electrolitic capacitor in series (to limit current).

3 Likes

I will upload blink but how will I know in the log if it’s burned? Is there anything specific I need to look for?

I didn’t mention to upload the blink test. Uploading blink will not be useful for testing the OLED display.

You’ll know when you read the log :wink: Hint: look somewhere near the end.

3 Likes

It said that it could still not find a board on the port. I burned it so why does it not still work?

Was it this, by any chance?

If so, you might want to bookmark it so you don’t lose it again.

I’ll point out that this is precisely how I found the linked comment, and it took me barely a minute.

4 Likes

For troubleshooting it’s a good idea to ask that question to yourself and try to answer it as good as you can. It forces you to think about the steps you’ve made and by doing so you may realize or see what went wrong. In development this is also know as Rubber ducky debugging.

If I would ask me that question (with the info you supplied above). Some more questions pop up in my mind:

  • Did I use the right bootloader?
  • Is burning the bootloader blindly twice a gurantee for success?

For 1st I’d check if I have selected the right board in Arduino IDE on the Tools menu. before burning the bootloader.

For 2nd I’d apply the changes I suggested earlier and burn the bootloader again and read the log.

4 Likes

I burned it again but it still doesn’t work. But, on the bright side I have everything the log said. I have no clue what it says though.


avrdude: Version 6.3-20190619
         Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
         Copyright (c) 2007-2014 Joerg Wunsch

         System wide configuration file is "/app/Arduino/hardware/tools/avr/etc/avrdude.conf"
         User configuration file is "/home/jyotisaryuom/.avrduderc"
         User configuration file does not exist or is not a regular file, skipping

         Using Port                    : /dev/ttyACM0
         Using Programmer              : stk500v1
         Overriding Baud Rate          : 19200
         AVR Part                      : ATmega32U4
         Chip Erase delay              : 9000 us
         PAGEL                         : PD7
         BS2                           : PA0
         RESET disposition             : dedicated
         RETRY pulse                   : SCK
         serial program mode           : yes
         parallel program mode         : yes
         Timeout                       : 200
         StabDelay                     : 100
         CmdexeDelay                   : 25
         SyncLoops                     : 32
         ByteDelay                     : 0
         PollIndex                     : 3
         PollValue                     : 0x53
         Memory Detail                 :

                                  Block Poll               Page                       Polled
           Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
           ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
           eeprom        65    20     4    0 no       1024    4      0  9000  9000 0x00 0x00
           flash         65     6   128    0 yes     32768  128    256  4500  4500 0x00 0x00
           lfuse          0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
           hfuse          0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
           efuse          0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
           lock           0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
           calibration    0     0     0    0 no          1    0      0     0     0 0x00 0x00
           signature      0     0     0    0 no          3    0      0     0     0 0x00 0x00

         Programmer Type : STK500
         Description     : Atmel STK500 Version 1.x firmware
         Hardware Version: 2
         Firmware Version: 1.18
         Topcard         : Unknown
         Vtarget         : 0.0 V
         Varef           : 0.0 V
         Oscillator      : Off
         SCK period      : 0.1 us

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.03s

avrdude: Device signature = 0x1e9587 (probably m32u4)
avrdude: erasing chip
avrdude: reading input file "0x3F"
avrdude: writing lock (1 bytes):

Writing | ################################################## | 100% 0.01s

avrdude: 1 bytes of lock written
avrdude: verifying lock memory against 0x3F:
avrdude: load data lock data from input file 0x3F:
avrdude: input file 0x3F contains 1 bytes
avrdude: reading on-chip lock data:

Reading | ################################################## | 100% 0.01s

avrdude: verifying ...
avrdude: 1 bytes of lock verified
avrdude: reading input file "0xCB"
avrdude: writing efuse (1 bytes):

Writing | ################################################## | 100% 0.01s

avrdude: 1 bytes of efuse written
avrdude: verifying efuse memory against 0xCB:
avrdude: load data efuse data from input file 0xCB:
avrdude: input file 0xCB contains 1 bytes
avrdude: reading on-chip efuse data:

Reading | ################################################## | 100% 0.01s

avrdude: verifying ...
avrdude: 1 bytes of efuse verified
avrdude: reading input file "0xD8"
avrdude: writing hfuse (1 bytes):

Writing | ################################################## | 100% 0.01s

avrdude: 1 bytes of hfuse written
avrdude: verifying hfuse memory against 0xD8:
avrdude: load data hfuse data from input file 0xD8:
avrdude: input file 0xD8 contains 1 bytes
avrdude: reading on-chip hfuse data:

Reading | ################################################## | 100% 0.01s

avrdude: verifying ...
avrdude: 1 bytes of hfuse verified
avrdude: reading input file "0xFF"
avrdude: writing lfuse (1 bytes):

Writing | ################################################## | 100% 0.01s

avrdude: 1 bytes of lfuse written
avrdude: verifying lfuse memory against 0xFF:
avrdude: load data lfuse data from input file 0xFF:
avrdude: input file 0xFF contains 1 bytes
avrdude: reading on-chip lfuse data:

Reading | ################################################## | 100% 0.01s

avrdude: verifying ...
avrdude: 1 bytes of lfuse verified

avrdude done.  Thank you.

/app/Arduino/hardware/tools/avr/bin/avrdude -C/app/Arduino/hardware/tools/avr/etc/avrdude.conf -v -patmega32u4 -cstk500v1 -P/dev/ttyACM0 -b19200 -Uflash:w:/home/jyotisaryuom/.arduino15/packages/SparkFun/hardware/avr/1.1.13/bootloaders/caterina/Caterina-promicro16.hex:i -Ulock:w:0x2F:m 

avrdude: Version 6.3-20190619
         Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
         Copyright (c) 2007-2014 Joerg Wunsch

         System wide configuration file is "/app/Arduino/hardware/tools/avr/etc/avrdude.conf"
         User configuration file is "/home/jyotisaryuom/.avrduderc"
         User configuration file does not exist or is not a regular file, skipping

         Using Port                    : /dev/ttyACM0
         Using Programmer              : stk500v1
         Overriding Baud Rate          : 19200
         AVR Part                      : ATmega32U4
         Chip Erase delay              : 9000 us
         PAGEL                         : PD7
         BS2                           : PA0
         RESET disposition             : dedicated
         RETRY pulse                   : SCK
         serial program mode           : yes
         parallel program mode         : yes
         Timeout                       : 200
         StabDelay                     : 100
         CmdexeDelay                   : 25
         SyncLoops                     : 32
         ByteDelay                     : 0
         PollIndex                     : 3
         PollValue                     : 0x53
         Memory Detail                 :

                                  Block Poll               Page                       Polled
           Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
           ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
           eeprom        65    20     4    0 no       1024    4      0  9000  9000 0x00 0x00
           flash         65     6   128    0 yes     32768  128    256  4500  4500 0x00 0x00
           lfuse          0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
           hfuse          0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
           efuse          0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
           lock           0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
           calibration    0     0     0    0 no          1    0      0     0     0 0x00 0x00
           signature      0     0     0    0 no          3    0      0     0     0 0x00 0x00

         Programmer Type : STK500
         Description     : Atmel STK500 Version 1.x firmware
         Hardware Version: 2
         Firmware Version: 1.18
         Topcard         : Unknown
         Vtarget         : 0.0 V
         Varef           : 0.0 V
         Oscillator      : Off
         SCK period      : 0.1 us

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.04s

avrdude: Device signature = 0x1e9587 (probably m32u4)
avrdude: NOTE: "flash" memory has been specified, an erase cycle will be performed
         To disable this feature, specify the -D option.
avrdude: erasing chip
avrdude: reading input file "/home/jyotisaryuom/.arduino15/packages/SparkFun/hardware/avr/1.1.13/bootloaders/caterina/Caterina-promicro16.hex"
avrdude: writing flash (32762 bytes):

Writing | ################################################## | 100% 0.00s

avrdude: 32762 bytes of flash written
avrdude: verifying flash memory against /home/jyotisaryuom/.arduino15/packages/SparkFun/hardware/avr/1.1.13/bootloaders/caterina/Caterina-promicro16.hex:
avrdude: load data flash data from input file /home/jyotisaryuom/.arduino15/packages/SparkFun/hardware/avr/1.1.13/bootloaders/caterina/Caterina-promicro16.hex:
avrdude: input file /home/jyotisaryuom/.arduino15/packages/SparkFun/hardware/avr/1.1.13/bootloaders/caterina/Caterina-promicro16.hex contains 32762 bytes
avrdude: reading on-chip flash data:

Reading | ################################################## | 100% 0.00s

avrdude: verifying ...
avrdude: 32762 bytes of flash verified
avrdude: reading input file "0x2F"
avrdude: writing lock (1 bytes):

Writing | ################################################## | 100% 0.02s

avrdude: 1 bytes of lock written
avrdude: verifying lock memory against 0x2F:
avrdude: load data lock data from input file 0x2F:
avrdude: input file 0x2F contains 1 bytes
avrdude: reading on-chip lock data:

Reading | ################################################## | 100% 0.01s

avrdude: verifying ...
avrdude: 1 bytes of lock verified

avrdude done.  Thank you.

Thanks for the log. It tells that the fuses and sparkfun bootloader was burned successfully.

What didn’t work? Uploading a sketch? What board did you select when you tried uploading the sketch ?

1 Like

I selected “Sparkfun pro micro” with the 5 v and 16 mh setting. Is that the wrong one or…? I also uploading blink. I think by attached it sounded like I soldered it but I meant placing it on the breadboard.

That’s the option you need when using the Sparkfun bootloader. Blink will not be very useful as the default LED (LED_BUILTIN) is not present on a Pro Micro so nothing will blink (except the RX and TX LEDS briefly when uploading the sketch)

Can you explain that more in detail? Did you conclude that from the upload log?

1 Like

When you plug the Pro Micro into the PC USB port and enter lsusb from a terminal, the output should now include a line containing:
ID 1b4f:9204

If it does, I would try uploading the Pro Micro Blinkies test sketch. (I’m not sure if that’s what you meant by “uploading blink”). This should flash the on board Tx and Rx LEDs to let you know the Pro Micro itself is working. After that, you can start to deal with getting the display, buttons, etc. working.

https://learn.sparkfun.com/tutorials/pro-micro--fio-v3-hookup-guide#example-1-blinkies

3 Likes

That’s the ID for Sparkfun’s a 3.3V / 8MHz Pro Micro.

For 5V /16MHz version:

ID 1b4f:9205 (when in bootloader mode)
ID 1b4f:9206 (normal mode)

3 Likes

It still says the same thing that it cannot find a board on the port.

Even though the Pro Micro now has a working bootloader, it might not have a sketch loaded that contains working USB code. You should try uploading the Pro Micro “blinkies” sketch using the double reset technique.

2 Likes

Also I have a different question. Is there a Tetris like game for the Arduboy?

If you mention Tetris on this forum your topic is likely to be made unlisted, as your last one was.

2 Likes