![]() |
PCDVD數位科技討論區
(https://www.pcdvd.com.tw/index.php)
- 疑難雜症區
(https://www.pcdvd.com.tw/forumdisplay.php?f=34)
- - Arduino 基礎digitalWrite()求教~~
(https://www.pcdvd.com.tw/showthread.php?t=1091456)
|
---|
Arduino 基礎digitalWrite()求教~~
各位Arduino高手大大好~
小弟最近剛入門, 遇到digitalWrite的一些問題, 希望有高手大大可以分享經驗 節省時間其他無關的code不寫, 這邊就列出主要關鍵程式碼~ pinMode(13,OUTPUT); randomSeed(analog(A0)); long result=random(1,6); output(result); 函式output()定義如下: void output(long result) { digitalWrite(13, result & B111);======>主要在這一列 } 假設 result=3 好了 換成二進位是011 然後 011 & B111 不是應該是 3(011) 嗎? 所以不是就變成 digitalWrite(13,3)? 我把digitalWrite(腳位,HIGH(LOW)) 的HIGH/LOW 換成1/0 是也可以正常跑 但來個"3"的數值有點.... 是只要>=1 都被當作HIGH嗎? 翻了很多文件都照不到相關資料, 還是小弟我認知錯誤? 感謝~~ |
抱歉你寫了半天看不太懂意思!
我猜你想做得應該是把一個類比信號讀進來,轉成數位的送出去? digitalWrite數位輸出..不是高(1)就是低(0)?... 所以1以上的都是高 是想要用串流輸出?那就要呼叫串流的東西了? 還是你要用3隻接腳來表示? digitalWrite(11, result & B001); digitalWrite(12, result & B010); digitalWrite(13, result & B100); 類似這樣的寫法,然後輸出接三隻腳? |
引用:
大大果然有經驗 確實是類似這樣的寫法] 用三顆LED燈, 二進為算法來表示骰子點數 我省略了一堆程式碼 只列出我有問題的部分 抱歉 其實我的問題很簡單 digitalWrite(pinNumber, status)中 status 不是HIGH 就是 LOW 要說HIGH=1 LOW=0 我也接受 但是使用( result & B001) 出來的結果是一個大於等於1的數值 假設是4 這跟 HIGH是一樣的效果嗎?(因為>=1) 小弟比較龜毛 有時想法都會鑽牛角尖~~抱歉 |
引用:
DigitalWrite在API手冊的naming就是要你填HIGH或LOW,填以外的值都是不好的用法。 寫這樣Compile會過是因為Compiler的設計者想降低學習者的門檻,所以會盡可能去寫轉換規則滿足這種情況。 我猜設計者可能會在 digitalwrite 額外實作 true 、非0或大於0自動轉換成HIGH; 而0或false就自動轉換成LOW,你可以試試看。 但這不是好用法,哪天Arduino Sketcher更版決定拿掉這樣的自動轉換規則,你的code在新版一compile就壞了。 |
所有的時間均為GMT +8。 現在的時間是07:51 PM. |
vBulletin Version 3.0.1
powered_by_vbulletin 2025。