TFT_eSPI/TFT_Drivers/ST7781_Rotation.h

49 lines
1.6 KiB
C

// This is the command sequence that rotates the ST7781 driver coordinate frame
// Based on ILI9225_Rotation.h and MCUFRIEND_kbv = MCUFRIEND_kbv::setRotation()
rotation = m % 4; // Limit the range of values to 0-3
switch (rotation) {
case 0:
writecommand(ST7781_GATE_SCAN_CTRL1);
writedata(0xA7);writedata(0x00);
writecommand(ST7781_DRIVER_OUTPUT_CTRL);
writedata(0x01);writedata(0x00);
writecommand(ST7781_ENTRY_MODE);
writedata(TFT_MAD_COLOR_ORDER);writedata(0x30);
_width = _init_width;
_height = _init_height;
break;
case 1:
writecommand(ST7781_GATE_SCAN_CTRL1);
writedata(0xA7);writedata(0x00);
writecommand(ST7781_DRIVER_OUTPUT_CTRL);
writedata(0x00);writedata(0x00);
writecommand(ST7781_ENTRY_MODE);
writedata(TFT_MAD_COLOR_ORDER);writedata(0x38);
_width = _init_height;
_height = _init_width;
break;
case 2:
writecommand(ST7781_GATE_SCAN_CTRL1);
writedata(0x27);writedata(0x00);
writecommand(ST7781_DRIVER_OUTPUT_CTRL);
writedata(0x00);writedata(0x00);
writecommand(ST7781_ENTRY_MODE);
writedata(TFT_MAD_COLOR_ORDER);writedata(0x30);
_width = _init_width;
_height = _init_height;
break;
case 3:
writecommand(ST7781_GATE_SCAN_CTRL1);
writedata(0x27);writedata(0x00);
writecommand(ST7781_DRIVER_OUTPUT_CTRL);
writedata(0x01);writedata(0x00);
writecommand(ST7781_ENTRY_MODE);
writedata(TFT_MAD_COLOR_ORDER);writedata(0x38);
_width = _init_height;
_height = _init_width;
break;
}