Title: Pocket LEDs (Game)

kando

Senior Member
I was hoping to put this project into a small key ring type enclosure but haven't got the time at the moment. Thought I would post it here though in case anyone wanted to use the code etc.

Title: Pocket LEDs

Description:
I was trying to create a simple game that would be easy to do, but would involve concentration and motor skills. This game involves both.

In this game you must light 5 green LEDs and one last red LED to complete a game.
Each green LED requires 5 correct pushes of the switch to light the next green LED and finally the red LED.

The Larger Yellow LED flashes at slightly different rates during the game.

A correct push of the switch 1 gives a small winning sound and the seven segment display displays the number of correct pushes of the switch.

A correct push of the switch is when the Yellow LED is OFF, (not illuminated) and gives a winning achievement sound on the Piezo sounder and the seven segment display is incremented by 1.

An incorrect push of the switch gives a losing sound on the Piezo sounder and also shows a decrement of the number on the seven segment display.

When the 4th or 5th green light is illuminated mistakes cost more! Be careful. More points are deducted at this stage.

Getting all green lights and the Red Led illuminated gives the winning sound and sets off a winning sequence of Lights.

Be warned. It can be infuriating!

The least amount of time or the least number of clicks of the switch is two ways of determining a good win.

Good luck, patience and good finger pushing.

(Pass the time waiting to collect someone from train station!)



The program uses parallel processing and utilises case statements to manage the user input.

The program could easily be changed to have a timer of low, medium or hard difficulty levels.

Here is a picture of the test bread board using the Picaxe development board.

Pocket LED1.JPG
 

kando

Senior Member
The program uses an 18M2+ Picaxe chip for the code and utilises a CD4026B chip to drive the seven segment display.
The only other items are the push to make switch handful of resistors, some LEDs and the small piezo sounder.
These are shown marked in the next picture.
Pocket LED2.JPG
 

kando

Senior Member
The Code for this uses parallel processing so X2 chips were out. Only the M2 chips were any use. That's the good thing about Picaxe chips there is always one of them for the application/idea in mind (just my personal opinion).

Here is the third bit... the code.
I didn't mention before that the reset after the winning game lights is another push/hold down of the switch 1 which resets the program.

Code is in two parts because of limitations of forum....
Next two posts.
 

kando

Senior Member
next three posts sorry....

Code:
[color=Green]; *******************************
;    Filename: Pocket Led        
;    Date: 08/02/2014 
;    File Version: 1.0     
;    Written by:ken anderson
;    Function: LED game       
;    Last Revision:11/2/2014
;    Target PICAXE: 18M2 module
; *******************************
;The idea of the game is to light 5 green leds and the last red LED
;Each green led costs 5 correct pushes of the switch
;A correct push of the switch gives a small winning sound
;A correct push also gives the next number on the seven segment display
;A correct push of the switch is when the Yellow LED is OFF
;An incorrect push of the switch gives a small losing sound 
;An incorrect push also gives the previous number on the seven segment display
;An incorrect push of the switch is when the Yellow LED is ON
;When you get to the 4th and 5th green light mistakes cost more!
;as you progress the Yellow LED gets slightly quicker
;Getting all green lights and the Red Led illuminated gives the winning sound sets off a winning sequence of Leds and sound
; the least amount of time or the least number of clicks of the switch is a way of determining a good win.

[color=Navy]#picaxe [/color][color=Black]18M2 module[/color]
[color=Navy]#no_data[/color]
[color=Green];#simtask all[/color]

