Datasheet
Page 116ยท Applied Robotics with the SumoBot
LOOP
' -----[ Subroutine - Calibrate_Qtis ]----------------------------------------
Calibrate_Qtis:
HIGH qtiPwrLeft ' Turn left QTI on
HIGH qtiSigLeft ' Discharge capacitor
PAUSE 1
RCTIME qtiSigLeft, 1, qtiLeft ' Measure charge time
LOW qtiPwrLeft ' Turn left QTI off
HIGH qtiPwrRight ' Turn right QTI on
HIGH qtiSigRight ' Discharge capacitor
PAUSE 1
RCTIME qtiSigRight, 1, qtiRight ' Measure charge time
GOSUB Read_Line_Sensors ' Get reflection values
qtiThreshold = (qtiLeft + qtiRight) / 2 ' Calculate average
qtiThreshold = qtiThreshold / 4 ' Take 1/4 average
IF qtiThreshold > 220 THEN ' Account for code overhead
qtiThreshold = qtiThreshold - 220
ELSE
qtiThreshold = 0
ENDIF
RETURN
' -----[ Subroutine - Read_Line_Sensors ]-------------------------------------
Read_Line_Sensors:
HIGH qtiPwrLeft ' Turn on QTIs
HIGH qtiPwrRight
HIGH qtiSigLeft ' Push signal voltages to 5 V
HIGH qtiSigRight
PAUSE 1 ' Wait 1 ms for capacitors
INPUT qtiSigLeft ' Start the decays
INPUT qtiSigRight
PULSOUT DummyPin, qtiThreshold ' Wait for threshold time
qtiStateLeft = qtiSigLeft ' Snapshot of QTI signal states
qtiStateRight = qtiSigRight
LOW qtiPwrLeft ' Turn off QTIS
LOW qtiPwrRight
RETURN