私は現在、Arduinoを介してポテンショメーターのデータをWebページに送信する演習を行っています。ノードサーバーなどではなく、Web Serial APIを介してこれを行うことをお勧めします。私のArduinoコードは
void setup() {
Serial.begin(9600);
}
void loop() {
int sensorValue = analogRead(A0);
Serial.println(sensorValue);
delay(1);
}
これにより、シリアル モニタの値が問題なく表示されます。
JavaScriptコードは次のようになります(スクリプト内、htmlに埋め込まれています):
var b = document.getElementById('button');
b.addEventListener('click', async () => {
// Prompt user to select any serial port.
const port = await navigator.serial.requestPort();
await port.open({ baudRate: 9600 });
console.log('working');
while (port.readable) {
const reader = port.readable.getReader();
try {
while (true) {
const { value, done } = await reader.read();
console.log({ value });
if (done) {
break;
}
}
} catch (error) {
console.log('error');
} finally {
reader.releaseLock();
}
}
});
つまり、Arduino がある USB に接続できるボタンがあり、情報ストリームを渡していますが、実際には使用できません。
{value: Uint8Array(4)}
value: Uint8Array(4) [13, 10, 55, 57, buffer: ArrayBuffer(4), byteLength: 4, byteOffset: 0, length: 4]
[[Prototype]]: Object
ポテンショメータの位置の値ではないためです。何らかのマッピングが必要だと思いますが、その方法がわかりません。また、これは現在、Web Serial API のため、Google Chrome でのみ機能しています。
ポテンショメータのデータを正しく受信する方法についてのアイデアはありますか?
ありがとう乾杯