minAngleLight con 600 ;pulse low (Mystery servo) which flips the light off
maxAngleLight con 2600 'pulse low (Mystery servo) which flips the light on
minAngleHeater con 600 'pulse low (Hitec servo) to adjust the heater off
maxAngleHeater con 2400 'pulse high (Hitec servo) to adjust the heater on
servoRefreshPeriod con 20 ;20 milliseconds refresh rate on the servos
AlarmState VAR BYTE ; stores the raw voltage value read from the speaker pin on the alarm
TempByte VAR BYTE ; used in the program for temporary storage of data
AlarmOn VAR BIT ; true if alarm is on, else false
LightOn VAR BIT ; true if light switch has been flipped on, else false
HeaterOn VAR BIT ; true if heater has been turned on, else false
AlarmTimer VAR WORD ; keeps track of amount of seconds elapsed since the alarm went off
AlarmThreshold VAR BYTE ; amount of time in minutes to wait between when the alarm goes off and when the speaker should be kicked on
SpeakerPin CON p4 ; pin connected to the relay which flips on or off the speaker using the relay
AlarmPin CON p6 ; pin connected to the other end of the relay and to the +v on the alarm speaker
LightPin CON p12 ; connected to the light servo
HeaterPin CON p7 ; connected to the heater servo
Initialize:
AlarmState = 0
AlarmTimer = 0
AlarmOn = 1
AlarmThreshold = 15; default time between when the alarm goes off and the speaker kicks on to 15 minutes
LightOn = 0;
HeaterOn = 0;
Low SpeakerPin;
Low LightPin
Low HeaterPin;
main:
GoSub ReadAlarmState; read in the current state of the alarm and set whether alarm is on/off
if(AlarmOn) then
GoSub ProcessAlarmOn
else
GoSub ProcessAlarmOff
endif
Pause 1000; pause for 1 second for timing purposes
goto main
;function turns the light and heater on as well as increments the
;alarm timer, which tells how long the alarm has been on for in seconds
;if the gap between when the alarm was turn on and now is greater than the
;specified alarm threshold, it kicks on the speaker, else keeps it turned off
ProcessAlarmOn
GoSub TurnLightOn
GoSub TurnHeaterOn
AlarmTimer = AlarmTimer + 1 ; this is roughly in seconds due to the "Pause 1000" in main
;if elapsed time since alarm time has gone off has exceeded, turn the speaker on, else off
if(AlarmTimer > (AlarmThreshold*60)) then
GoSub TurnOnSpeaker
else
GoSub TurnOffSpeaker
endif
return
;function turns the light, heater, and speaker off.
;it also resets the alarm timer, which keeps track of how
;long the alarm has been going off for
ProcessAlarmOff
GoSub TurnLightOff
GoSub TurnHeaterOff
GoSub TurnOffSpeaker
AlarmTimer = 0
return
;function flips the relay "on", which in turn turns on the speaker
TurnOnSpeaker
High SpeakerPin
return
;function flips the relay "off", which in turn turns off the speaker
TurnOffSpeaker
Low SpeakerPin
return
;function performs the necessary actions to flip on the light switch
TurnLightOn
;if the light hasn't already been switched on, then pulse the servo to flip the switch on
if(LightOn = 0) then
for tempByte = 0 to 50
'pulse the pin to turn on light
PulsOut LightPin, maxAngleLight;
Pause servoRefreshPeriod;
next
;set the light to on
LightOn = 1
endif
return
;function performs the necessary actions to flip the light switch off
TurnLightOff
;if the light is on then pulse the servo to switch it off
if(LightOn = 1) then
for tempByte = 0 to 50
'pulse the pin to turn on light
PulsOut LightPin, minAngleLight
Pause servoRefreshPeriod;
next
;set the light to off
LightOn = 0
endif
return
;function performs the necessary actions to turn the heater on
TurnHeaterOn
;if the heater is currently off then pulse the survo to turn it on
if(HeaterOn = 0) then
for tempByte = 0 to 50
'pulse the pin to turn on heater
PulsOut HeaterPin, maxAngleHeater
Pause servoRefreshPeriod;
next
;set the heater as on
HeaterOn = 1
endif
return
;function performs the necessary action to turn the heater off
TurnHeaterOff
;if the heater is on pulse the survo to turn it off
if(HeaterOn = 1) then
for tempByte = 0 to 50
'pulse the pin to turn off heater
PulsOut HeaterPin, minAngleHeater
Pause servoRefreshPeriod;
next
;set the heater as off
HeaterOn = 0
endif
return
;function reads the current state of the alarm (on/off) as well as sets the AlarmOn variable true or false appropriatley
ReadAlarmState
ADIN AlarmPin, AlarmState; reads the voltage on the speaker +v wire
;if reading some voltage on the speaker line, set the alarm on, else sample further
if(AlarmState > 0) then
AlarmOn = 1
else
;sample for 2 seconds to see if the alarm is on
;this is necessary as when the alarm is on it beeps on and off about once a second
;so need to sample for a couple seconds to just in case the above read on the off part of the beeping
for tempByte = 0 to 20
Pause 100
ADIN AlarmPin, AlarmState; read the voltage on the speaker +v wire
;if voltage read, the alarm must be on so set as such and exit the for loop, else set as off
if(AlarmState > 0) then
AlarmOn = 1
return;
else
AlarmOn = 0;
endif
next
endif
return
"Can I get any kind of money with this letter, father?" Frank inquired, "or must I take it in pounds sterling? That would be very inconvenient sometimes, as I would have to go around and sell my pounds and buy the money of the country." Who lidee best he most catch tumble down.' "Did you speak to the Spanish woman?" he asked. The seaplane sheered to one side in a violent slip as her pilot evidently tried to bank and kick rudder and lost control. Dick pounded after the woman. Of course, there were not many explorers on the new planet, and it was a hard job for them to dig out the metal the Confederation needed. In the villages, the distinctions of dress created by law were pretty generally observed, but in the towns that law was as generally evaded: furs, and colours, and embroidery were worn by those who had no right to them, except the single one of purchase. In some instances, the law would take cognizance of the violation of its prohibitions; a fine would be imposed, but even this could not check the vain assumption;¡ªthere was no law to prevent people buying, and those who could purchase forbidden finery, would, in despite of penalties, contrive some means of wearing it. But to return to our foreign merchant. HoME¾©Ïãjulia¾¯Ô±
ENTER NUMBET 0016gamebf.com.cn
hgchain.com.cn
l3tbb.net.cn
www.nyftmm.com.cn
www.svns.com.cn
ssyukd.com.cn
njmlmi.com.cn
www.two-l.net.cn
rryqo.com.cn
teasm.com.cn