Skip to main content

Overview

Kinematrix.h is the primary entry point for the Kinematrix framework. It orchestrates all library components including modules, sensors, add-ons, and development tools through a single include statement.

Include Pattern

// Define required modules before including Kinematrix.h
#define ENABLE_SENSOR_MODULE_V2
#define ENABLE_MODULE_WIFI_HANDLER_V2
#define ENABLE_MODULE_PID_CONTROLLER

// Include main header - all enabled components now available
#include "Kinematrix.h"

void setup() {
    // All enabled modules are now accessible
}

Architecture

The header implements a hierarchical include system that automatically loads enabled components:
#include "Arduino.h"

#include "KinematrixDevelopment.h"

#include "KinematrixModules.h"
#include "KinematrixModulesHelper.h"
#include "KinematrixModulesNoDef.h"

#include "KinematrixSensor.h"
#include "KinematrixSensorHelper.h"
#include "KinematrixSensorNoDef.h"

#include "KinematrixAddons.h"

Component Headers

Development Integration

KinematrixDevelopment.h

Development and experimental modules for testing and debugging.

Module Integration

KinematrixModules.h

Main module orchestration - includes both .h and .cpp files for enabled modules

KinematrixModulesHelper.h

Module helper functions and utilities with ENABLE_MODULE_HELPER_* definitions

KinematrixModulesNoDef.h

Header-only module inclusion using ENABLE_MODULE_NODEF_* definitions

Sensor Integration

KinematrixSensor.h

Sensor framework orchestration - includes both .h and .cpp files

KinematrixSensorHelper.h

Sensor helper functions and utilities with ENABLE_SENSOR_*_HELPER definitions

KinematrixSensorNoDef.h

Header-only sensor inclusion using ENABLE_SENSOR_*_NODEF definitions

Add-on Integration

KinematrixAddons.h

Complete application systems like AutoLight variants (V1, V2, V3)

Usage Patterns

Standard Production Usage

// Production pattern - includes .h and .cpp files
#define ENABLE_MODULE_WIFI_HANDLER_V2
#define ENABLE_MODULE_MQTT_MANAGER
#define ENABLE_SENSOR_MODULE_V2

#include "Kinematrix.h"

void setup() {
    // Full module implementations available
}

Helper Functions Access

// Access helper utilities
#define ENABLE_MODULE_HELPER_I2C_SCANNER
#define ENABLE_SENSOR_UTILITY_V2

#include "Kinematrix.h"

void setup() {
    // Helper functions and utilities available
}

Header-Only Mode

// Include only headers without implementation
#define ENABLE_MODULE_NODEF_PID_CONTROLLER
#define ENABLE_SENSOR_NODEF_DHT_V2

#include "Kinematrix.h"

void setup() {
    // Headers available for declarations
    // Implementation must be linked separately
}

Development Mode

// Enable development modules
#define ENABLE_DEVELOPMENT_CERIA_SERIAL
#define ENABLE_DEVELOPMENT_CERIA_DEV_OP

#include "Kinematrix.h"

void setup() {
    // Development tools available for debugging
}

Triple Include System

The framework implements a consistent 3-tier architecture:
1

Production Files

Standard ENABLE_* definitions that include both .h and .cpp files for complete module functionality
2

Helper Files

ENABLE_*_HELPER definitions for utility functions with both .h and .cpp includes
3

Header-Only Files

ENABLE_*_NODEF definitions that include only .h files for selective compilation

Compilation Messages

The header provides feedback during compilation:
[INFO]: compiling Kinematrix started
... (module-specific messages)
[INFO]: compiling Kinematrix done

Platform Compatibility

ESP32

Full feature set with all modules

ESP8266

WiFi features with memory optimization

AVR

Basic modules with memory constraints

Benefits

Single include point for entire library with consistent naming conventions and platform abstraction.
Include only required components to optimize memory usage and reduce compilation time.
Logical grouping of functionality with clear dependency management and scalable architecture.
Selective feature inclusion with platform-appropriate optimizations reduces binary size.

Integration Points

  • Compatible with PlatformIO library system
  • Works with Arduino IDE
  • Supports external library dependencies
  • Integrates with Arduino Library Manager

Example: Full Application

// Define all required components
#define ENABLE_MODULE_WIFI_HANDLER_V2
#define ENABLE_MODULE_MQTT_MANAGER
#define ENABLE_MODULE_PID_CONTROLLER
#define ENABLE_SENSOR_MODULE_V2
#define ENABLE_SENSOR_DHT_V2
#define ENABLE_MODULE_SERIAL_DEBUGGER_V2

// Single include brings everything together
#include "Kinematrix.h"

WiFiHandlerV2 wifi;
MQTTManager mqtt;
PIDController pid(1.0, 0.5, 0.2);
SensorModuleV2 sensors;

void setup() {
    Serial.begin(115200);
    
    // All modules ready to use
    wifi.connect("MyNetwork", "password");
    mqtt.begin("mqtt.example.com", 1883);
    sensors.initialize();
    
    SerialDebuggerV2::log("System initialized");
}

void loop() {
    // Application logic using all enabled modules
}

See Also

Build docs developers (and LLMs) love