'{$STAMP BS2} '{$PBASIC 2.5} 'Altimeter 12 Bit scottalt1_2.bs2 'Version 1.2 ' [Declarations] adcBits VAR Word maxalt VAR Word grndlevel VAR Word maindeploy VAR Word delaybits VAR Word x VAR Word grnd DATA Word 4095 log DATA Word 4095 mainde DATA Word 4095 ' [Initialization] CS PIN 0 CLK PIN 1 DataOutput PIN 2 DEBUG CLS ' [Main Routine] PAUSE 3000 ' Warm up delay HIGH CS ' Records initial LOW CS ' ground level LOW CLK ' altitude. PULSOUT CLK, 210 ' SHIFTIN DataOutput,CLK,MSBPOST,[grndlevel\13] ' WRITE grnd, Word grndlevel ' DEBUG "Start Altitude ", DEC4 grndlevel ' DO 'Mach Delay stops HIGH CS 'readings for set amount LOW CS 'of time in PAUSE. LOW CLK ' PULSOUT CLK, 210 ' SHIFTIN DataOutput,CLK,MSBPOST,[grndlevel\13] ' READ grnd, Word delaybits ' LOOP UNTIL grndlevel +12 < delaybits: PAUSE 4000 ' +12 keeps altimter from ' starting until about 100'. DO 'Starts main loop. GOSUB ADC_Data GOSUB display GOSUB record GOSUB deploy LOOP ' [Subroutines] ADC_Data: 'Gathers data from sensor. HIGH CS LOW CS LOW CLK PULSOUT CLK, 210 SHIFTIN DataOutput,CLK,MSBPOST,[adcBits\13] RETURN Display: 'Display on Terminal. DEBUG HOME DEBUG CR, CR, "Altitude: ", DEC4 adcBits RETURN record: 'Record to eeprom. READ log, Word maxalt DEBUG CR, "max altitude", DEC4 maxalt IF adcbits < maxalt THEN WRITE log, Word adcbits PAUSE 100 RETURN deploy: 'Apogee deploy code. IF maxalt + 5 < adcbits THEN HIGH 3 'The (+5) adds delay to deployment. PAUSE 1500 LOW 3 IF maxalt + 5 < adcbits THEN GOTO main RETURN main: 'Main deploy code. 'x = grndlevel - maxalt / 7 maindeploy = grndlevel - 50 DEBUG CR, "main deployment", DEC4 maindeploy WRITE mainde, Word maindeploy IF adcbits > maindeploy THEN HIGH 4 PAUSE 2000 LOW 4 IF adcbits > maindeploy THEN END 'Once main has fired, end. RETURN