Skip to content

Instantly share code, notes, and snippets.

@co3moz
Created November 16, 2016 18:01
Show Gist options
  • Save co3moz/6599a935786ed3b62a7ee2bd98ef4c3f to your computer and use it in GitHub Desktop.
Save co3moz/6599a935786ed3b62a7ee2bd98ef4c3f to your computer and use it in GitHub Desktop.
#include <TFT_HX8357.h>
TFT_HX8357 gl = TFT_HX8357();
int mode = 0;
#define WATCH_COUNT 5
byte watch[WATCH_COUNT << 1];
void setup() {
gl.init();
gl.setRotation(1);
Serial.begin(115200);
for(int i = 0; i<WATCH_COUNT << 1; i++) watch[i] = 0;
gl.drawCentreString("ready", 240, 10, 4);
Serial.print('o');
}
uint16_t readInt () {
uint16_t n = Serial.read();
return (n << 8) + Serial.read();
}
void loop() {
if(mode == 0 && Serial.available() >= 1) mode = Serial.read();
for(int i = 0; i<WATCH_COUNT << 1; i+=2) {
if(watch[i] != 0) {
byte r = digitalRead(watch[i]);
if(r != watch[i + 1]) {
Serial.print("pin-");
Serial.print((int)watch[i]);
Serial.print(":");
Serial.print(r);
watch[i + 1] = r;
}
}
}
if(mode == 1) {
if(Serial.available() >= 10) {
uint16_t x = readInt();
uint16_t y = readInt();
uint16_t w = readInt();
uint16_t h = readInt();
uint16_t c = readInt();
gl.fillRect(x, y, w, h, c);
Serial.print('o');
mode = 0;
}
}
else if(mode == 2) {
if(Serial.available() >= 7) {
uint16_t x = readInt();
uint16_t y = readInt();
byte font = Serial.read();
uint16_t len = readInt();
char data[len + 1];
uint16_t i = 0;
while(i < len) {
while(Serial.available() == 0);
data[i++] = Serial.read();
}
data[i] = 0;
gl.drawCentreString(data, x, y, font);
Serial.print('o');
mode = 0;
}
}
else if(mode == 3) {
if(Serial.available() >= 2) {
uint16_t color = readInt();
gl.setTextColor(color);
Serial.print('o');
mode = 0;
}
}
else if(mode == 4) {
if(Serial.available() >= 4) {
uint16_t color = readInt();
uint16_t bgcolor = readInt();
gl.setTextColor(color, bgcolor);
Serial.print('o');
mode = 0;
}
}
else if(mode == 5) {
if(Serial.available() >= 2) {
uint16_t color = readInt();
gl.fillScreen(color);
Serial.print('o');
mode = 0;
}
}
else if(mode == 6) {
if(Serial.available() >= 1) {
gl.setRotation(Serial.read());
Serial.print('o');
mode = 0;
}
}
else if(mode == 7) {
if(Serial.available() >= 12) {
uint16_t x = readInt();
uint16_t y = readInt();
uint16_t w = readInt();
uint16_t h = readInt();
uint16_t r = readInt();
uint16_t c = readInt();
gl.fillRoundRect(x, y, w, h, r, c);
Serial.print('o');
mode = 0;
}
}
else if(mode == 8) {
if(Serial.available() >= 6) {
uint16_t x = readInt();
uint16_t y = readInt();
uint16_t c = readInt();
gl.drawPixel(x, y, c);
Serial.print('o');
mode = 0;
}
}
else if(mode == 9) {
if(Serial.available() >= 10) {
uint16_t x = readInt();
uint16_t y = readInt();
uint16_t x2 = readInt();
uint16_t y2 = readInt();
uint16_t c = readInt();
gl.drawLine(x, y, x2, y2, c);
Serial.print('o');
mode = 0;
}
}
else if(mode == 10) {
if(Serial.available() >= 8) {
uint16_t x = readInt();
uint16_t y = readInt();
uint16_t h = readInt();
uint16_t c = readInt();
gl.drawFastVLine(x, y, h, c);
Serial.print('o');
mode = 0;
}
}
else if(mode == 11) {
if(Serial.available() >= 8) {
uint16_t x = readInt();
uint16_t y = readInt();
uint16_t w = readInt();
uint16_t c = readInt();
gl.drawFastHLine(x, y, w, c);
Serial.print('o');
mode = 0;
}
}
else if(mode == 12) {
if(Serial.available() >= 1) {
gl.setTextSize(Serial.read());
Serial.print('o');
mode = 0;
}
}
else if(mode == 13) {
if(Serial.available() >= 1) {
gl.setTextWrap(Serial.read());
Serial.print('o');
mode = 0;
}
}
else if(mode == 14) {
if(Serial.available() >= 1) {
gl.setTextDatum(Serial.read());
Serial.print('o');
mode = 0;
}
}
else if(mode == 15) {
if(Serial.available() >= 2) {
uint16_t x = readInt();
gl.setTextPadding(x);
Serial.print('o');
mode = 0;
}
}
else if(mode == 16) {
if(Serial.available() >= 7) {
uint16_t x = readInt();
uint16_t y = readInt();
byte font = Serial.read();
uint16_t len = readInt();
char data[len + 1];
uint16_t i = 0;
while(i < len) {
while(Serial.available() == 0);
data[i++] = Serial.read();
}
data[i] = 0;
gl.drawString(data, x, y, font);
Serial.print('o');
mode = 0;
}
}
else if(mode == 17) {
if(Serial.available() >= 7) {
uint16_t x = readInt();
uint16_t y = readInt();
byte font = Serial.read();
uint16_t len = readInt();
char data[len + 1];
uint16_t i = 0;
while(i < len) {
while(Serial.available() == 0);
data[i++] = Serial.read();
}
data[i] = 0;
gl.drawRightString(data, x, y, font);
Serial.print('o');
mode = 0;
}
}
else if(mode == 18) {
if(Serial.available() >= 2) {
int pin = Serial.read();
int value = Serial.read();
digitalWrite(pin, value);
Serial.print('o');
mode = 0;
}
}
else if(mode == 19) {
if(Serial.available() >= 3) {
int pin = Serial.read();
uint16_t x = readInt();
analogWrite(pin, x);
Serial.print('o');
mode = 0;
}
}
else if(mode == 20) {
if(Serial.available() >= 1) {
int pin = Serial.read();
int r = digitalRead(pin);
Serial.print("pin-");
Serial.print(pin);
Serial.print(":");
Serial.print(r);
Serial.print('o');
mode = 0;
}
}
else if(mode == 21) {
if(Serial.available() >= 1) {
int pin = Serial.read();
int r = analogRead(pin);
Serial.print("pin-");
Serial.print(pin);
Serial.print(":");
Serial.print(r);
Serial.print('o');
mode = 0;
}
}
else if(mode == 22) {
if(Serial.available() >= 2) {
int pin = Serial.read();
byte m = Serial.read();
pinMode(pin, m);
Serial.print('o');
mode = 0;
}
}
else if(mode == 23) {
if(Serial.available() >= 2) {
byte watcher = Serial.read();
byte pin = Serial.read();
watch[(watcher << 1) + 1] = digitalRead(pin);
watch[watcher << 1] = pin;
Serial.print('o');
mode = 0;
}
}
else if(mode == 24) {
if(Serial.available() >= 1) {
byte watcher = Serial.read();
watch[watcher << 1] = 0;
Serial.print('o');
mode = 0;
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment