PDA

View Full Version : Help. A better way to Fire my LEDs



rh3d
03-31-2010, 01:25 PM
I've been working through the Stamp works book and I'm having a bit of trouble understanding how take control of my program.ˇ I'm hoping for some help?

Below I have some code to fire 12 LEDs that are setup ready to go 1 through 12.ˇ I'm looking to define my delaysˇfor after my button pushˇand run through everything in the body of the code prior ro firing anything.ˇ When I use Pause, of course its going through the code consecutively, so I'll never be able to fire LED 1 & 12 at the same timeˇ500ms after the button push.

Can anyone hook me up with an example of how to this better accompanied by an explanation? ;)


' {$STAMP BS2}
' {$PBASIC 2.5}
' -----[ Program Description ]-----
'
' -----[ I/O Definitions ]-----
'
' Defines the PIN associated with a LED or Button
'
theBtn PIN 0 ' Trigger Button for LEDs
LED1 PIN 1 ' LED 1 on Pin 1
LED2 PIN 2 ' LED 2 on Pin 2
LED3 PIN 3 ' LED 3 on Pin 3
LED4 PIN 4 ' LED 4 on Pin 4
LED5 PIN 5 ' LED 5 on Pin 5
LED6 PIN 6 ' LED 6 on Pin 6
LED7 PIN 7 ' LED 7 on Pin 7
LED8 PIN 8 ' LED 8 on Pin 8
LED9 PIN 9 ' LED 9 on Pin 9
LED10 PIN 10 ' LED 10 on Pin 10
LED11 PIN 11 ' LED 11 on Pin 11
LED12 PIN 12 ' LED 12 on Pin 12
' -----[ Constants ]-----
'
' The LED # Delay Time delays the firing of the LED
'
LED1DelayTm CON 500 ' delay time for LED1
LED2DelayTm CON 400 ' delay time for LED2
LED3DelayTm CON 300 ' delay time for LED3
LED4DelayTm CON 100 ' delay time for LED4
LED5DelayTm CON 100 ' delay time for LED5
LED6DelayTm CON 300 ' delay time for LED6
LED7DelayTm CON 400 ' delay time for LED7
LED8DelayTm CON 500 ' delay time for LED8
LED9DelayTm CON 2000 ' delay time for LED9
LED10DelayTm CON 5000 ' delay time for LED10
LED11DelayTm CON 5000 ' delay time for LED11
LED12DelayTm CON 100 ' delay time for LED12

' -----[ Variables ]-----
'
' Assign Variable to button
'
theBtnWrk VAR Byte ' button type variable


' -----[ Program Code ]-----
'
' basic Stamp manual p.139 - Change the value (200) in BUTTON to effect the delay
' its modes: 0 = no delay; 1-254 = varying delays before auto-repeat;
' 255 = no auto-repeat (only one action per button press)
'
' The BUTTON instruction will cause the program to branch to
' No_Press unless P0 = 0
'
' The body of the program is simply triggering the LED with a delay
' LOW ensures the OUTPUT of the PIN is set TO 0 off
' PAUSE is set under constants and is a way of offsetting the LED response
' HIGH simply fires the LED 1
' LOW sets the LED back to o off
'
Main:
PAUSE 5
BUTTON theBtn, 0, 200, 20, theBtnWrk, 0, No_Press
DEBUG " ButtonPush "
'''' LED 1 Control
LOW LED1 ' ensure LED is off
PAUSE LED1DelayTm ' Delay LED based on constant
HIGH LED1 ' Fire LED
DEBUG " LED1 " ' Send feedback that LED fired
LOW LED1 ' ensure LED is off
'''' LED 2 Control
LOW LED2
PAUSE LED2DelayTm
HIGH LED2
DEBUG " LED2 "
LOW LED2
'''' LED 3 Control
LOW LED3
PAUSE LED3DelayTm
HIGH LED3
DEBUG " LED3 "
LOW LED3
'''' LED 4 Control
LOW LED4
PAUSE LED4DelayTm
HIGH LED4
DEBUG " LED4 "
LOW LED4
'''' LED 5 Control
LOW LED5
PAUSE LED5DelayTm
HIGH LED5
DEBUG " LED5 "
LOW LED5
'''' LED 6 Control
LOW LED6
PAUSE LED6DelayTm
HIGH LED6
DEBUG " LED6 "
LOW LED6
'''' LED 7 Control
LOW LED7
PAUSE LED7DelayTm
HIGH LED7
DEBUG " LED7 "
LOW LED7
'''' LED 8 Control
LOW LED8
PAUSE LED4DelayTm
HIGH LED8
DEBUG " LED8 "
LOW LED8
'''' LED 9 Control
LOW LED9
PAUSE LED9DelayTm
HIGH LED9
DEBUG " LED9 "
LOW LED9
'''' LED 10 Control
LOW LED10
PAUSE LED10DelayTm
HIGH LED10
DEBUG " LED10 "
LOW LED10
'''' LED 11 Control
LOW LED11
PAUSE LED11DelayTm
HIGH LED11
DEBUG " LED11 "
LOW LED11
'''' LED 12 control
LOW LED12
PAUSE LED12DelayTm
HIGH LED12
DEBUG " LED12 "
LOW LED12
GOTO Main
No_Press:
GOTO Main

Unsoundcode
03-31-2010, 07:49 PM
Hi , check out the PBasic instructions DIRS andˇOUTS under the heading "Memory and Variables in the IDE help file.

The pins P0 through P15 can be controlled simultaneously or independently using these instructions.

Jeff T.