[color=Blue]symbol Led1[/color][color=DarkCyan]=[/color][color=Blue]b.0
symbol Led2[/color][color=DarkCyan]=[/color][color=Blue]b.1
symbol Led3[/color][color=DarkCyan]=[/color][color=Blue]b.2
symbol pwmPin[/color][color=DarkCyan]=[/color][color=Blue]b.3
symbol Led4[/color][color=DarkCyan]=[/color][color=Blue]b.4
symbol Led5[/color][color=DarkCyan]=[/color][color=Blue]b.5
symbol pwmPinReset[/color][color=DarkCyan]=[/color][color=Blue]b.6
symbol Led6[/color][color=DarkCyan]=[/color][color=Blue]b.7
symbol Led7[/color][color=DarkCyan]=[/color][color=Blue]c.6
symbol SwitchA[/color][color=DarkCyan]=[/color][color=Blue]c.1
symbol [/color][color=Purple]countA[/color][color=DarkCyan]=[/color][color=Purple]b14[/color]
[color=Blue]symbol Snd[/color][color=DarkCyan]=[/color][color=Blue]c.0 [/color][color=Green];pin for piezo sound[/color]
[color=Blue]symbol [/color][color=Purple]note0[/color][color=DarkCyan]=[/color][color=Purple]b8[/color][color=Green];correct sound[/color]
[color=Blue]symbol [/color][color=Purple]note1[/color][color=DarkCyan]=[/color][color=Purple]b9[/color][color=Green];incorrect sound

;pins not used and for further use
;c.2 in/output
;c.3 serial out
;c.4 input
;c.5 input
;c.7 in/output[/color]
 

kando

Senior Member
Code:
[color=Blue]start0: [/color][color=Green];parallel process 0[/color]
[color=Purple]w3[/color][color=DarkCyan]=[/color][color=Navy]400[/color][color=Green]; set this higher if you want an easier game lower if a harder game is wanted[/color]
[color=Black]main0:[/color]
[color=Blue]pause [/color][color=Purple]w3[/color]
[color=Blue]high led7
pause [/color][color=Purple]w3[/color]
[color=Blue]low led7
goto [/color][color=Black]start0[/color]

