擅长:python、mysql、java
<p>我认为你的if语句中有一个普遍的逻辑问题。
当距离大于或等于您的警报级别时,您希望发送电子邮件。
我认为您的超声波传感器从上到下测量,因此您的if声明应为:</p>
<pre><code>size_water_container = 200 #Just a estimadet value
if dist < (size_water_container - alarm_waterlevel) and waterlevel_before > (size_water_container - alarm_waterlevel):
sendMail()
</code></pre>
<p>如果我错了,那就忽略它:)
但现在谈谈你的问题。
如果永久性地查询距离,则必须在之前永久性地保存水位,但不保存在If语句中。以后再做就行了</p>
<pre><code>alarm_waterlevel = 170
size_water_container = 200
waterlevel_before = 0
while True:
dist = distance()
if dist < (size_water_container - alarm_waterlevel) and waterlevel_before > (size_water_container - alarm_waterlevel):
sendMail()
waterlevel_before = dist
time.sleep(1)
</code></pre>