是的,今天依然是强迫自己跟着教程学习的一天,在经历一些人生挫折后,变得厌世易感冒是很正常不过的事情,失败与挫折除了让自己的心灵变得更加脆弱外,还要花比普通人更多的时间在运动上,才不会身体虚弱看起来像个容易欺负的废物。但好在只要每天做一点,就能有所进步,那我们开始吧!
材料:

这次,我们使用的是 D1 mini的 A0脚位,并汇入ADC模组。
ADC为 analog to digital的缩写,就是将我们想要获得的资料从类比(大自然)转换成数位(可以量化观测)讯号,在经过程式(推理理解巧思)製成我们想要的结果(雨水感测器)。这次就不附上电路图啰!请支持原版教材,此非业配,只是想要夜晚能睡好觉,标籤会tag教程出版厂商名称。
以下是教程里的程式码:
from machine import ADCimport time# 建立 A0 脚位的 ADC 物件, 并命名为 adcadc = ADC(0)while True: # 用 read() 方法从 A0 号脚位读取 ADC 转换后的数值 # 然后将读到的值用 print() 输出 print(adc.read()) # 暂停 0.05 秒 time.sleep(0.05)
我们会发现,在有水停留在雨水感测板子上时,数值会下降,而数值介于0~1024之间,也就是说,下雨越大,数值越小。但是,身为不爱多一层思考,喜欢简单明了的懒人,这样的结果令人十分不满意。
那我们可以怎么做呢?
其实,也很简单,就是1024扣掉获得数值就可以了。
接着,便是丢上网路,变成监控数据,看起来质感升级的时刻。我们再一次使用Adafruit网站: https://io.adafruit.com
到Dashboard页面点击 并命名事件名称:
点击Creat创建。
点击刚刚创建的名称,进入页面,我们点选 设定
接着,点取Creat new block
我们会看见视图画选择,我选了名为Guage的选项,勾选事件
进入下一阶段,将Max value换成1024值,点选Creat block,就完成了设置。
接下来又是召唤网路连接的时刻,以下是程式码:
from machine import ADCimport time, network, urequests# 连线 Wifi 网路 sta_if = network.WLAN(network.STA_IF)sta_if.active(True)sta_if.connect("你的网路名称", "网路密码")while not sta_if.isconnected(): passprint("Wifi已连上")aio_username = "Adafruit帐号"aio_key = "Adafruit金钥"aio_feed = "rain(创建事件名称)"# 建立 A0 脚位的 ADC 物件, 并命名为 adcadc = ADC(0)while True: # 读取雨水感测器经过 ADC 转换后的数值 value = adc.read() if value < 700: # 依照 Lab09 的测试, 低于 700 表示有下雨 # 雨水越多, ADC 值越低, 所以用最大值 1024 减 ADC 值, # 以便将资料反转为雨水越多, 数值越高 data = {"value": 1024-value} else: # 没下雨的话就送出 0 data = {"value": 0} # 设定 Adafruit IO 上传资料的 API 网址 url = ("https://io.adafruit.com/api/v2/" + aio_username + "/feeds/" + aio_feed + "/data?X-AIO-Key=" + aio_key) # 用 POST 上传 JSON 资料 urequests.post(url, json=data) # 暂停 2 秒, 避免送出太多资料超过 Adafruit IO 免费额度 time.sleep(2)
启用成功后,挤出你的泪水滴在正确的板子上,你就会看见雨量变化了。