[color=Blue]start1:[/color][color=Green];parallel process 1
;goto endgame ;test endgame sound and leds[/color]
[color=Purple]dirsC [/color][color=DarkCyan]= [/color][color=Navy]%00000000 [/color][color=Green];set pins C as inputs
;set and check pins B[/color]
[color=Purple]dirsB [/color][color=DarkCyan]= [/color][color=Navy]%11111111 [/color][color=Green]; set pins B to be Outputs[/color]
[color=Purple]pinsB [/color][color=DarkCyan]= [/color][color=Navy]%11111111 [/color][color=Green]; set pins B to high to check the leds[/color]
[color=Blue]pause [/color][color=Navy]1000[/color]
[color=Purple]pinsB [/color][color=DarkCyan]= [/color][color=Navy]%00000000 [/color][color=Green]; set pins B back to low.switch off Leds[/color]
[color=Blue]pause [/color][color=Navy]50[/color]
[color=Blue]pulsout pwmPinReset[/color][color=Black],[/color][color=Navy]10 [/color][color=Green];pwmPinReset ;reset display to 0[/color]
[color=Black]main:[/color]
[color=Blue]pause [/color][color=Navy]3000[/color]
[color=Green];if switchA is pressed when led7 is off then inc countA 
;if switchA is pressed when led7 is on then dec countA
;when countA >=5 then led1 starts to flash
;when countA >=10 etc...[/color]
[color=Purple]countA[/color][color=DarkCyan]=[/color][color=Navy]0 [/color][color=Green];hits or misses count[/color]
[color=Purple]b1[/color][color=DarkCyan]=[/color][color=Navy]300 [/color][color=Green];flash rate, increase to make more difficult at higher levels[/color]
[color=Purple]b3[/color][color=DarkCyan]=[/color][color=Navy]0 [/color][color=Green];seven segment variable[/color]
[color=Purple]note0[/color][color=DarkCyan]=[/color][color=Navy]90[/color][color=Green];Snd note[/color]
[color=Purple]note1[/color][color=DarkCyan]=[/color][color=Navy]30[/color][color=Green];Snd note[/color]
[color=Blue]Do
   select case [/color][color=Purple]pinc.6[/color][color=Green];led7
      [/color][color=Blue]case [/color][color=Navy]0 [/color][color=Green];led7 is off
            [/color][color=Blue]select case [/color][color=Purple]pinc.1[/color][color=Green];switchA is pressed when Led7 is OFF
               [/color][color=Blue]case [/color][color=Navy]1 [/color][color=Green];switchA is pressed
                  [/color][color=Blue]pause [/color][color=Navy]300[/color][color=Green];switch debounce
                  [/color][color=Blue]sound snd[/color][color=Black],[/color][color=Blue]([/color][color=Purple]note0[/color][color=Black],[/color][color=Navy]6[/color][color=Blue])
                  inc [/color][color=Purple]countA
                  [/color][color=Blue]inc [/color][color=Purple]b3
                  [/color][color=Blue]Select case [/color][color=Purple]countA
                     [/color][color=Blue]case [/color][color=Navy]0 [/color][color=Blue]to [/color][color=Navy]5 [/color][color=Green];nothing happens
                     [/color][color=Blue]case [/color][color=Navy]6 [/color][color=Purple]b3[/color][color=DarkCyan]=[/color][color=Navy]0[/color][color=Black]:[/color][color=Blue]high led1[/color][color=Black]:[/color][color=Purple]w3[/color][color=DarkCyan]=[/color][color=Purple]w3[/color][color=DarkCyan]-[/color][color=Purple]b1
                     [/color][color=Blue]case [/color][color=Navy]11 [/color][color=Purple]b3[/color][color=DarkCyan]=[/color][color=Navy]0[/color][color=Black]:[/color][color=Blue]high led2[/color][color=Black]:[/color][color=Purple]w3[/color][color=DarkCyan]=[/color][color=Purple]w3[/color][color=DarkCyan]-[/color][color=Purple]b1
                     [/color][color=Blue]case [/color][color=Navy]16 [/color][color=Purple]b3[/color][color=DarkCyan]=[/color][color=Navy]0[/color][color=Black]:[/color][color=Blue]high led3[/color][color=Black]:[/color][color=Purple]w3[/color][color=DarkCyan]=[/color][color=Purple]w3[/color][color=DarkCyan]-[/color][color=Purple]b1
                     [/color][color=Blue]case [/color][color=Navy]21 [/color][color=Purple]b3[/color][color=DarkCyan]=[/color][color=Navy]0[/color][color=Black]:[/color][color=Blue]high led4[/color][color=Black]:[/color][color=Purple]w3[/color][color=DarkCyan]=[/color][color=Purple]w3[/color][color=DarkCyan]-[/color][color=Purple]b1
                     [/color][color=Blue]case [/color][color=Navy]26 [/color][color=Purple]b3[/color][color=DarkCyan]=[/color][color=Navy]0[/color][color=Black]:[/color][color=Blue]high led5[/color][color=Black]:[/color][color=Purple]w3[/color][color=DarkCyan]=[/color][color=Purple]w3[/color][color=DarkCyan]-[/color][color=Purple]b1
                     [/color][color=Blue]case [/color][color=DarkCyan]>=[/color][color=Navy]31[/color][color=Black]:[/color][color=Blue]goto [/color][color=Black]endgame
                  [/color][color=Blue]end select
                  gosub [/color][color=Black]sevensegmentdisp
            [/color][color=Blue]end select
      case [/color][color=Navy]1 [/color][color=Green];led7 is on
            [/color][color=Blue]select case [/color][color=Purple]pinc.1
               [/color][color=Blue]case [/color][color=Navy]1 [/color][color=Green];switchA is pressed when Led7 is ON
                  [/color][color=Blue]pause [/color][color=Navy]300
                  [/color][color=Blue]sound snd[/color][color=Black],[/color][color=Blue]([/color][color=Purple]note1[/color][color=Black],[/color][color=Navy]6[/color][color=Blue])
                  if [/color][color=Purple]countA[/color][color=DarkCyan]=[/color][color=Navy]0 [/color][color=Blue]then :[/color][color=Purple]countA[/color][color=DarkCyan]=[/color][color=Navy]1[/color][color=Black]:[/color][color=Blue]endif
                  dec [/color][color=Purple]countA
                  [/color][color=Blue]if [/color][color=Purple]b3[/color][color=DarkCyan]=[/color][color=Navy]0 [/color][color=Blue]then :[/color][color=Purple]b3[/color][color=DarkCyan]=[/color][color=Navy]1[/color][color=Black]:[/color][color=Blue]endif
                  dec [/color][color=Purple]b3
               [/color][color=Blue]Select case [/color][color=Purple]countA
                     [/color][color=Blue]case [/color][color=Navy]0 [/color][color=Blue]to [/color][color=Navy]4 [/color][color=Green];nothing happens
                     [/color][color=Blue]case [/color][color=Navy]5 [/color][color=Purple]b3[/color][color=DarkCyan]=[/color][color=Navy]5[/color][color=Black]:[/color][color=Blue]low led1[/color][color=Black]:[/color][color=Purple]w3[/color][color=DarkCyan]=[/color][color=Purple]w3[/color][color=DarkCyan]+[/color][color=Purple]b1
                     [/color][color=Blue]case [/color][color=Navy]10 [/color][color=Purple]b3[/color][color=DarkCyan]=[/color][color=Navy]5[/color][color=Black]:[/color][color=Blue]low led2[/color][color=Black]:[/color][color=Purple]w3[/color][color=DarkCyan]=[/color][color=Purple]w3[/color][color=DarkCyan]+[/color][color=Purple]b1
                     [/color][color=Blue]case [/color][color=Navy]15 [/color][color=Purple]b3[/color][color=DarkCyan]=[/color][color=Navy]5[/color][color=Black]:[/color][color=Blue]low led3[/color][color=Black]:[/color][color=Purple]w3[/color][color=DarkCyan]=[/color][color=Purple]w3[/color][color=DarkCyan]+[/color][color=Purple]b1
                     [/color][color=Blue]case [/color][color=Navy]20 [/color][color=Purple]b3[/color][color=DarkCyan]=[/color][color=Navy]5[/color][color=Black]:[/color][color=Blue]low led4[/color][color=Black]:[/color][color=Purple]w3[/color][color=DarkCyan]=[/color][color=Purple]w3[/color][color=DarkCyan]+[/color][color=Purple]b1[/color][color=Black]:[/color][color=Purple]countA[/color][color=DarkCyan]=[/color][color=Navy]15[/color][color=Black]:[/color][color=Purple]b3[/color][color=DarkCyan]=[/color][color=Navy]5
                     [/color][color=Blue]case [/color][color=Navy]25 [/color][color=Purple]b3[/color][color=DarkCyan]=[/color][color=Navy]5[/color][color=Black]:[/color][color=Blue]low led5[/color][color=Black]:[/color][color=Purple]w3[/color][color=DarkCyan]=[/color][color=Purple]w3[/color][color=DarkCyan]+[/color][color=Purple]b1[/color][color=Black]:[/color][color=Purple]countA[/color][color=DarkCyan]=[/color][color=Navy]20[/color][color=Black]:[/color][color=Purple]b3[/color][color=DarkCyan]=[/color][color=Navy]5
                     [/color][color=Blue]case [/color][color=DarkCyan]>=[/color][color=Navy]30[/color][color=Green];nothing happens
                  [/color][color=Blue]end select
                  gosub [/color][color=Black]sevensegmentdisp
            [/color][color=Blue]end select
   end select
