The project was created for Sparkfun's microcontroller competition 2011 and aims to demonstrate an number of useful design techniques which can be used when working with low-pin count microcontrollers. The code is written entirely in C and fits neatly into the 2K of available program flash on the chip. The PCB is only 1.5 inches square and uses both SMD and through-hole components, however it is perfectly possible to recreate the project using larger components on a breadboard or a small piece of strip-board.
The game is powered by a standard CR2032 3V lithium cell which is mounted on the underside of the game. The design uses the ultra low power standby feature of the microcontroller meaning that no power switch is required. Overall power consumption is kept to a minimum by using the internal oscillator of the PIC running at 4Mhz.
You can see a video of it in action over on youtube
Remove these ads by
Signing UpStep 1: Parts List
The MicroSimon hardware consists of the following parts:
* 1 x PIC12F683 SOIC 8-pin microcontroller
* 5 x 10K resistors (1206 SMD)
* 1 x BC817 NPN Transistor
* 1 x 100nF capacitor (0805 SMD)
* 4 x 3mm LEDs
* 1 x CR2032 battery holder
* 5 x Tactile push-button switches
* 1 x QMX-05 speaker
* 1 x 6 pin 2.54" right angled header




































Visit Our Store »
Go Pro Today »




problem, cause i use winpic wat for code do i need to use for
that program, i dont program for a long time so i hope you can help my
it is great! :)
congradulation Colin!
Keep the good work!
marC:)
thank you!
marC:)
do you have a bigger schematic please? i don't see much on this one
thank you!
marC:)
http://www.microchip.com/productselector/MCUProductSelector.html
because pickit is expensive and i would like to make my own programmer if i can
Really nice project! Congratulations!
I have one problem though. How can I assemble all these .c and .h files to an .asm file in order to load them to the PIC microcontroller? I tried microC for PIC and MPLab IDE but I couldn't managed it.
Thanks!
Hope this helps!
Thanks!
One totally useless tip:
randomNumber++;
if (randomNumber == 5) randomNumber = 1;
could be
randomNumber &= 0b11;
randomNumber++;
to get rid of the branch, not that you have such a busy loop that you need to save instructions...
randomNumber = (randomNumber + 1) % 5;
But there is always the trade-off between code readability and memory efficient coding. I always go the 'readable' route unless I really need to save some bytes.