'{$STAMP BS2} '{$PBASIC 2.5} 'Altimeter 12 Bit scottalt2_0.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 ' Warm up delay FREQOUT 5, 1000, 2000 ' First Beep to indicate start up PAUSE 1000 ' FREQOUT 5, 1000, 2000 ' Second Beep to incicate start up HIGH CS ' LOW CS ' LOW CLK ' PULSOUT CLK, 210 ' Records initial SHIFTIN DataOutput,CLK,MSBPOST,[grndlevel\13] ' ground level WRITE grnd, Word grndlevel ' altitude. DEBUG "Start Altitude ", DEC4 grndlevel ' DO FREQOUT 5, 500, 5000 ' Tone while sampling for lift off detection HIGH CS ' LOW CS ' LOW CLK ' PULSOUT CLK, 210 ' SHIFTIN DataOutput,CLK,MSBPOST,[grndlevel\13] ' READ grnd, Word delaybits ' LOOP UNTIL grndlevel +30 < delaybits: PAUSE 3000 ' Loop for lift off detection ' Pause 3 seconds before sustainer ignition HIGH 6 ' Pin six high to light sustainer motor PAUSE 6000 ' Mach Delay Pause of 6 seconds LOW 6 ' Return pin 6 low DO ' This loop takes 6 samples HIGH CS ' and averages them. 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 ' Creates a variable called averbits. READ log, Word maxalt IF averbits < maxalt THEN WRITE log, Word averbits ' Writes max altitude to eeprom. 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