Loop[/color]

[color=Black]SevenSegmentDisp: [/color]
[color=Blue]pulsout pwmPinReset[/color][color=Black],[/color][color=Navy]10 [/color][color=Green];pwmPinReset ;reset display to 0[/color]
[color=Blue]if [/color][color=Purple]b3 [/color][color=DarkCyan]= [/color][color=Navy]0 [/color][color=Blue]then [/color][color=Black]endclk [/color][color=Green]; if b1 = 0 then return[/color]
[color=Blue]for [/color][color=Purple]b15 [/color][color=DarkCyan]= [/color][color=Navy]1 [/color][color=Blue]to [/color][color=Purple]b3 [/color][color=Green]; start a for...next loop[/color]
[color=Blue]pulsout pwmPin[/color][color=Black],[/color][color=Navy]10 [/color][color=Green]; pulse SevenSegmentDisp line[/color]
[color=Blue]next [/color][color=Purple]b15 [/color][color=Green]; next loop[/color]
[color=Black]endclk:[/color]
[color=Blue]return [/color][color=Green]; return from sub-procedure[/color]
 

kando

Senior Member
Code:
[color=Black]EndGame:[/color]

[color=Purple]b21[/color][color=DarkCyan]=[/color][color=Navy]50[/color]
[color=Blue]resume [/color][color=Navy]2[/color][color=Green];start the endgame sound in parallel program[/color]
[color=Blue]do
   pause [/color][color=Navy]500
   [/color][color=Purple]pinsB [/color][color=DarkCyan]= [/color][color=Navy]%10110111 [/color][color=Green]; set pins B to high to check the leds
   [/color][color=Blue]pause [/color][color=Navy]500
   [/color][color=Purple]pinsB [/color][color=DarkCyan]= [/color][color=Navy]%00000000 [/color][color=Green]; set pins B back to low.switch off Leds
   [/color][color=Blue]pause [/color][color=Navy]500
   [/color][color=Blue]high led1
   pause [/color][color=Purple]b21
   [/color][color=Blue]low led1
   high led2
   pause [/color][color=Purple]b21
   [/color][color=Blue]low led2
   high led3
   pause [/color][color=Purple]b21
   [/color][color=Blue]low led3
   high led4
   pause [/color][color=Purple]b21
   [/color][color=Blue]low led4
   high led5
   pause [/color][color=Purple]b21
   [/color][color=Blue]low led5
   high led6
   pause [/color][color=Purple]b21
   [/color][color=Blue]low led6
   high led7
   pause [/color][color=Purple]b21
   [/color][color=Blue]low led7
   pause [/color][color=Navy]100
   [/color][color=Blue]pause [/color][color=Purple]b21
   [/color][color=Blue]high led7
   pause [/color][color=Purple]b21
   [/color][color=Blue]low led7
   high led6
   pause [/color][color=Purple]b21
   [/color][color=Blue]low led6
   high led5
   pause [/color][color=Purple]b21
   [/color][color=Blue]low led5
   high led4
   pause [/color][color=Purple]b21
   [/color][color=Blue]low led4
   high led3
   pause [/color][color=Purple]b21
   [/color][color=Blue]low led3
   high led2
   pause [/color][color=Purple]b21
   [/color][color=Blue]low led2
   high led1
   pause [/color][color=Purple]b21
   [/color][color=Blue]low led1
   pause [/color][color=Navy]500[/color]
