roo_display
API Documentation for roo_display
Loading...
Searching...
No Matches
msp4031.h
Go to the documentation of this file.
1#pragma once
2
3// http://www.lcdwiki.com/4.0inch_Capacitive_SPI_Module_ST7796
4// Maker: ???
5// SKU: MSP4031
6//
7// Note: if you want to use the built-in SD card reader, treat it as a
8// completely separate SPI device, and use the appropriate libraries (e.g.,
9// 'SD'). You can connect the SD reader to the same SPI bus as the display. You
10// then just need to ensure that its 'CS' pin is never activated (set to LOW)
11// when a display's DrawingContext exists.
12//
13// Note: this display has a backlit (LED) pin. You can connect it to VCC for
14// full brigtness. You can also connect it to some digital output pin, and use
15// the controller-specific utility (e.g. LedcBacklit on ESP32) to control the
16// intensity.
17//
18// Sample script:
19//
20// #include <Arduino.h>
21//
22// #include "roo_display.h"
23// #include "roo_display/backlit/esp32_ledc.h"
24// #include "roo_display/shape/basic.h"
25// #include "roo_display/products/noname/st7796s_black/msp4031.h"
26//
27// using namespace roo_display;
28//
29// // Override the constants to match your configuration.
30// static const int kPinSpiSck = 18;
31// static const int kPinSpiMiso = 19;
32// static const int kPinSpiMosi = 23;
33//
34// static const int kPinLcdCs = 5;
35// static const int kPinTouchCs = 2;
36// static const int kPinLcdDc = 17;
37// static const int kPinLcdReset = -1;
38//
39// static const int kPinLcdBl = 16;
40//
41// products::noname::st7796s_black::Msp4031<kPinLcdCs, kPinTouchCs, kPinLcdDc,
42// kPinLcdReset>
43// display_device;
44// Display display(display_device);
45//
46// LedcBacklit backlit(kPinLcdBl);
47//
48// void setup() {
49// display_device.initTransport(kPinSpiSck, kPinSpiMiso, kPinSpiMosi, kPinSda,
50// kPinScl);
51// display.init(color::White);
52// backlit.begin();
53// }
54//
55// void loop() {
56// {
57// DrawingContext dc(display);
58// dc.fill(Color(rand(), rand(), rand()));
59// }
60// int16_t x, y;
61// if (display.getTouch(x, y)) {
62// DrawingContext dc(display);
63// dc.draw(Line(0, y, display.width() - 1, y, color::Red));
64// dc.draw(Line(x, 0, x, display.height() - 1, color::Red));
65// }
66// delay(200);
67// }
68
73#include "roo_display/hal/i2c.h"
74#include "roo_display/hal/spi.h"
76
78
80/// Noname 4.0" ST7796S SPI module (MSP4031).
81class Msp4031 : public ComboDevice {
82 public:
83 /// Create device with orientation, SPI, and I2C instances.
85 Orientation orientation = Orientation().rotateLeft(),
88 : spi_(spi), i2c_(i2c), display_(spi_), touch_(i2c_) {
89 display_.setOrientation(orientation);
90 }
91
92#if defined(ARDUINO)
93 /// Initialize transport using default SPI/I2C pins (Arduino).
94 void initTransport() {
95 spi_.init();
96 i2c_.init();
97 }
98#endif
99
100 /// Initialize transport using explicit SPI/I2C pins.
102 uint8_t scl) {
103 spi_.init(sck, miso, mosi);
104 i2c_.init(sda, scl);
105 }
106
107 /// Return display device.
108 DisplayDevice& display() override { return display_; }
109
110 /// Return touch device.
111 TouchDevice* touch() override { return &touch_; }
112
113 /// Return touch calibration.
115 return TouchCalibration(0, 0, 319, 479,
117 }
118
119 private:
124};
125
126} // namespace roo_display::products::noname::st7796s_black
Base class for displays with integrated, pre-calibrated touch.
Definition combo_device.h:9
Base class for display device drivers.
Definition device.h:223
Represents the orientation of a display device.
Definition orientation.h:25
static constexpr Orientation RightDown()
Return a specific orientation value.
Definition orientation.h:62
Touch calibration parameters (bounds + orientation).
Definition calibration.h:10
Touch controller interface.
Definition device.h:428
Noname 4.0" ST7796S SPI module (MSP4031).
Definition msp4031.h:81
TouchCalibration touch_calibration() override
Return touch calibration.
Definition msp4031.h:114
Msp4031(Orientation orientation=Orientation().rotateLeft(), roo_display::DefaultSpi spi=roo_display::DefaultSpi(), roo_display::I2cMasterBusHandle i2c=roo_display::I2cMasterBusHandle())
Create device with orientation, SPI, and I2C instances.
Definition msp4031.h:84
DisplayDevice & display() override
Return display device.
Definition msp4031.h:108
TouchDevice * touch() override
Return touch device.
Definition msp4031.h:111
void initTransport(uint8_t sck, uint8_t miso, uint8_t mosi, uint8_t sda, uint8_t scl)
Initialize transport using explicit SPI/I2C pins.
Definition msp4031.h:101