#ifndef GRAVITY_H #define GRAVITY_H #include #include #include "analog_input.h" #include "button.h" #include "clock.h" #include "digital_output.h" #include "encoder_dir.h" #include "peripherials.h" // Hardware abstraction wrapper for the Gravity module. class Gravity { public: // Constructor Gravity() : display(U8G2_R2, SCL, SDA, U8X8_PIN_NONE) {} // Deconstructor ~Gravity() {} // Initializes the Arduino, and Gravity hardware. void Init(); // Polling check for state change of inputs and outputs. void Process(); U8G2_SSD1306_128X64_NONAME_2_HW_I2C display; // OLED display object. Clock clock; // Clock source wrapper. DigitalOutput outputs[OUTPUT_COUNT]; // An array containing each Output object. EncoderDir encoder; // Rotary encoder with button instance Button shift_button; Button play_button; AnalogInput cv1; AnalogInput cv2; private: void InitClock(); void InitDisplay(); void InitInputs(); void InitOutputs(); }; extern Gravity gravity; #endif