const char *fmt=
"/sys/%s/%s/thing/event/property/post"
;
int example_publish
(void
*handle)
ret =
read
(fd, data,
sizeof
(data));
if(ret <0)
close
(fd)
;/* collect data and calculate the voltage */
get_value =
atof
(data)
; voltage = vref *
(get_value /
4096);
sprintf
(payload,
",\"method\":\"thing.event.property.post\"}"
,voltage)
;//這裡的currentvoltage就是之前新增標準功能的key
topic_len =
strlen
(fmt)
+strlen
(demo_product_key)+
strlen
(demo_device_name)+
1;topic =
hal_malloc
(topic_len);if
(topic ==
null
)memset
(topic,
0, topic_len)
;hal_snprintf
(topic, topic_len, fmt,
demo_product_key
,demo_device_name);
res =
iot_mqtt_publish_******(0
, topic,
iotx_mqtt_qos0
, payload,
strlen
(payload));
if(res <0)
hal_free
(topic)
;hal_free
(payload)
;hal_free
(data)
;return0;
}
可以看到列印出的電壓值和裝置執行狀態
ADC 與實際電壓值的關係
1.首先確定adc用幾位表示,最大數值是多少。比如乙個8位的adc,最大值是0xff,就是255。2.然後確定最大值時對應的參考電壓值。一般而言最大值對應3.3v。這個你需要看這個晶元adc模組的說明。暫存器中有對於輸入訊號參考電壓的設定。3.要計算電壓,就把你的adc數值除以剛才確定的最大數值再乘...
交流電壓有效值怎麼求
按照有效值的嚴格定義,常見的方法有 1 通過模擬電路實現,被測訊號經過乘法器 平方 積分器 平均 開方運算電路三個環節計算。2 數字訊號處理方法,也可通過高速取樣後將模擬訊號變為離散時間訊號 數碼訊號 再通過數值運算的方式實現。3 採用專用的真有效值ic晶元,如ad536 ad637 ltc1968...
通過PCF8591控制電壓值(DA轉換)
1 pcf8591 是乙個單片整合 單獨供電 8 bit cmos資料獲取器件。2 ain0 ain1 ain2 ain3為模擬輸入端 3 aout為模擬輸出端 4 ext為低電平時使用內部時鐘,為高電平時使用外部時鐘 5 a0 a1 a2為位址引腳 6 ocs vref agnd照著接相應電平就行...