Shop OBEX P1 Docs P2 Docs Learn Events
Could someone tell me why???? — Parallax Forums

Could someone tell me why????

CRST1CRST1 Posts: 103
edited 2021-06-06 22:31 in BASIC Stamp

I have this simple code that uses 1 input and 1variable bit and I can't fathom why it is not working right.
It's really simple, when the input goes high it runs a sub and sets bit to high so it does not run sub again while it stays on. When it goes low it runs a sub and sets bit low so it does not run sub again while it is low. It work when it goes high but when it goes low it does not run the sub. I used "bit = 1". I found if I use "bit > 0" it works. If it is a bit variable then how can bit = 1 not work but bit = 0 does work and bit > 0 also work.
I am really confused. It's on a basic stamp2sx.
I use the prop and the prop2 and never saw anything like this.

I apologize for no formatting code but can't figure out how to insert it now.

' {$STAMP BS2sx}
' {$PBASIC 2.5}

DIRS = %1111100000011111
OUTS = %0000000000000000

delay  VAR  Byte
brake_on  VAR  Bit

delay = 300

Main:

  'Brake on with both signals off
  IF IN7 = 1 THEN
    PAUSE 25
    IF IN7 = 1 & brake_on = 0 THEN
      GOSUB BrakeOn
    ENDIF
  ENDIF


  'Brake off with both signals off
  IF IN7 = 0 THEN
    PAUSE 25
    IF IN7 = 0 & brake_on = 1 THEN
      GOSUB BrakeOff
    ENDIF
  ENDIF



GOTO Main

BrakeOn:
IF brake_on = 0 THEN
  brake_on = 1
  OUTS = %1000000000000001
  PAUSE delay
  OUTS = %1100000000000011
  PAUSE delay
  OUTS = %1110000000000111
  PAUSE delay
  OUTS = %1111000000001111
  PAUSE delay
  OUTS = %1111100000011111
  PAUSE delay
ENDIF
  RETURN



BrakeOff:
  IF brake_on = 1 THEN
    brake_on = 0
    OUTS = %0000000000000000
  ENDIF
  RETURN

Comments

  • Duane DegnDuane Degn Posts: 10,588
    edited 2021-06-06 19:35

    It's been a while since I've used a Basic Stamp but shouldn't the code:

    IF IN7 = 1 & brake_on = 0 THEN

    Be written ?:
    IF IN7 = 1 AND brake_on = 0 THEN

    I think the "&" symbol is a bitwise and instead of a logical and.

  • Thank you. It's been a long time since basic stamp for me also. I have a few laying around and figured I would use one for the lights in a car project.
    You're right I forgot that.

    By the way how do you insert code in this new forum format? It's been a while.
    Thanks

  • @CRST1 said:
    By the way how do you insert code in this new forum format? It's been a while.

    You use this character three times in a row. `
    It's the character under the tilde on my keyboard. You start the code block with three of these characters and end the code block the same way.

    If you quote the reply with the code block, you should be able to see these characters.

  • I've added some debug so you can see whats going on, sequence, load, take pin 7 high, then pin 7 low. Bs2

Sign In or Register to comment.