Very basic test program for Picaso Serial library.

Dependencies:   mbed uLCD_4D_Picaso

Committer:
admcrae
Date:
Wed Mar 11 19:52:34 2015 +0000
Revision:
2:001d4760263a
Parent:
1:9fcad04e0a0d
Rev 2.0

Who changed what in which revision?

UserRevisionLine numberNew contents of line
admcrae 0:c39433c50bf6 1 #include "mbed.h"
admcrae 0:c39433c50bf6 2 #include "uLCD_4D_Picaso.h"
admcrae 0:c39433c50bf6 3
admcrae 1:9fcad04e0a0d 4 /**
admcrae 1:9fcad04e0a0d 5 * Demo program for uLCD_4D_Picaso resistance touchscreen
admcrae 1:9fcad04e0a0d 6 * Simple Graphing Application on resistive touchscreen display
admcrae 1:9fcad04e0a0d 7 * @version 1.0
admcrae 1:9fcad04e0a0d 8 * @author Andrew McRae, Tianhao Li
admcrae 1:9fcad04e0a0d 9 */
admcrae 1:9fcad04e0a0d 10 // three pins are: TX RX RESET
admcrae 0:c39433c50bf6 11 uLCD_4D_Picaso lcd(p28, p27, p30);
admcrae 1:9fcad04e0a0d 12 //
admcrae 0:c39433c50bf6 13 int main() {
admcrae 0:c39433c50bf6 14 wait(1);
admcrae 1:9fcad04e0a0d 15 // change the baudrate to improve or decrease the latency and plotting quality
admcrae 1:9fcad04e0a0d 16 lcd.setbaudWait(Picaso::BAUD_600000);
admcrae 0:c39433c50bf6 17 lcd.touch_Set(0);
admcrae 1:9fcad04e0a0d 18 lcd.txt_Opacity(Picaso::OPAQUE);
admcrae 1:9fcad04e0a0d 19 lcd.gfx_RectangleFilled(200, 0, 230, 30, Picaso::WHITE);
admcrae 1:9fcad04e0a0d 20 lcd.gfx_RectangleFilled(0, 0, 30, 30, Picaso::WHITE);
admcrae 1:9fcad04e0a0d 21 lcd.txt_MoveCursor(1, 1);
admcrae 1:9fcad04e0a0d 22 lcd.putCH('E');
admcrae 1:9fcad04e0a0d 23 int status = 0;
admcrae 1:9fcad04e0a0d 24 int x = 0;
admcrae 1:9fcad04e0a0d 25 int y = 0;
admcrae 1:9fcad04e0a0d 26 int eraserActive = 0;
admcrae 1:9fcad04e0a0d 27 int prevX, prevY;
admcrae 0:c39433c50bf6 28 while(1) {
admcrae 1:9fcad04e0a0d 29 status = lcd.touch_Get(0);
admcrae 1:9fcad04e0a0d 30 if (status)
admcrae 1:9fcad04e0a0d 31 {
admcrae 0:c39433c50bf6 32 x = lcd.touch_Get(1);
admcrae 0:c39433c50bf6 33 y = lcd.touch_Get(2);
admcrae 1:9fcad04e0a0d 34 if (status == 1 && x >= 200 && y <= 30) {
admcrae 1:9fcad04e0a0d 35 // Clear screen
admcrae 1:9fcad04e0a0d 36 // Redraw eraser and clear screen button.
admcrae 1:9fcad04e0a0d 37 lcd.gfx_Cls();
admcrae 1:9fcad04e0a0d 38 lcd.gfx_RectangleFilled(200, 0, 230, 30, Picaso::WHITE);
admcrae 1:9fcad04e0a0d 39 lcd.gfx_RectangleFilled(0, 0, 30, 30, Picaso::WHITE);
admcrae 1:9fcad04e0a0d 40 lcd.txt_MoveCursor(0, 0);
admcrae 1:9fcad04e0a0d 41 lcd.putCH('E');
admcrae 1:9fcad04e0a0d 42 } else if (status == 1 && x <= 40 && y <= 30) {
admcrae 1:9fcad04e0a0d 43 eraserActive = !eraserActive;
admcrae 1:9fcad04e0a0d 44 } else {
admcrae 1:9fcad04e0a0d 45 if (eraserActive) {
admcrae 1:9fcad04e0a0d 46 lcd.gfx_RectangleFilled(x - 10, y - 10, x + 10, y + 10, Picaso::BLACK);
admcrae 1:9fcad04e0a0d 47 } else {
admcrae 1:9fcad04e0a0d 48 if (status == 1) {
admcrae 1:9fcad04e0a0d 49 prevX = x;
admcrae 1:9fcad04e0a0d 50 prevY = y;
admcrae 1:9fcad04e0a0d 51 }
admcrae 1:9fcad04e0a0d 52
admcrae 1:9fcad04e0a0d 53 // Moving, draw a continuous line until release event happen
admcrae 1:9fcad04e0a0d 54 lcd.gfx_Line(prevX, prevY, x, y, Picaso::WHITE);
admcrae 1:9fcad04e0a0d 55 }
admcrae 1:9fcad04e0a0d 56 }
admcrae 1:9fcad04e0a0d 57
admcrae 1:9fcad04e0a0d 58 prevX = x;
admcrae 1:9fcad04e0a0d 59 prevY = y;
admcrae 1:9fcad04e0a0d 60
admcrae 1:9fcad04e0a0d 61 }
admcrae 0:c39433c50bf6 62 }
admcrae 1:9fcad04e0a0d 63 }