was using a dual blaster code from two halloween's ago and apparently it does not work right the way i need it to work.
I am trying to get the prop 1 to do three things: 1) turns a motor for about 30 seconds and turns off 2) then air is blasted onto the people for 10 seconds 3) have a pop up from a barrel to stay up for about 20 seconds. All of these of course is triggered by pir. Am I putting too much on the prop 1 in this or can this be done? I am just a mainstay on the prop 1 and really like it alot. Can someone help me or should i use different controllers for each event?
So you want one PIR to trigger three events, one after the other? This should work fine with a single Prop-1.
Can you post the code you're currently using?
Sorry it took so long to reply but here it is.
' =========================================================================
'
' File...... Dual_Blaster.BS1
' Purpose...
' Author....
' E-mail....
' Started... 29 OCT 2009
' Updated... 29 OCT 2009
'
' {$STAMP BS1}
' {$PBASIC 1.0}
'
' =========================================================================
' -----[ Program Description ]---------------------------------------------
'
' Trigger2 :: Parallax-compatible PIR or N.O. button (mat switch, etc.)
' -- connect N.O. button between P7.W and P7.R
'
' Trigger1 :: Parallax-compatible PIR or N.O. button (mat switch, etc.)
' -- connect N.O. button between P6.W and P6.R
' -----[ Revision History ]------------------------------------------------
' -----[ I/O Definitions ]-------------------------------------------------
SYMBOL Trigger2 = PIN7 ' SETUP = DN
SYMBOL Trigger1 = PIN6 ' SETUP = DN
SYMBOL Valve2 = PIN1
SYMBOL Valve1 = PIN0
' -----[ Constants ]-------------------------------------------------------
SYMBOL IsOn = 1 ' for active-high in/out
SYMBOL IsOff = 0
SYMBOL Yes = 1
SYMBOL No = 0
' -----[ Variables ]-------------------------------------------------------
SYMBOL triggers = B0
SYMBOL tr2 = BIT7
SYMBOL tr1 = BIT6
SYMBOL idx = B2
SYMBOL timer2 = W3
SYMBOL timer1 = W4
SYMBOL lottery = W5
' -----[ Initialization ]--------------------------------------------------
Reset:
PINS = %00000000 ' clear all
DIRS = %00000011 ' set output pins
' -----[ Program Code ]----------------------------------------------------
Main:
triggers = %11000000 ' arm T1 and T2 for scan
FOR idx = 1 TO 90 ' 450ms scan (90 x 5ms)
RANDOM lottery
PAUSE 5
triggers = triggers & PINS ' scan inputs
NEXT
Check_Timer1:
IF timer1 = 0 THEN Check_Trigger1 ' timer running?
timer1 = timer1 - 1 ' yes, decrement
IF timer1 > 0 THEN Check_Timer2 ' done?
IF Valve1 = IsOff THEN Check_Timer2 ' yes, check valve
Valve1 = IsOff ' turn off (if running)
RANDOM lottery
timer1 = lottery // 51 + 50 ' set random hold-off
GOTO Check_Timer2
Check_Trigger1:
IF tr1 = No THEN Check_Timer2 ' skip if no trigger
Valve1 = IsOn ' activate valve
RANDOM lottery
timer1 = lottery // 11 + 10 ' set random burst
Check_Timer2:
IF timer2 = 0 THEN Check_Trigger2 ' timer running?
timer2 = timer2 - 1 ' yes, decrement
IF timer2 > 0 THEN Main ' done?
IF Valve2 = IsOff THEN Main ' yes, check valve
Valve2 = IsOff ' turn off (if running)
RANDOM lottery
timer2 = lottery // 51 + 50 ' set random hold-off
GOTO Main
Check_Trigger2:
IF tr2 = No THEN Main ' skip if no trigger
Valve2 = IsOn ' activate valve
RANDOM lottery
timer2 = lottery // 11 + 10 ' set random burst
GOTO Main
' -----[ Subroutines ]-----------------------------------------------------
' -------------------------------------------------------------------------
' -----[ User Data ]-------------------------------------------------------
Thinking that I might use this for what I want it just didn't want to do what I "would" like for it to do. Any help in this matter would be great. Just finishing up my maze in my garage while I was trying to figure this out! Thanks "way in advance"!!
If there is too much coding for the one PIR to control these events, I do have at least three PIR to accomplish this separately. If that's possible and easier.
I think I have what you asked for. The code below is adapted from JonnyMac's examples here on the forum. I've tested it with a PIR and the Prop-1 Trainer.
The PIR will set off the three props, one after the other. Then there is a 20 second reset time before they can be triggered again. If you don't have this reset, then the props will go off again as soon as the PIR sees movement.
Connect the PIR to the header on Pin 6, and move the Setup jumper so it's in the DN position. Then connect your props to Pins 0 - 2.
If you want to change the time each prop runs, look in the Constants section for the values for "MotorRun" and so on.
' =========================================================================
'
' File...... PIR and 3 Props
' Purpose...
' Author....
' E-mail....
' Started...
' Updated... 10 OCT 2018
'
' {$STAMP BS1}
' {$PBASIC 1.0}
'
' =========================================================================
' -----[ Program Description ]---------------------------------------------
' From eboomer, EFX-Tek forum
' triggered by pir:
' 1) turns on a motor for about 30 seconds and turns off
' 2) Then air is blasted onto the people for 10 seconds
' 3) have a pop up from a barrel to stay up for about 20 seconds.
' -----[ Revision History ]------------------------------------------------
' -----[ I/O Definitions ]-------------------------------------------------
SYMBOL Sio = 7 ' SETUP = UP; no ULN
SYMBOL Trigger = PIN6 ' SETUP = DN
SYMBOL Motor = PIN2 ' use P2/OUT2
SYMBOL Air = PIN1 ' use P1/OUT1
SYMBOL Barrel = PIN0 ' use P0/OUT0
' -----[ Constants ]-------------------------------------------------------
SYMBOL Yes = 1
SYMBOL No = 0
SYMBOL TrOn = 1 ' active-high trigger
SYMBOL TrOff = 0
SYMBOL IsOn = 1 ' active-high I/O
SYMBOL IsOff = 0
SYMBOL Baud = OT2400
SYMBOL MotorRun = 30000 ' Change these for delay times
SYMBOL AirRun = 10000
SYMBOL BarrelUp = 20000
' -----[ Variables ]-------------------------------------------------------
SYMBOL timer = B2 ' for debounce loop
' -----[ Initialization ]--------------------------------------------------
Power_Up:
Reset:
PAUSE 20000 ' PIR warm-up time/reset after trigger
PINS = %00000000 ' all off
DIRS = %00000111 ' P2..P0 are outputs
' -----[ Program Code ]----------------------------------------------------
Main:
timer = 0 ' reset debounce timer
Check_Trigger:
PAUSE 5 ' scan delay
IF Trigger = TrOff THEN Main ' check trigger input
timer = timer + 5 ' update timer
IF timer < 100 THEN Check_Trigger ' check timer
Motor_Spin:
Motor = IsOn
PAUSE MotorRun
Motor = IsOff
Air_Blast:
Air = IsOn
PAUSE AirRun
Air = IsOff
Barrel_Popup:
Barrel = IsOn
PAUSE BarrelUp
Barrel = IsOff
GOTO Reset
' -----[ Subroutines ]-----------------------------------------------------
' -------------------------------------------------------------------------
' -------------------------------------------------------------------------
' -------------------------------------------------------------------------
' -----[ User Data ]-------------------------------------------------------
You are definitely a life saver! I was letting off some nervous energy and finishing up my maze in my garage! I am going to program this early in the morning so I can rest assured this is done! Again thanks!