'{$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 abits VAR Word bbits VAR Word cbits VAR Word dbits VAR Word ebits VAR Word fbits VAR Word averbits 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 PAUSE 3000 FREQOUT 5, 1000, 2000 PAUSE 1000 FREQOUT 5, 1000, 2000 ' 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 FREQOUT 5, 500, 5000 '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 +30 < delaybits: PAUSE 6000 ' +30 keeps altimter from ' starting until about 300'. DO HIGH CS LOW CS LOW CLK PULSOUT CLK, 210 SHIFTIN DataOutput,CLK,MSBPOST,[adcBits\13] abits = adcbits HIGH CS LOW CS LOW CLK PULSOUT CLK, 210 SHIFTIN DataOutput,CLK,MSBPOST,[adcBits\13] bbits = adcbits HIGH CS LOW CS LOW CLK PULSOUT CLK, 210 SHIFTIN DataOutput,CLK,MSBPOST,[adcBits\13] cbits = adcbits HIGH CS LOW CS LOW CLK PULSOUT CLK, 210 SHIFTIN DataOutput,CLK,MSBPOST,[adcBits\13] dbits = adcbits HIGH CS LOW CS LOW CLK PULSOUT CLK, 210 SHIFTIN DataOutput,CLK,MSBPOST,[adcBits\13] ebits = adcbits HIGH CS LOW CS LOW CLK PULSOUT CLK, 210 SHIFTIN DataOutput,CLK,MSBPOST,[adcBits\13] fbits = adcbits averbits = abits + bbits + cbits + dbits + ebits + fbits / 6 READ log, Word maxalt 'DEBUG CR, "max altitude", DEC4 maxalt IF averbits < maxalt THEN WRITE log, Word averbits FREQOUT 5, 500, 1000 PAUSE 100 IF maxalt + 4 < averbits THEN HIGH 3 'The (+4) adds delay to deployment. LOOP UNTIL maxalt + 4 < averbits : GOTO main main: DO FREQOUT 5, 500, 4000 HIGH CS LOW CS LOW CLK PULSOUT CLK, 210 SHIFTIN DataOutput,CLK,MSBPOST,[adcBits\13] READ 0, Word grndlevel maindeploy = grndlevel - 75 DEBUG CR, "main deployment", DEC4 maindeploy WRITE mainde, Word maindeploy LOOP UNTIL adcbits > maindeploy: HIGH 4 END