Settings

settings
Settings.h
config

CREPP v2 – Global settings ------------------------- - Paramètres matériels - Adresses I2C - Broches - Constantes fonctionnelles * ❌ Pas d'instances ❌ Pas de logique ✅ Constantes uniquement

Constantes de configuration

i2c

Nom Type Valeur Description
ADDRESS_ADS1115 uint8_t 0x48 Adresse par défaut pour ADS1115
ADDRESS_BME280 uint8_t 0x76 Adresse par défaut pour BME280
ADDRESS_DS3231 uint8_t 0x68 Adresse par défaut pour DS3231
ADDRESS_OLED uint8_t 0x3C Adresse par défaut pour écran OLED SSD1306
ADDRESS_PCA9635 uint8_t 0x60 Adresse par défaut pour PCA9635
ADDRESS_PCF8574 uint8_t 0x20 Adresse par défaut pour PCF8574
I2C_CLOCK_SPEED uint32_t 400000 400kHz
I2C_SCAN_END uint8_t 0x77
I2C_SCAN_START uint8_t 0x08 Scan range

led

Nom Type Valeur Description
ANIMATION_FAST uint16_t 50 Animation speeds (ms)
ANIMATION_NORMAL uint16_t 100
ANIMATION_SLOW uint16_t 200
BRIGHTNESS_DEFAULT uint8_t 100 Luminosité par défaut
BRIGHTNESS_MAX uint8_t 255 Luminosité maximale
BRIGHTNESS_MIN uint8_t 10 Luminosité minimale
COLOR_BLUE uint32_t 0x0000FF
COLOR_CYAN uint32_t 0x00FFFF
COLOR_GREEN uint32_t 0xFF0000
COLOR_MAGENTA uint32_t 0xFF00FF
COLOR_OFF uint32_t 0x000000
COLOR_RED uint32_t 0x00FF00 Colors (GRB format for SK6812)
COLOR_WHITE uint32_t 0xFFFFFF
COLOR_YELLOW uint32_t 0xFFFF00
COUNT uint16_t 8 Nombre de LEDs

motor

Nom Type Valeur Description
ACCELERATION uint16_t 100 Accélération (ms)
COUNT uint8_t 2 Nombre de moteurs
DECELERATION uint16_t 100 Décélération (ms)
DIR_BACKWARD uint8_t 0x02
DIR_FORWARD uint8_t 0x01 Directions
DIR_STOP uint8_t 0x00
I2C_EXPANDER uint8_t i2c::ADDRESS_PCF8574 Adresse I2C de l'extendeur
MAX_SPEED uint8_t 255 Vitesse maximale (PWM)
MIN_SPEED uint8_t 0 Vitesse minimale

pin

Nom Type Valeur Description
BUTTON_1 uint8_t 2 Bouton 1
BUTTON_2 uint8_t 3 Bouton 2
BUZZER uint8_t 4 Buzzer
LED_STATUS uint8_t 13 Broche de la LED intégrée
LED_STRIP uint8_t 21 Broche pour bande LED (SK6812/WS2812)
MOTOR_ENA uint8_t 9 Enable moteur A
MOTOR_ENB uint8_t 12 Enable moteur B
MOTOR_IN1 uint8_t 10 Input 1 moteur A
MOTOR_IN2 uint8_t 11 Input 2 moteur A
MOTOR_IN3 uint8_t 14 Input 3 moteur B
MOTOR_IN4 uint8_t 15 Input 4 moteur B
NRF_CE uint8_t 16 Chip Enable
NRF_CSN uint8_t 17 Chip Select
NRF_MISO uint8_t 20 MISO
NRF_MOSI uint8_t 19 MOSI
NRF_SCK uint8_t 18 SCK
SERVO uint8_t 7 Servo moteur
ULTRASONIC_ECHO uint8_t 6 Broche ECHO du capteur ultrason
ULTRASONIC_TRIG uint8_t 5 Broche TRIG du capteur ultrason

