我正在做一个项目,用 Raspberry Pi 控制一辆遥控车,并在 WeiOPi 的帮助下完成了它。
现在我想在上面添加一个超声波测距仪(我有 HC-SR04)。我在网上搜索了一下,没有找到太多信息,我有一个问题。如何将 python 代码与 java-script 和 html 结合起来在网页上打印距离。
在此先感谢,任何帮助将不胜感激。
问候, HM
PS,我只有 13 岁,是编程新手。
编辑:
未完成的代码:
蟒蛇代码是:
import webiopi
import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BCM)
TRIG = 23
ECHO = 24
print "Distance Measurement In Progress"
GPIO.setup(TRIG,GPIO.OUT)
GPIO.setup(ECHO,GPIO.IN)
GPIO.output(TRIG, False)
print "Waiting For Sensor To Settle"
time.sleep(2)
GPIO.output(TRIG, True)
time.sleep(0.00001)
GPIO.output(TRIG, False)
while GPIO.input(ECHO)==0:
pulse_start = time.time()
while GPIO.input(ECHO)==1:
pulse_end = time.time()
pulse_duration = pulse_end - pulse_start
distance = pulse_duration * 17150
# _____________________________________________________________________
# I want to print the following string (distance) to print on html page
# ---------------------------------------------------------------------
@webiopi.macro
def getSensor(channel):
percent = round(distance, 2)
return "%.2f%%" % percent
#Instantiate the server on the port 8000, it starts immediately in its own thread
server = webiopi.Server(port=8000)
# Run our loop until CTRL-C is pressed or SIGTERM received
webiopi.runLoop()
# -------------------------------------------------- #
# Termination part #
# -------------------------------------------------- #
# Stop the server
server.stop()
html代码:
<script type="text/javascript" src="/webiopi.js"></script>
<script type="text/javascript">
webiopi().ready(init);
// defines function passed previously to webiopi().ready()
function init() {
// automatically refresh UI each seconds
setInterval(updateUI, 1000);
}
// function called through setInterval
function updateUI() {
webiopi().callMacro("getSensor", 0, sensorCallback);
webiopi().callMacro("getSensor", 1, sensorCallback);
webiopi().callMacro("getSensor", 2, sensorCallback);
webiopi().callMacro("getSensor", 3, sensorCallback);
}
// callback function used to display sensor data
function sensorCallback(macroName, channel, data) {
// use jQuery to change spans content
$("#sensor"+channel).text(data);
}
</script>
</head>
<body>
<div align="center">
<div>Sensor 0: <span id="sensor0"></span></div>
<div>Sensor 1: <span id="sensor1"></span></div>
<div>Sensor 2: <span id="sensor2"></span></div>
<div>Sensor 3: <span id="sensor3"></span></div>
</div>
</body>
</html>