node-red-nodes/hardware/sensehatsim/examples/Compass.json

54 lines
2.6 KiB
JSON

[
{
"id": "104a54e7.6656cb",
"type": "rpi-sensehatsim out",
"z": "7756eff1.08d0a",
"name": "",
"x": 470,
"y": 300,
"wires": []
},
{
"id": "a3786fbb.b3ff9",
"type": "rpi-sensehatsim in",
"z": "7756eff1.08d0a",
"name": "",
"motion": true,
"env": false,
"stick": false,
"x": 120,
"y": 300,
"wires": [
[
"931798d.9640d68"
]
]
},
{
"id": "931798d.9640d68",
"type": "function",
"z": "7756eff1.08d0a",
"name": "Compass",
"func": "// Based on the Compass example provided by\n// the Sense HAT python library\n// https://github.com/RPi-Distro/python-sense-hat/tree/master/examples\n\nvar led_loop = [4, 5, 6, 7, 15, 23, 31, 39, 47, 55, 63, 62, 61, 60, 59, 58, 57, 56, 48, 40, 32, 24, 16, 8, 0, 1, 2, 3];\nvar led_degree_ratio = led_loop.length / 360.0;\nvar dir = (360 - msg.payload.compass)%360;\n\nfunction getXY(dir) {\n var led_index = Math.floor(led_degree_ratio * (dir%360));\n var offset = led_loop[led_index];\n return [offset % 8,Math.floor(offset / 8)];\n}\n\nvar previous = context.get('previous');\nmsg.payload = '';\n\nvar position = getXY(dir);\nif (!previous || position[0] != previous[0][0] || position[1] != previous[0][1]) {\n if (previous) {\n msg.payload = previous[0][0]+\",\"+previous[0][1]+\",off,\"+\n previous[1][0]+\",\"+previous[1][1]+\",off,\";\n } else {\n msg.payload = \"*,*,off,\";\n }\n previous = [\n position,\n getXY(dir+180)\n ];\n msg.payload += previous[0][0]+\",\"+previous[0][1]+\",red,\"+\n previous[1][0]+\",\"+previous[1][1]+\",white\"\n \n context.set('previous',previous);\n return msg;\n}\nreturn null;\n\n",
"outputs": 1,
"noerr": 0,
"x": 280,
"y": 300,
"wires": [
[
"104a54e7.6656cb"
]
]
},
{
"id": "434680a8.c2e54",
"type": "comment",
"z": "7756eff1.08d0a",
"name": "Simple compass for Sense Hat",
"info": "Generates a compass, showing north (red) and south (white).\n\nBased on the python example provided with the Sense Hat: https://github.com/RPi-Distro/python-sense-hat/tree/master/examples\n\nThe accuracy of the compass will depend on callibrating the Sense Hat\ninternal compass. Search the Sense Hat forums for a guide on how to\ndo this.\n",
"x": 190,
"y": 260,
"wires": []
}
]