' ========================================================================= ' ' File....... People-Counter.BS2 ' Purpose.... ' Author..... ' E-mail..... ' Started.... ' Updated.... 03 FEB 2006 ' ' {$STAMP BS2} ' {$PBASIC 2.5} ' ' ========================================================================= ' -----[ Program Description ]--------------------------------------------- ' -----[ Revision History ]------------------------------------------------ ' -----[ Conditional Definitions ]----------------------------------------- ' -----[ I/O Definitions ]------------------------------------------------- Lcd PIN 0 Speaker PIN 8 IrPin PIN 9 ' -----[ Constants ]------------------------------------------------------- #SELECT $STAMP #CASE BS2, BS2E, BS2PE T1200 CON 813 T2400 CON 396 T4800 CON 188 T9600 CON 84 T19K2 CON 32 TMidi CON 12 T38K4 CON 6 #CASE BS2SX, BS2P T1200 CON 2063 T2400 CON 1021 T4800 CON 500 T9600 CON 240 T19K2 CON 110 TMidi CON 60 T38K4 CON 45 #CASE BS2PX T1200 CON 3313 T2400 CON 1646 T4800 CON 813 T9600 CON 396 T19K2 CON 188 TMidi CON 108 T38K4 CON 84 #ENDSELECT SevenBit CON $2000 Inverted CON $4000 Open CON $8000 Baud CON T9600 ' -----[ Variables ]------------------------------------------------------- sensor VAR Bit running VAR Bit people VAR Word idx VAR Byte ' -----[ EEPROM Data ]----------------------------------------------------- ' -----[ Initialization ]-------------------------------------------------- Reset: running = 1 DEBUG CLS, "People Counter", CR, CR, "Sensor status... ", CR, "People count.... " ' -----[ Program Code ]---------------------------------------------------- Main: DO GOSUB Check_Sensor ' scan the sensor DEBUG CRSRXY, 17, 2, BIN sensor, CRSRXY, 17, 3, DEC people people = people + (sensor * running) ' update count when running DO WHILE (sensor = 1) ' wait for person to exit GOSUB Check_Sensor LOOP LOOP END ' -----[ Subroutines ]----------------------------------------------------- Check_Sensor: sensor = 1 ' assume active FOR idx = 1 TO 20 ' test for 100 ms sensor = sensor & ~IrPin ' ensure sensor stays active PAUSE 5 NEXT RETURN