print("Hello, Pi Pico!")
// TFT8800B400 custom-chip test sketch
// ESP32 DevKit, ILI9341-style raw SPI commands (no library needed just to
// prove the chip works - swap in TFT_eSPI/Adafruit_GFX with these same
// pins once you're happy with the simulator behaviour).
//
// Arvind Patil / AI Centre Nandurbar
#include <SPI.h>
#define PIN_SCK 18
#define PIN_MOSI 23
#define PIN_MISO 19
#define PIN_CS 5
#define PIN_DC 2
#define PIN_RST 4
#define PIN_LED 15
SPIClass tftSPI(VSPI);
void writeCmd(uint8_t cmd) {
digitalWrite(PIN_DC, LOW);
digitalWrite(PIN_CS, LOW);
tftSPI.transfer(cmd);
digitalWrite(PIN_CS, HIGH);
}
void writeData(uint8_t d) {
digitalWrite(PIN_DC, HIGH);
digitalWrite(PIN_CS, LOW);
tftSPI.transfer(d);
digitalWrite(PIN_CS, HIGH);
}
void setWindow(uint16_t x0, uint16_t x1, uint16_t y0, uint16_t y1) {
writeCmd(0x2A); // CASET
writeData(x0 >> 8); writeData(x0 & 0xFF);
writeData(x1 >> 8); writeData(x1 & 0xFF);
writeCmd(0x2B); // PASET
writeData(y0 >> 8); writeData(y0 & 0xFF);
writeData(y1 >> 8); writeData(y1 & 0xFF);
}
void fillRect(uint16_t x0, uint16_t y0, uint16_t w, uint16_t h, uint16_t color565) {
setWindow(x0, x0 + w - 1, y0, y0 + h - 1);
writeCmd(0x2C); // RAMWR
digitalWrite(PIN_DC, HIGH);
digitalWrite(PIN_CS, LOW);
for (uint32_t i = 0; i < (uint32_t)w * h; i++) {
tftSPI.transfer(color565 >> 8);
tftSPI.transfer(color565 & 0xFF);
}
digitalWrite(PIN_CS, HIGH);
}
void setup() {
pinMode(PIN_CS, OUTPUT);
pinMode(PIN_DC, OUTPUT);
pinMode(PIN_RST, OUTPUT);
pinMode(PIN_LED, OUTPUT);
digitalWrite(PIN_CS, HIGH);
digitalWrite(PIN_LED, HIGH);
tftSPI.begin(PIN_SCK, PIN_MISO, PIN_MOSI, PIN_CS);
digitalWrite(PIN_RST, LOW);
delay(10);
digitalWrite(PIN_RST, HIGH);
delay(10);
writeCmd(0x11); delay(10); // SLPOUT
writeCmd(0x29); // DISPON
// four colour quadrants across the 800x400 panel
fillRect(0, 0, 400, 200, 0xF800); // red
fillRect(400, 0, 400, 200, 0x07E0); // green
fillRect(0, 200, 400, 200, 0x001F); // blue
fillRect(400, 200, 400, 200, 0xFFE0); // yellow
}
void loop() {
}