|
為了運用ACS712低電流檢測器測量電池殘餘電量,
我修改了GP2D12的程式碼,目的是將GP2D12的顯示接收距離值取消轉換,直接顯示其量測電壓值,
但是BASIC STAMP界面顯示數值始終為0伏特,請問以下程式碼該如何修改才能達到其目的,
謝謝。
---以下為未經修改的原始碼---
' -----[ I/O Definitions ]-------------------------------------------------
Adc0831 PIN 0 ' ADC0831 Chip Select (ADC0831.1)
AdcClock PIN 1 ' ADC0831 Clock (ADC0831.7)
AdcData PIN 2 ' ADC0831 Data (ADC0831.6)
' -----[ Constants ]-------------------------------------------------------
span CON 5 ' 5 cm Per Data Point
' -----[ Variables ]-------------------------------------------------------
result VAR Byte ' ADC8031 Result
volts VAR Word ' Volts (0.01 Increments)
cm VAR Byte ' centimeters
index VAR Nib
test1 VAR Byte ' Values For
test2 VAR Byte ' Interpolation
slope VAR Word ' mV/cm between test points
' -----[ EEPROM Data ]-----------------------------------------------------
Vout DATA 251, 179, 139, 114, 97
DATA 85, 76, 67, 62, 57
DATA 53, 50, 48, 46, 43
DATA 0
' -----[ Initialization ]--------------------------------------------------
HIGH Adc0831 ' Disable ADC0831
' -----[ Program Code ]----------------------------------------------------
DO
GOSUB Read_GP2D12 ' Read Sensor Value
GOSUB Calculate_Distance ' Convert Value To cm
DEBUG HOME, "Distance = ", DEC cm, " cm "
PAUSE 100
LOOP
END
' -----[ Subroutines ]-----------------------------------------------------
Read_GP2D12:
volts = 0 ' Reset Sensor Value
FOR index = 0 TO 2 ' Read 3 Times
LOW Adc0831 ' Enable ADC0831
SHIFTIN AdcData, AdcClock, MSBPOST, [result\9] ' Read The Voltage
HIGH Adc0831 ' Disable ADC0831
volts = volts + result ' Add The Values
PAUSE 30
NEXT
volts = volts / 3 ' Average The Readings
RETURN
Calculate_Distance:
FOR index = 0 TO 15 ' Search DATA Table For Value
READ (Vout + index), test2 ' Get Value From DATA Table
IF (test2 <= volts) THEN EXIT ' Found Value
NEXT
SELECT index
CASE 0
cm = 10 ' Set To Minimum Distance
CASE 1 TO 14 ' Calculate Distance
cm = 10 + (5 * index)
IF (test2 < volts) THEN ' Estimate Using Interpolation
READ (Vout + index - 1), test1
slope = (test1 - test2) * 10 / span ' Calculate Slope
cm = cm - ((volts - test2) * 10 / slope)
ENDIF
CASE 15
cm = 80 ' Set To Maximum Distance
ENDSELECT
RETURN |
|