Skip to content

Instantly share code, notes, and snippets.

@kuetsuhara
Last active April 1, 2020 13:39
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save kuetsuhara/a68390ef80b1f03ecebceaa796d40ee5 to your computer and use it in GitHub Desktop.
Save kuetsuhara/a68390ef80b1f03ecebceaa796d40ee5 to your computer and use it in GitHub Desktop.
さくっと“ガジェット”が作れる!「micro:bit」と「Node-RED」で、超簡単Web Bluetooth通信
<html>
<head>
<title>micro:bit</title>
<script
type="text/javascript"
src="/microbit.js"
></script>
</head>
<body>
<button id="find">find</button>
<input type="text" id="textbox" /><button id="send_text">send</button>
<div id="log" style="white-space: pre" />
<script>
const logEl = document.getElementById("log");
const log = message =>
(logEl.innerHTML = `${message}\n${logEl.innerHTML}`);
const logJson = message => log(JSON.stringify(message, null, 2));
const eventHandler = function(event) {
log(`${event.type}: ${JSON.stringify(event.detail, null, 2)}`);
console.log(event.type + ":" + event.detail);
const request = new XMLHttpRequest();
let url = "http://localhost:1880";
switch (event.type) {
case "buttonastatechanged":
url += "/button?button=A" + "&action=" + event.detail;
break;
case "buttonbstatechanged":
url += "/button?button=B" + "&action=" + event.detail;
break;
}
request.open("GET", url, true);
// レスポンスが返ってきた時の処理を記述
request.onload = function() {
// レスポンスが返ってきた時の処理
console.log(request.status);
};
// リクエストをURLに送信
request.send();
};
let services;
document.getElementById("find").onclick = async () => {
const device = await microbit.requestMicrobit(
window.navigator.bluetooth
);
if (device) {
// const services = await microbit.getServices(device);
services = await microbit.getServices(device);
if (services.deviceInformationService) {
logJson(
await services.deviceInformationService.readDeviceInformation()
);
}
if (services.uartService) {
services.uartService.addEventListener("receiveText", eventHandler);
await services.uartService.send(
new Uint8Array([104, 101, 108, 108, 111, 58])
); // hello:
}
if (services.ledService) {
await services.ledService.setScrollingDelay(50);
log(await services.ledService.getScrollingDelay());
await services.ledService.writeText("Hello Web BLE");
}
if (services.buttonService) {
services.buttonService.addEventListener(
"buttonastatechanged",
eventHandler
);
services.buttonService.addEventListener(
"buttonbstatechanged",
eventHandler
);
log(await services.buttonService.readButtonAState());
}
}
};
document.getElementById("send_text").onclick = async () => {
if (services.ledService) {
await services.ledService.setScrollingDelay(50);
log(await services.ledService.getScrollingDelay());
let input_message = document.getElementById("textbox").value;
await services.ledService.writeText(input_message);
}
};
</script>
</body>
</html>
<!-- from https://github.com/thegecko/microbit-web-bluetooth -->
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment