  * Display the panorama grid size
  */
 void displayPanoSize(){
-    display.printf("Grid %d x %d \n", pano.getVertShots(), pano.getHorizShots());
+    display.printf("Grid %d x %d \n", pano->getVertShots(), pano->getHorizShots());
 }
 
 /*

#include "display.h"
#include "mpu.h"

// Address of I2C OLED display. If screen looks scaled edit Adafruit_SSD1306.h
// and pick SSD1306_128_64 or SSD1306_128_32 that matches display type.
#define DISPLAY_I2C_ADDRESS 0x3C

#define HORIZ_STEP 9
#define DRV_M0 10
#define DRV_M1 11

// this should be hooked up to nSLEEP on both drivers
#define MOTORS_ON 13

#else /* defined(ARDUINO_SAMD_FEATHER_M0) */

// Address of I2C OLED display. If screen looks scaled edit Adafruit_SSD1306.h
// and pick SSD1306_128_64 or SSD1306_128_32 that matches display type.
#define DISPLAY_I2C_ADDRESS 0x3C
#define OLED_RESET 12
#define TEXT_SIZE 1
#define DISPLAY_ROWS SSD1306_LCDHEIGHT/8/TEXT_SIZE
#define DISPLAY_COLS SSD1306_LCDWIDTH/6/TEXT_SIZE

// Camera shutter controls
#define CAMERA_FOCUS 0
#define CAMERA_SHUTTER 1

// Battery measurement settings
#define VCC 3300
#define LOW_BATTERY 7000
// R1/R2 is the voltage divisor in Ω (GND-R1-A0-R2-Vin)
// measure resistors and enter actual values for a more accurate voltage
#define BATT_R1 9980
#define BATT_R2 46500
#define BATT_RANGE (VCC * (BATT_R1 + BATT_R2) / BATT_R1)
#define BATTERY A0

// Joystick inputs
#define JOYSTICK_X A3
#define JOYSTICK_Y A2
#define JOYSTICK_SW A4

// IR remote
#define REMOTE_IN A5

// MPU (accel/gyro)
#define MPU_I2C_ADDRESS 0x68
#define MPU_INT 10

// Future devices
#define COMPASS_DRDY 11

// Stepper motors and drivers
#define MOTOR_STEPS 200
#define VERT_DIR 5
#define VERT_STEP 6
#define HORIZ_DIR VERT_DIR
#define HORIZ_STEP 9
#define DRV_M0 10
#define DRV_M1 11

// this should be hooked up to nSLEEP on both drivers
#define MOTORS_ON 13
#endif /* !defined(ARDUINO_SAMD_FEATHER_M0) */

// these variables are modified by the menu
volatile int focal, shutter, pre_shutter, post_wait, long_pulse,
             orientation, aspect, shots, motors_enable, display_invert,
             horiz, vert, running;

static Display display(OLED_RESET);

static Camera* camera;
static Joystick* joystick;
static Remote* remote;
// HID (Human Interface Device) Combined joystick+remote
static AllHID* hid;
static MPU* mpu;
static DRV8834* horiz_motor;
static DRV8834* vert_motor;
static Pano* pano;

void setup() {
    Serial.begin(38400);
    delay(1000); // wait for serial

    display.begin(SSD1306_SWITCHCAPVCC, DISPLAY_I2C_ADDRESS, false);
    display.setRotation(2);
    display.clearDisplay();
    display.setTextCursor(0,0);
    display.setTextColor(WHITE);
    display.setTextSize(TEXT_SIZE);

    camera = new Camera(CAMERA_FOCUS, CAMERA_SHUTTER);
    joystick = new Joystick(JOYSTICK_SW, JOYSTICK_X, JOYSTICK_Y);
    remote = new Remote(REMOTE_IN);
    // HID (Human Interface Device) Combined joystick+remote
    hid = new AllHID(2, new HID* const[2] {joystick, remote});

    mpu = new MPU(MPU_I2C_ADDRESS, MPU_INT);
    mpu->init();

    horiz_motor = new DRV8834(MOTOR_STEPS, HORIZ_DIR, HORIZ_STEP, DRV_M0, DRV_M1);
    vert_motor = new DRV8834(MOTOR_STEPS, VERT_DIR, VERT_STEP, DRV_M0, DRV_M1);
    horiz_motor->setMicrostep(32);
    vert_motor->setMicrostep(32);

    pano = new Pano(*horiz_motor, *vert_motor, *camera, *mpu, MOTORS_ON);

    //pinMode(COMPASS_DRDY, INPUT_PULLUP);

    pinMode(BATTERY, INPUT);
#if defined(__MK20DX256__) || defined(__MKL26Z64__)
    analogReadRes(10);
    analogReadAveraging(32);
#endif

}

int readBattery(void){
