[ { "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": [] } ]