Skip to content

Instantly share code, notes, and snippets.

@monteslu
Created March 30, 2015 19:16
Show Gist options
  • Save monteslu/f8c7a94454f79d3cfdc5 to your computer and use it in GitHub Desktop.
Save monteslu/f8c7a94454f79d3cfdc5 to your computer and use it in GitHub Desktop.
Read an i2c-based mpu6050 accelerometer on a raspberry pi

Read accelerometer, gyro, and temperature data

One inject writes data to the i2c address and register of the mpu6050 device to configure it for reading.

The top inject button then can request 14 bytes from the same i2c address and formats the response data for display to the debugger.

[{"id":"12867341.ed798d","type":"nodebot","name":"","username":"","password":"","boardType":"raspi-io","serialportName":"","connectionType":"local","mqttServer":"","pubTopic":"","subTopic":"","tcpHost":"","tcpPort":"","sparkId":"","sparkToken":"","beanId":"","impId":""},{"id":"a2a45691.5d5ba8","type":"gpio out","name":"","state":"I2C_READ_REQUEST","pin":"","i2cDelay":"0","i2cAddress":"104","i2cRegister":"59","outputs":1,"board":"12867341.ed798d","x":283,"y":694,"z":"fb26e0ad.04d92","wires":[["7058226d.8fa7dc"]]},{"id":"ed1b31d8.12e4d","type":"debug","name":"","active":true,"console":"false","complete":"false","x":500,"y":622,"z":"fb26e0ad.04d92","wires":[]},{"id":"7058226d.8fa7dc","type":"function","name":"process i2c","func":"var data = msg.payload;\nvar int16 = function(high, low) {\n var result = (high << 8) | low;\n // if highest bit is on, it is negative\n return result >> 15 ? ((result ^ 0xFFFF) + 1) * -1 : result;\n};\n\n\nmsg.payload = {\n accelerometer : {\n x: int16(data[0], data[1]),\n y: int16(data[2], data[3]),\n z: int16(data[4], data[5])\n },\n temperature : int16(data[6], data[7]),\n gyro : {\n x: int16(data[8], data[9]),\n y: int16(data[10], data[11]),\n z: int16(data[12], data[13])\n }\n};\n\nreturn msg;","outputs":1,"valid":true,"x":315,"y":548,"z":"fb26e0ad.04d92","wires":[["ed1b31d8.12e4d"]]},{"id":"970b8ad3.68f478","type":"inject","name":"","topic":"","payload":"14","payloadType":"string","repeat":"","crontab":"","once":false,"x":119,"y":552,"z":"fb26e0ad.04d92","wires":[["a2a45691.5d5ba8"]]},{"id":"7a2b3f6.f85d4c","type":"gpio out","name":"","state":"I2C_WRITE_REQUEST","pin":"","i2cDelay":"0","i2cAddress":"104","i2cRegister":"","outputs":0,"board":"12867341.ed798d","x":275,"y":790,"z":"fb26e0ad.04d92","wires":[]},{"id":"bd2a7e35.42d58","type":"inject","name":"","topic":"","payload":"","payloadType":"none","repeat":"","crontab":"","once":false,"x":90,"y":633,"z":"fb26e0ad.04d92","wires":[["c625f941.39da08"]]},{"id":"c625f941.39da08","type":"function","name":"i2c bytes","func":"msg.payload = [0x6B, 0x00];\nreturn msg;","outputs":1,"valid":true,"x":139,"y":709,"z":"fb26e0ad.04d92","wires":[["7a2b3f6.f85d4c"]]}]
@fabikm
Copy link

fabikm commented Mar 8, 2021

Dear,

Does anybody know where should be the problem with the error message:

Flows stopped due to missing node types.

nodebot

Thank you

@questrov
Copy link

same here, nodebot missing which seems to be the i2c IO, see pic
i2c_IO

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment