Having the BASIC Stamp count activity is another important way to create conditional behaviors. In this next program you will be using a variable and storing the number of times a button is pressed to make decisions. In order to use the FOR NEXT LOOP you must be able to assign a variable (which is a register in ram) changing values to keep track what the count is. The command for creating a variable is VAR. Remember, variables in bold should be in mixed-case and start with an uppercase letter such as Bit, Nib, Byte or Word. Variable names should use lower-case and upper case mixed letters to offer yourself descriptive variable names such as: light, ledOut, motor etc. light VAR Bit ‘a bit (1 bit) permits either o or 1 LedOut VAR Nib ‘a nible (4 bits) permits variables between 0-15 InfrSense VAR ‘Byte ‘a byte (8 bits) permits variable between 0 - 255 Motor VAR Word ‘ a word (16 bits) permits variables between 0-65535 The bits, nibble, bytes and words are all based on binary logic. If you can imagine a one-bit system in binary, you can have two possible states. The bit can either be high or low. If you have two bits, then you can imagine that you have four different possibilities for storing information. These are bit 1 is high and bit two is high which is one possible state of the pins, Now bit 1 is low and bit two is high another possible state of the pins. Now bit 1 is high and bit two is low another possible state of the pins. Now both bits are low which is the fourth and final permutation that the pins can be in. Therefore, a two-bit system would allow four possible different states of two pins. Now imagine 4 pins and the permutations possible with the four pins. The possible states are 16 different possibilities. Now imagine an 8 pin system or a byte and you can calculate that this would allow 256 different possibilities of arranging these pins in different permutations as would a 16 bit squared allow 65536 different arrangements of these 16 pins in either a high or low states. The syntax for a FOR NEXT LOOP is: FOR variable, _1, argument_2, {optional argument} Therefore, the program below would count down 10 times, causing the LED to blink 10 times and then stop. ' {$STAMP BS2} ' {$PBASIC 2.5} X VAR Word FOR x = 1 to 10 HIGH 1 PAUSE 100 LOW 1 PAUSE 100 NEXT This FOR….NEXT loop command can also be used to count events such as pressing a switch. This is valuable as it will allow you to make conditional decisions based on how many times a switch is activated. Enter the program below. In this program a conditional branching to a subroutine is allowing you to count the number of times you press the switch on the board and each time you do, the LED attached to pin 0 is turned on an off. ' {$STAMP BS2} ' {$PBASIC 2.5} Total VAR Word 'create a variable named "total" X VAR Word 'create a variable named "x" INPUT 15 'make pin 15 an input OUTPUT 0 'make pin 0 an output X=1 Look4data: 'start main program LOW 0 'turn led off IF IN15 = 0 THEN add 'look at pin 15 if it is equal to 0 then goto subroutine "add" PAUSE 20 GOTO look4data 'return to top of program Add: 'start subroutine "add" FOR total = 1 TO x 'this will count the number of ‘times the button is pressed HIGH 0 'turn led on PAUSE 500 'keep led on for .5 seconds LOW 0 'turn led off PAUSE 200 'keep led off for .2 seconds NEXT ‘go to top of "add" once for each time button is pressed IF (x=5) THEN take_5
X=x+1 'add value of one for each time ‘button was pressed GOTO look4data 'go back to main program Take_5: X=1 FOR x=1 TO 20 HIGH 0 PAUSE 10 LOW 0 PAUSE 20 NEXT X=1 GOTO look4data
|