由於你現在是 22 個 bit, 並非一個 value, 當你用 print(x, DEC) 是, 每次只是提供一個 bit, 無論用 二進, 十進 還是 十六進, 結果都是 0 或 1.
先把 22 個 bit 合成一個 數 (22 bit 的, 要用 long / unsigned long 才可以), 然後再 print 出來吧.
如果本身接收時是高位在前, 你可以在接收時直接合成, 例如:
long val = 0;
for (..) val = val * 2 + digitalRead(4);
// 不太肯定 << 是否可用於 long, 否則 val = val << 1 + digitalRead(4); 比較易明白一點.
之前, 用 Serial.print(val); 就可以得到 十進的字串了; 如需要的是數值, 就改用 Serial.write(val);
首先非常感谢 super169!
我试过你说的很对,无论用 二進, 十進 還是 十六進, 結果都是 0 或 1.
我是个新手,抱歉,
我用 long / unsigned long 试一试,回头来汇报。
|