
CodeCell can recognize your physical activity, such as walking, running, cycling, or driving - using its onboard BNO085 motion sensor.
The BNO085 uses built-in sensor fusion algorithms to classify your movement patterns. It processes data from the accelerometer, gyroscope, and magnetometer to estimate your current activity.
Enable activity recognition with:
myCodeCell.Init(MOTION_ACTIVITY); // Enable activity classification
Read the detected activity using:
int activity = myCodeCell.Motion_ActivityRead(); // Returns activity ID (1–8)
| ID | Activity |
|---|---|
1 |
Driving |
2 |
Cycling |
3 |
Walking |
4 |
Still |
5 |
Tilting |
6 |
Walking |
7 |
Running |
8 |
Climbing Stairs |
This example reads CodeCell’s current activity and displays it on an OLED screen using the Adafruit SSD1306 library. Connect your OLED display to 3V3, GND, SDA, and SCL pins.
#include <CodeCell.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
CodeCell myCodeCell;
/* OLED Configuration */
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 32
#define OLED_RESET -1
#define SCREEN_ADDRESS 0x3C
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
int read_timer = 0;
void setup() {
Serial.begin(115200);
myCodeCell.Init(MOTION_ACTIVITY); // Enable activity sensing
if (!display.begin(SSD1306_SWITCHCAPVCC, SCREEN_ADDRESS)) {
Serial.println(F("Display Error"));
}
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(SSD1306_WHITE);
display.display();
delay(2000);
}
void loop() {
if (myCodeCell.Run(10)) { // Run loop at 10 Hz
if (read_timer < 10) {
read_timer++;
} else {
read_timer = 0; // Update every 1 second
display.clearDisplay();
display.setCursor(32, 16);
display.print(F("Activity: "));
display.setCursor(32, 24);
switch (myCodeCell.Motion_ActivityRead()) {
case 1: display.print("Driving"); break;
case 2: display.print("Cycling"); break;
case 3:
case 6: display.print("Walking"); break;
case 4: display.print("Still"); break;
case 5: display.print("Tilting"); break;
case 7: display.print("Running"); break;
case 8: display.print("Stairs"); break;
default: display.print("Reading.."); break;
}
display.display();
}
}
}
Note: It may take 10–30 seconds for the sensor to stabilize and begin accurately classifying motion, depending on mounting orientation and environment.
MOTION_STEP_COUNTER for full fitness tracking.Join our Community ~ Be the first to know about new products and get exciting deals!
© 2025 Microbots.