system

Nom Type Valeur Description
BOOT_DELAY_MS uint16_t 500 Délai au démarrage
EEPROM_CONFIG_START uint16_t 0 Début configuration
EEPROM_DATA_START uint16_t 512 Début données
EEPROM_SIZE uint16_t 4096 Octets
LOG_BUFFER_SIZE uint16_t 1024 Taille buffer log
MAX_CURRENT float 2.0f A
MAX_LOG_MESSAGES uint8_t 100 Nombre max de messages en mémoire
MAX_TEMPERATURE float 85.0f °C
MIN_VOLTAGE float 3.0f V
TASK_UPDATE_INTERVAL uint32_t 10 Intervalle de mise à jour des tâches (ms)
WATCHDOG_TIMEOUT uint32_t 10000 Timeout du watchdog

Code source


        // Settings.h
#pragma once
#include <stdint.h>

/*
 * CREPP v2 – Global settings
 * -------------------------
 * - Paramètres matériels
 * - Adresses I2C
 * - Broches
 * - Constantes fonctionnelles
 *
 * ❌ Pas d'instances
 * ❌ Pas de logique
 * ✅ Constantes uniquement
 */

namespace crepp::settings {

    /* =========================
     * I2C ADDRESSES
     * ========================= */
    namespace i2c {
        constexpr uint8_t ADDRESS_PCF8574   = 0x20; // Adresse par défaut pour PCF8574
        constexpr uint8_t ADDRESS_PCA9635   = 0x60; // Adresse par défaut pour PCA9635
        constexpr uint8_t ADDRESS_ADS1115   = 0x48; // Adresse par défaut pour ADS1115
        constexpr uint8_t ADDRESS_OLED      = 0x3C; // Adresse par défaut pour écran OLED SSD1306
        constexpr uint8_t ADDRESS_BME280    = 0x76; // Adresse par défaut pour BME280
        constexpr uint8_t ADDRESS_DS3231    = 0x68; // Adresse par défaut pour DS3231
        
        // Scan range
        constexpr uint8_t I2C_SCAN_START    = 0x08;
        constexpr uint8_t I2C_SCAN_END      = 0x77;
        constexpr uint32_t I2C_CLOCK_SPEED  = 400000; // 400kHz
    }

    /* =========================
     * PINS
     * ========================= */
    namespace pin {
        // GPIO Pins
        constexpr uint8_t LED_STATUS        = 13;    // Broche de la LED intégrée
        constexpr uint8_t BUTTON_1          = 2;     // Bouton 1
        constexpr uint8_t BUTTON_2          = 3;     // Bouton 2
        constexpr uint8_t BUZZER            = 4;     // Buzzer
        
        // Ultrasonic sensor
        constexpr uint8_t ULTRASONIC_TRIG   = 5;     // Broche TRIG du capteur ultrason
        constexpr uint8_t ULTRASONIC_ECHO   = 6;     // Broche ECHO du capteur ultrason
        
        // Servo
        constexpr uint8_t SERVO           = 7;     // Servo moteur
        
        // Motor control
        constexpr uint8_t MOTOR_ENA         = 9;     // Enable moteur A
        constexpr uint8_t MOTOR_IN1         = 10;    // Input 1 moteur A
        constexpr uint8_t MOTOR_IN2         = 11;    // Input 2 moteur A
        constexpr uint8_t MOTOR_ENB         = 12;    // Enable moteur B
        constexpr uint8_t MOTOR_IN3         = 14;    // Input 3 moteur B
        constexpr uint8_t MOTOR_IN4         = 15;    // Input 4 moteur B
        
        // NRF24
        constexpr uint8_t NRF_CE            = 16;    // Chip Enable
        constexpr uint8_t NRF_CSN           = 17;    // Chip Select
        constexpr uint8_t NRF_MOSI          = 19;    // MOSI
        constexpr uint8_t NRF_MISO          = 20;    // MISO
        constexpr uint8_t NRF_SCK           = 18;    // SCK
        
