{"id":18744632,"url":"https://github.com/wollewald/icm20948_we","last_synced_at":"2025-04-12T21:32:38.163Z","repository":{"id":43072847,"uuid":"367105489","full_name":"wollewald/ICM20948_WE","owner":"wollewald","description":"An Arduino library for the ICM20948 9-axis accelerometer, gyroscope and magnetometer. It contains many example sketches with lots of comments to make it easy to use.","archived":false,"fork":false,"pushed_at":"2025-01-16T18:11:59.000Z","size":1816,"stargazers_count":47,"open_issues_count":4,"forks_count":7,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-03-26T15:54:28.093Z","etag":null,"topics":["accelerometer","arduino","gyroscope","i2c","icm-20948","icm20948","imu","magnetometer","spi"],"latest_commit_sha":null,"homepage":"https://wolles-elektronikkiste.de/en/icm-20948-9-axis-sensor-part-i","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/wollewald.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-05-13T16:15:04.000Z","updated_at":"2025-03-14T03:33:11.000Z","dependencies_parsed_at":"2024-09-14T20:10:03.862Z","dependency_job_id":"161e199d-a95e-4499-bf26-3fd3acb5e8cd","html_url":"https://github.com/wollewald/ICM20948_WE","commit_stats":null,"previous_names":[],"tags_count":23,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wollewald%2FICM20948_WE","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wollewald%2FICM20948_WE/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wollewald%2FICM20948_WE/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wollewald%2FICM20948_WE/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/wollewald","download_url":"https://codeload.github.com/wollewald/ICM20948_WE/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248636222,"owners_count":21137401,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["accelerometer","arduino","gyroscope","i2c","icm-20948","icm20948","imu","magnetometer","spi"],"created_at":"2024-11-07T16:15:31.102Z","updated_at":"2025-04-12T21:32:38.150Z","avatar_url":"https://github.com/wollewald.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ICM20948_WE\nAn Arduino library for the ICM-20948 9-axis accelerometer, gyroscope and magnetometer. It contains many example sketches with lots of comments to make it easy to use. It works with I2C and SPI.\n\nI have not implemented DMP features and most probably I won't do that in future. That would exceed the time I can invest. \n\nYou can find a documentation in my blog:\n\nhttps://wolles-elektronikkiste.de/icm-20948-9-achsensensor-teil-i (German)\n\nhttps://wolles-elektronikkiste.de/en/icm-20948-9-axis-sensor-part-i (English)\n\nIf you find bugs please inform me. If you like the library it would be great if you could give it a star.\n\nIf you are not familiar with the ICM20948 I recommend to work through the example sketches.\n\nWhen you wire the ICM-20948 you need to consider that VDD is 3.3 volts, but VDDIO is only 1.71-1.95 volts (see data sheet). For a 5V MCU board, I used a level shifter and additional resistors to GND which form a voltage divider together with the internal resistors of the level shifter.\n\n\u003ch3\u003eImportant note on release 1.2.2\u003c/h3\u003e\nVersion 1.2.2 is not fully compatible with former versions. Many functions like getGValues() returned xyzFloat structures. To be exact, the functions did return pointers to the structures which were created by library functions. But after returning from the functions the memory space where the structures were located can be overwritten. I have changed that by passing the xyzFloat variables by reference. Here is an example:  \n\n\n````\nxyzFloat gValue = myIMU.getGValues(); // for versions \u003c 1.2.2\n````\nchanged to:\n\n````\nxyzFloat gValue;  // for versions \u003e= 1.2.2\nmyIMU.getGValues( \u0026gValue )\n````\n\nI am sorry for the inconvience. But the changes to be made to existing sketches to make them work with version 1.2.2 are really limited. All example sketches are changed accordingly. \n\n\u003ch3\u003e(Formerly) Known issue\u003c/h3\u003e\nBefore version 1.2.0, using my library caused sporadic connection issues after re-powering. This has been solved by setting up the magnetometer as SLV4. The magnetometer data reading is still done using the magnetometer as SLV0. Please inform me if you should still have issues.      \n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwollewald%2Ficm20948_we","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwollewald%2Ficm20948_we","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwollewald%2Ficm20948_we/lists"}