[color=Blue]loop until [/color][color=Purple]pinc.1 [/color][color=DarkCyan]= [/color][color=Navy]1[/color][color=Green];reset the game[/color]
[color=Blue]reset
return
end
start2:[/color][color=Green];parallel process 2[/color]
[color=Blue]suspend [/color][color=Navy]2[/color]
[color=Black]main2:[/color]
[color=Green];sound endgame[/color]
[color=Blue]for [/color][color=Purple]b20[/color][color=DarkCyan]=[/color][color=Navy]100 [/color][color=Blue]to [/color][color=Navy]125
   [/color][color=Blue]sound snd[/color][color=Black],[/color][color=Blue]([/color][color=Purple]b20[/color][color=Black],[/color][color=Navy]1[/color][color=Blue])
next
for [/color][color=Purple]b20[/color][color=DarkCyan]=[/color][color=Navy]125 [/color][color=Blue]to [/color][color=Navy]100 [/color][color=Blue]step [/color][color=DarkCyan]-[/color][color=Navy]1
   [/color][color=Blue]sound snd[/color][color=Black],[/color][color=Blue]([/color][color=Purple]b20[/color][color=Black],[/color][color=Navy]1[/color][color=Blue])
next [/color][color=Purple]b20[/color]
[color=Blue]pause [/color][color=Navy]1000[/color]
[color=Blue]goto [/color][color=Black]main2[/color]
[color=Blue]end[/color]
 

kando

Senior Member
Finally learnt how to do a You tube video
1 min 45 seconds:
[video=youtube_share;qnHKDwPPdgM]http://youtu.be/qnHKDwPPdgM[/video]
 

kando

Senior Member
Forgot to put in an On/off switch on the circuit diagram...Pocket LEDs v1_1 for Picaxe .JPG So here it is.

Comments are welcome.
 
Top