        // LED Strip
        constexpr uint8_t LED_STRIP         = 21;    // Broche pour bande LED (SK6812/WS2812)
    }

    /* =========================
     * MOTORS
     * ========================= */
    namespace motor {
        constexpr uint8_t I2C_EXPANDER      = i2c::ADDRESS_PCF8574; // Adresse I2C de l'extendeur
        constexpr uint8_t COUNT             = 2;                     // Nombre de moteurs
        constexpr uint8_t MAX_SPEED         = 255;                   // Vitesse maximale (PWM)
        constexpr uint8_t MIN_SPEED         = 0;                     // Vitesse minimale
        constexpr uint16_t ACCELERATION     = 100;                   // Accélération (ms)
        constexpr uint16_t DECELERATION     = 100;                   // Décélération (ms)
        
        // Directions
        constexpr uint8_t DIR_FORWARD       = 0x01;
        constexpr uint8_t DIR_BACKWARD      = 0x02;
        constexpr uint8_t DIR_STOP          = 0x00;
    }

    /* =========================
     * LEDS (SK6812 / WS6812)
     * ========================= */
    namespace led {
        constexpr uint16_t COUNT            = 8;                     // Nombre de LEDs
        constexpr uint8_t  BRIGHTNESS_MAX   = 255;                   // Luminosité maximale
        constexpr uint8_t  BRIGHTNESS_MIN   = 10;                    // Luminosité minimale
        constexpr uint8_t  BRIGHTNESS_DEFAULT = 100;                 // Luminosité par défaut
        
        // Animation speeds (ms)
        constexpr uint16_t ANIMATION_FAST   = 50;
        constexpr uint16_t ANIMATION_NORMAL = 100;
        constexpr uint16_t ANIMATION_SLOW   = 200;
        
        // Colors (GRB format for SK6812)
        constexpr uint32_t COLOR_RED        = 0x00FF00;
        constexpr uint32_t COLOR_GREEN      = 0xFF0000;
        constexpr uint32_t COLOR_BLUE       = 0x0000FF;
        constexpr uint32_t COLOR_WHITE      = 0xFFFFFF;
        constexpr uint32_t COLOR_YELLOW     = 0xFFFF00;
        constexpr uint32_t COLOR_CYAN       = 0x00FFFF;
        constexpr uint32_t COLOR_MAGENTA    = 0xFF00FF;
        constexpr uint32_t COLOR_OFF        = 0x000000;
    }

    /* =========================
     * SENSORS
     * ========================= */
    namespace sensor {
        // Ultrasonic
        constexpr uint16_t ULTRASONIC_MAX_DISTANCE   = 400;    // cm
        constexpr uint16_t ULTRASONIC_MIN_DISTANCE   = 2;      // cm
        constexpr uint16_t ULTRASONIC_TIMEOUT        = 30000;  // µs
        constexpr float    SOUND_SPEED               = 0.0343; // cm/µs
        
        // ADS1115
        constexpr float    ADS1115_GAIN              = 4.096f; // ±4.096V
        constexpr uint16_t ADS1115_DATA_RATE         = 860;    // SPS
        
        // BME280 (si présent)
        constexpr float    SEA_LEVEL_PRESSURE        = 1013.25; // hPa
    }

    /* =========================
     * NETWORK
     * ========================= */
    namespace network {
        // WiFi
        constexpr uint32_t WIFI_TIMEOUT              = 10000;  // ms
        constexpr uint32_t WIFI_RECONNECT_DELAY      = 5000;   // ms
        constexpr int8_t   WIFI_MIN_RSSI             = -80;    // dBm
        
        // Server
        constexpr uint16_t SERVER_PORT               = 80;
        constexpr uint16_t WEBSOCKET_PORT            = 81;
        constexpr uint16_t API_PORT                  = 8080;
        
