Integration with mbed

Dependencies:   mbed Thermal uVGAIII

Committer:
Yehowshua
Date:
Wed Dec 12 23:44:40 2018 +0000
Revision:
2:9687e828e3d5
Parent:
0:824466ffa6da
Yehowshua Test Publish

Who changed what in which revision?

UserRevisionLine numberNew contents of line
zrussell3 0:824466ffa6da 1 #include "mbed.h"
zrussell3 0:824466ffa6da 2 #include "Thermal.h"
zrussell3 0:824466ffa6da 3 #include "USBHostKeyboard.h"
zrussell3 0:824466ffa6da 4 #include "uVGAIII.h"
zrussell3 0:824466ffa6da 5
zrussell3 0:824466ffa6da 6 #define SIZE_X 480
zrussell3 0:824466ffa6da 7 #define SIZE_Y 800
zrussell3 0:824466ffa6da 8
zrussell3 0:824466ffa6da 9 using namespace std;
zrussell3 0:824466ffa6da 10
zrussell3 0:824466ffa6da 11 // Debugging LEDs
zrussell3 0:824466ffa6da 12 DigitalOut led(LED1);
zrussell3 0:824466ffa6da 13 DigitalOut led2(LED2);
zrussell3 0:824466ffa6da 14 DigitalOut led3(LED3);
zrussell3 0:824466ffa6da 15 DigitalOut led4(LED4);
zrussell3 0:824466ffa6da 16
zrussell3 0:824466ffa6da 17 uVGAIII ecran(p9,p10,p11); // serial tx, serial rx, reset pin;
zrussell3 0:824466ffa6da 18 Thermal printer(p28, p27, 19200);
zrussell3 0:824466ffa6da 19
zrussell3 0:824466ffa6da 20 int verticalCursor = 2;
zrussell3 0:824466ffa6da 21 int horizontalCursor = 0;
zrussell3 0:824466ffa6da 22
zrussell3 0:824466ffa6da 23 char currentLine[48];
zrussell3 0:824466ffa6da 24 int currentLineIndex = 0;
zrussell3 0:824466ffa6da 25
zrussell3 0:824466ffa6da 26 // hardcode plot x^2
zrussell3 0:824466ffa6da 27 void plot(void const *)
zrussell3 0:824466ffa6da 28 {
zrussell3 0:824466ffa6da 29 int xOffset = 600;
zrussell3 0:824466ffa6da 30 int yOffset = 260;
zrussell3 0:824466ffa6da 31 int pastX = 0;
zrussell3 0:824466ffa6da 32 int pastY = 0;
zrussell3 0:824466ffa6da 33 int currentX = 0;
zrussell3 0:824466ffa6da 34 int currentY = 0;
zrussell3 0:824466ffa6da 35
zrussell3 0:824466ffa6da 36 for(double i = -20; i < 20; i++) {
zrussell3 0:824466ffa6da 37 //evaluate();
zrussell3 0:824466ffa6da 38 currentX = i*3 + xOffset;
zrussell3 0:824466ffa6da 39 currentY = yOffset-(i*i);
zrussell3 0:824466ffa6da 40 if(pastX == 0){
zrussell3 0:824466ffa6da 41 pastX = currentX;
zrussell3 0:824466ffa6da 42 pastY = currentY;
zrussell3 0:824466ffa6da 43 continue;
zrussell3 0:824466ffa6da 44 }
zrussell3 0:824466ffa6da 45 //ecran.line(pastX, pastY, currentX, currentY, RED);
zrussell3 0:824466ffa6da 46 //ecran.put_pixel(i*2 + xOffset, yOffset-(i*i),RED);
zrussell3 0:824466ffa6da 47 pastX = currentX;
zrussell3 0:824466ffa6da 48 pastY = currentY;
zrussell3 0:824466ffa6da 49 }
zrussell3 0:824466ffa6da 50 while(1) {
zrussell3 0:824466ffa6da 51 Thread::wait(200);
zrussell3 0:824466ffa6da 52 }
zrussell3 0:824466ffa6da 53 }
zrussell3 0:824466ffa6da 54
zrussell3 0:824466ffa6da 55 void onKeyCode(uint8_t key, uint8_t modifier) {
zrussell3 0:824466ffa6da 56
zrussell3 0:824466ffa6da 57 led3 = 1;
zrussell3 0:824466ffa6da 58
zrussell3 0:824466ffa6da 59 if(key == 0) {
zrussell3 0:824466ffa6da 60 led3 = 0;
zrussell3 0:824466ffa6da 61 return;
zrussell3 0:824466ffa6da 62 }
zrussell3 0:824466ffa6da 63
zrussell3 0:824466ffa6da 64 // Handle newline
zrussell3 0:824466ffa6da 65 if(key == 0x0A) {
zrussell3 0:824466ffa6da 66
zrussell3 0:824466ffa6da 67 // Check if going off end of screen
zrussell3 0:824466ffa6da 68 if(verticalCursor > 37) {
zrussell3 0:824466ffa6da 69 ecran.filled_rectangle(0, 0 , 399, 480, DGREY);
zrussell3 0:824466ffa6da 70 verticalCursor = 0;
zrussell3 0:824466ffa6da 71 } else {
zrussell3 0:824466ffa6da 72 // Move cursor to newline
zrussell3 0:824466ffa6da 73 verticalCursor+=2;
zrussell3 0:824466ffa6da 74 }
zrussell3 0:824466ffa6da 75
zrussell3 0:824466ffa6da 76 horizontalCursor = 0;
zrussell3 0:824466ffa6da 77
zrussell3 0:824466ffa6da 78 ecran.move_cursor(verticalCursor, horizontalCursor);
zrussell3 0:824466ffa6da 79
zrussell3 0:824466ffa6da 80 ecran.puts(currentLine);
zrussell3 0:824466ffa6da 81 printer.printf(currentLine);
zrussell3 0:824466ffa6da 82 printer.feed(2);
zrussell3 0:824466ffa6da 83
zrussell3 0:824466ffa6da 84 for(size_t i = 0; i < 48; i++) {
zrussell3 0:824466ffa6da 85 currentLine[i] = NULL;
zrussell3 0:824466ffa6da 86 }
zrussell3 0:824466ffa6da 87
zrussell3 0:824466ffa6da 88 currentLineIndex = 0;
zrussell3 0:824466ffa6da 89
zrussell3 0:824466ffa6da 90 led3 = 0;
zrussell3 0:824466ffa6da 91 return;
zrussell3 0:824466ffa6da 92 }
zrussell3 0:824466ffa6da 93
zrussell3 0:824466ffa6da 94 if(key == 0x08)
zrussell3 0:824466ffa6da 95 {
zrussell3 0:824466ffa6da 96 if(currentLineIndex != 0)
zrussell3 0:824466ffa6da 97 {
zrussell3 0:824466ffa6da 98 currentLineIndex--;
zrussell3 0:824466ffa6da 99 currentLine[currentLineIndex] = NULL;
zrussell3 0:824466ffa6da 100 }
zrussell3 0:824466ffa6da 101 led3 = 0;
zrussell3 0:824466ffa6da 102 return;
zrussell3 0:824466ffa6da 103 }
zrussell3 0:824466ffa6da 104
zrussell3 0:824466ffa6da 105 // Move the cursor 1 character over
zrussell3 0:824466ffa6da 106 //ecran.move_cursor(verticalCursor, horizontalCursor++);
zrussell3 0:824466ffa6da 107
zrussell3 0:824466ffa6da 108 // Append character to curret line string
zrussell3 0:824466ffa6da 109 currentLine[currentLineIndex] = (char)key;
zrussell3 0:824466ffa6da 110
zrussell3 0:824466ffa6da 111 if(currentLineIndex < 47) {
zrussell3 0:824466ffa6da 112 currentLineIndex++;
zrussell3 0:824466ffa6da 113 }
zrussell3 0:824466ffa6da 114
zrussell3 0:824466ffa6da 115 led3 = 0;
zrussell3 0:824466ffa6da 116 }
zrussell3 0:824466ffa6da 117
zrussell3 0:824466ffa6da 118 void keyboard_task(void const *) {
zrussell3 0:824466ffa6da 119
zrussell3 0:824466ffa6da 120 USBHostKeyboard keyboard;
zrussell3 0:824466ffa6da 121
zrussell3 0:824466ffa6da 122 while(1) {
zrussell3 0:824466ffa6da 123 // try to connect a USB keyboard
zrussell3 0:824466ffa6da 124 while(!keyboard.connect()) {
zrussell3 0:824466ffa6da 125 Thread::wait(1);
zrussell3 0:824466ffa6da 126 }
zrussell3 0:824466ffa6da 127
zrussell3 0:824466ffa6da 128 if(keyboard.connected()) led2 = 1;
zrussell3 0:824466ffa6da 129
zrussell3 0:824466ffa6da 130 // When connected, attach handler called on keyboard event
zrussell3 0:824466ffa6da 131 keyboard.attach(onKeyCode);
zrussell3 0:824466ffa6da 132
zrussell3 0:824466ffa6da 133 // Wait until the keyboard is disconnected
zrussell3 0:824466ffa6da 134 while(keyboard.connected())
zrussell3 0:824466ffa6da 135 Thread::wait(1);
zrussell3 0:824466ffa6da 136
zrussell3 0:824466ffa6da 137 led2 = 0;
zrussell3 0:824466ffa6da 138 }
zrussell3 0:824466ffa6da 139 }
zrussell3 0:824466ffa6da 140
zrussell3 0:824466ffa6da 141 int main() {
zrussell3 0:824466ffa6da 142 // Set up display
zrussell3 0:824466ffa6da 143 ecran.baudrate(300000);
zrussell3 0:824466ffa6da 144 ecran.screen_mode(LANDSCAPE);
zrussell3 0:824466ffa6da 145 ecran.graphics_parameters(RESOLUTION, 2);
zrussell3 0:824466ffa6da 146 ecran.touch_status();
zrussell3 0:824466ffa6da 147 //ecran.background_color(DGREY);
zrussell3 0:824466ffa6da 148 ecran.background_color(WHITE);
zrussell3 0:824466ffa6da 149 ecran.cls();
zrussell3 0:824466ffa6da 150
zrussell3 0:824466ffa6da 151 ecran.move_cursor(0, 0);
zrussell3 0:824466ffa6da 152 ecran.char_width('d');
zrussell3 0:824466ffa6da 153 ecran.char_height('d');
zrussell3 0:824466ffa6da 154 ecran.text_fgd_color(WHITE);
zrussell3 0:824466ffa6da 155 ecran.text_bgd_color(DGREY);
zrussell3 0:824466ffa6da 156 ecran.puts("Booting up...");
zrussell3 0:824466ffa6da 157
zrussell3 0:824466ffa6da 158 ecran.line(400, 0 , 400, 480, RED);
zrussell3 0:824466ffa6da 159
zrussell3 0:824466ffa6da 160 // Use old style threading
zrussell3 0:824466ffa6da 161 Thread keyboardTask(keyboard_task, NULL, osPriorityNormal, 256 * 4);
zrussell3 0:824466ffa6da 162
zrussell3 0:824466ffa6da 163 ecran.move_cursor(2, 0);
zrussell3 0:824466ffa6da 164 ecran.puts("Ready!");
zrussell3 0:824466ffa6da 165
zrussell3 0:824466ffa6da 166 //printer.printf("Printing from main");
zrussell3 0:824466ffa6da 167 //printer.feed(2);
zrussell3 0:824466ffa6da 168 //printer.test();
zrussell3 0:824466ffa6da 169
zrussell3 0:824466ffa6da 170 // Clear currentLine array before using
zrussell3 0:824466ffa6da 171 for(size_t i = 0; i < 48; i++) {
zrussell3 0:824466ffa6da 172 currentLine[i] = NULL;
zrussell3 0:824466ffa6da 173 }
zrussell3 0:824466ffa6da 174
zrussell3 0:824466ffa6da 175 //Thread drawPlot(plot, NULL, osPriorityNormal, 256*4);
zrussell3 0:824466ffa6da 176
zrussell3 0:824466ffa6da 177 while(1) {
zrussell3 0:824466ffa6da 178 led=!led;
zrussell3 0:824466ffa6da 179 Thread::wait(500); // Wait .5s in main thread
zrussell3 0:824466ffa6da 180 }
zrussell3 0:824466ffa6da 181 }