需要有一個放大電路,可以參考這一篇。
我嘗試將電壓以電路放大3倍~也就是落在0~9.9V 之間。
Devcie端程式碼
// Assign pin9 to a global variable led1 <- hardware.pin9; led2 <- hardware.pin8; // Configure LED pin for DIGITAL_OUTPUT, and set initial state to off led1.configure(PWM_OUT, 1.0 / 500.0, 0.0); led2.configure(PWM_OUT, 1.0 / 500.0, 0.0); led2.write(0); led1.write(1); // Assign a global variable to track current state of LED pin // Function to blink LED function setLED1(value) { server.log("channel 1 "+value); // Set LED pin to new value led1.write(value.tofloat()); } function setLED2(value) { server.log(value); // Set LED pin to new value server.log("channel 2 "+value.tofloat()); led2.write(value.tofloat()); server.log("Test "+value.tofloat()); } // When we get a 'led' message from the agent, call returnFromImp() agent.on("channel1", setLED1); agent.on("channel2", setLED2);
將pin9 和 pin8 設定成PWM 輸出,當Device端收到Agent送來的Channel1以及Channel2
數值時(0~1.0),會輸出0~3.3 V ,透過放大電路變成0~9.9V,用來驅動設備。
例如我收到channel1 值為 0.5時,我會輸出1.6 V,透過放大電路變成4.8V。
請注意,您的設備也許需要大電流驅動時,可能需要外加電流放大之類的電路,
也請不要任意拆解不熟悉的硬體,以免有觸電危險。
本範例備為實驗性質,請確實了解設備再進行應用,燒壞了本人不付責。
跟朋友借了一顆美國神燈來試一下,它的輸入是0~10V控制訊號。
小弟做過一些功課,所以知道它的電路特性,請不要任意模仿,它很貴。
沒有留言:
張貼留言