        // MQTT (optionnel)
        constexpr uint16_t MQTT_PORT                 = 1883;
        constexpr uint32_t MQTT_KEEPALIVE            = 60;     // seconds
    }

    /* =========================
     * SYSTEM
     * ========================= */
    namespace system {
        // Timing
        constexpr uint16_t BOOT_DELAY_MS             = 500;    // Délai au démarrage
        constexpr uint32_t WATCHDOG_TIMEOUT          = 10000;  // Timeout du watchdog
        constexpr uint32_t TASK_UPDATE_INTERVAL      = 10;     // Intervalle de mise à jour des tâches (ms)
        
        // Safety limits
        constexpr float    MAX_TEMPERATURE           = 85.0f;  // °C
        constexpr float    MIN_VOLTAGE               = 3.0f;   // V
        constexpr float    MAX_CURRENT               = 2.0f;   // A
        
        // Storage
        constexpr uint16_t EEPROM_SIZE               = 4096;   // Octets
        constexpr uint16_t EEPROM_CONFIG_START       = 0;      // Début configuration
        constexpr uint16_t EEPROM_DATA_START         = 512;    // Début données
        
        // Logging
        constexpr uint16_t LOG_BUFFER_SIZE           = 1024;   // Taille buffer log
        constexpr uint8_t  MAX_LOG_MESSAGES          = 100;    // Nombre max de messages en mémoire
    }

    /* =========================
     * COMMUNICATION
     * ========================= */
    namespace communication {
        // NRF24
        constexpr uint64_t NRF24_PIPE_0              = 0xF0F0F0F0E1LL;
        constexpr uint64_t NRF24_PIPE_1              = 0xF0F0F0F0D2LL;
        constexpr uint8_t  NRF24_CHANNEL             = 76;      // 2.476 GHz
        constexpr uint8_t  NRF24_DATA_RATE           = 1;       // 0=250kbps, 1=1Mbps, 2=2Mbps
        constexpr uint8_t  NRF24_PA_LEVEL            = 3;       // 0=MIN, 1=LOW, 2=HIGH, 3=MAX
        constexpr uint8_t  NRF24_PAYLOAD_SIZE        = 32;      // Octets
        
        // Serial
        constexpr uint32_t SERIAL_BAUD_RATE          = 115200;
        constexpr uint32_t SERIAL_TIMEOUT            = 1000;    // ms
    }

    /* =========================
     * TASK SCHEDULER
     * ========================= */
    namespace scheduler {
        constexpr uint8_t  MAX_TASKS                 = 20;      // Nombre max de tâches
        constexpr uint32_t DEFAULT_INTERVAL          = 1000;    // Intervalle par défaut (ms)
        constexpr uint32_t MIN_INTERVAL              = 10;      // Intervalle minimum (ms)
        constexpr uint32_t MAX_INTERVAL              = 60000;   // Intervalle maximum (ms)
    }

    /* =========================
     * DATA STORAGE
     * ========================= */
    namespace storage {
        constexpr uint16_t MAX_KEYS                  = 50;      // Nombre max de clés
        constexpr uint16_t MAX_KEY_LENGTH            = 32;      // Longueur max clé
        constexpr uint16_t MAX_VALUE_LENGTH          = 256;     // Longueur max valeur
        constexpr uint32_t AUTO_SAVE_INTERVAL        = 30000;   // Auto-save toutes les 30s
    }



} // namespace crepp::settings



// // Dans Settings.h, ajouter:
// namespace crepp::settings {
//     namespace storage {
//         // Pour RP2350, utiliser la flash
//         constexpr uint16_t FLASH_SECTOR_SIZE = 4096;
//         constexpr uint16_t FLASH_CONFIG_SECTOR = 0xFF000;
//         constexpr bool USE_LITTLEFS = true;
//     }
// }