Created
November 16, 2016 18:01
-
-
Save co3moz/6599a935786ed3b62a7ee2bd98ef4c3f to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#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