This is the test firmware for the interfaceBoard for the DIY 3D Printable Raspberry Pi Raman Spectrometer For more details visit http://hackaday.io/project/1279
Dependencies: SDFileSystem SPI_TFT_ILI9341 mbed
main.cpp@0:b513017ee369, 2014-08-15 (annotated)
- Committer:
- flatcat
- Date:
- Fri Aug 15 10:28:21 2014 +0000
- Revision:
- 0:b513017ee369
http://hackaday.io/project/1279
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
flatcat | 0:b513017ee369 | 1 | #include "stdio.h" |
flatcat | 0:b513017ee369 | 2 | #include "mbed.h" |
flatcat | 0:b513017ee369 | 3 | #include "SPI_TFT_ILI9341.h" |
flatcat | 0:b513017ee369 | 4 | #include "string" |
flatcat | 0:b513017ee369 | 5 | #include "Arial12x12.h" |
flatcat | 0:b513017ee369 | 6 | #include "Arial24x23.h" |
flatcat | 0:b513017ee369 | 7 | #include "Arial28x28.h" |
flatcat | 0:b513017ee369 | 8 | #include "font_big.h" |
flatcat | 0:b513017ee369 | 9 | #include "MPR121.h" |
flatcat | 0:b513017ee369 | 10 | |
flatcat | 0:b513017ee369 | 11 | I2C i2c(PB_9, PB_8); |
flatcat | 0:b513017ee369 | 12 | InterruptIn irq(PC_8); |
flatcat | 0:b513017ee369 | 13 | MPR121 touch_pad(i2c, irq, MPR121::ADDR_VSS); |
flatcat | 0:b513017ee369 | 14 | |
flatcat | 0:b513017ee369 | 15 | extern unsigned char p1[]; // the mbed logo graphic |
flatcat | 0:b513017ee369 | 16 | DigitalOut LCD_LED(D7); |
flatcat | 0:b513017ee369 | 17 | DigitalOut led1(LED1); |
flatcat | 0:b513017ee369 | 18 | |
flatcat | 0:b513017ee369 | 19 | SPI_TFT_ILI9341 TFT(D11, D12, D13, D8, D9, D10,"TFT"); // mosi, miso, sclk, cs, reset, dc |
flatcat | 0:b513017ee369 | 20 | |
flatcat | 0:b513017ee369 | 21 | Serial raspi(USBTX, USBRX); |
flatcat | 0:b513017ee369 | 22 | |
flatcat | 0:b513017ee369 | 23 | int splashScreen() |
flatcat | 0:b513017ee369 | 24 | { |
flatcat | 0:b513017ee369 | 25 | double s; |
flatcat | 0:b513017ee369 | 26 | int i; |
flatcat | 0:b513017ee369 | 27 | |
flatcat | 0:b513017ee369 | 28 | TFT.set_orientation(1); |
flatcat | 0:b513017ee369 | 29 | TFT.background(Black); |
flatcat | 0:b513017ee369 | 30 | TFT.foreground(White); |
flatcat | 0:b513017ee369 | 31 | TFT.cls(); |
flatcat | 0:b513017ee369 | 32 | |
flatcat | 0:b513017ee369 | 33 | TFT.set_orientation(0); |
flatcat | 0:b513017ee369 | 34 | TFT.background(Black); |
flatcat | 0:b513017ee369 | 35 | TFT.cls(); |
flatcat | 0:b513017ee369 | 36 | |
flatcat | 0:b513017ee369 | 37 | TFT.set_orientation(1); |
flatcat | 0:b513017ee369 | 38 | for (i=0; i<320; i++) { |
flatcat | 0:b513017ee369 | 39 | s =40 * sin((long double) i / 10 ); |
flatcat | 0:b513017ee369 | 40 | TFT.pixel(i+s,180 + (int)s+(s-i) ,Red); |
flatcat | 0:b513017ee369 | 41 | } |
flatcat | 0:b513017ee369 | 42 | |
flatcat | 0:b513017ee369 | 43 | for (i=0; i<320; i++) { |
flatcat | 0:b513017ee369 | 44 | s =40 * sin((long double) i / 10 ); |
flatcat | 0:b513017ee369 | 45 | TFT.pixel(i,180 + (int)s+(s-i) ,Green); |
flatcat | 0:b513017ee369 | 46 | } |
flatcat | 0:b513017ee369 | 47 | |
flatcat | 0:b513017ee369 | 48 | for (i=0; i<320; i++) { |
flatcat | 0:b513017ee369 | 49 | s =40 * sin((long double) i / 10 ); |
flatcat | 0:b513017ee369 | 50 | TFT.pixel(i-s,180 + (int)s+(s-i) ,Blue); |
flatcat | 0:b513017ee369 | 51 | } |
flatcat | 0:b513017ee369 | 52 | TFT.rect(0,0,320,240,Blue); |
flatcat | 0:b513017ee369 | 53 | TFT.set_font((unsigned char*) Neu42x35); |
flatcat | 0:b513017ee369 | 54 | TFT.locate(20,70); |
flatcat | 0:b513017ee369 | 55 | TFT.printf("meridian"); |
flatcat | 0:b513017ee369 | 56 | TFT.locate(110,100); |
flatcat | 0:b513017ee369 | 57 | TFT.printf("Scientific"); |
flatcat | 0:b513017ee369 | 58 | TFT.set_font((unsigned char*) Arial24x23); |
flatcat | 0:b513017ee369 | 59 | TFT.locate(30,140); |
flatcat | 0:b513017ee369 | 60 | TFT.printf("ramanSpectrometer"); |
flatcat | 0:b513017ee369 | 61 | TFT.set_font((unsigned char*) Arial12x12); |
flatcat | 0:b513017ee369 | 62 | TFT.locate(160,165); |
flatcat | 0:b513017ee369 | 63 | printf("version0.1a (2014)"); |
flatcat | 0:b513017ee369 | 64 | TFT.foreground(DarkGrey); |
flatcat | 0:b513017ee369 | 65 | TFT.locate(5,225); |
flatcat | 0:b513017ee369 | 66 | printf("http://www.meridian-scientific.com"); |
flatcat | 0:b513017ee369 | 67 | return 0; |
flatcat | 0:b513017ee369 | 68 | } |
flatcat | 0:b513017ee369 | 69 | |
flatcat | 0:b513017ee369 | 70 | int startupScreen() |
flatcat | 0:b513017ee369 | 71 | { |
flatcat | 0:b513017ee369 | 72 | TFT.foreground(White); |
flatcat | 0:b513017ee369 | 73 | TFT.background(Blue); |
flatcat | 0:b513017ee369 | 74 | TFT.cls(); |
flatcat | 0:b513017ee369 | 75 | TFT.set_font((unsigned char*) Arial24x23); |
flatcat | 0:b513017ee369 | 76 | TFT.locate(0,0); |
flatcat | 0:b513017ee369 | 77 | TFT.printf("meridianScientific"); |
flatcat | 0:b513017ee369 | 78 | TFT.locate(0,20); |
flatcat | 0:b513017ee369 | 79 | TFT.printf("ramanSpectrometer"); |
flatcat | 0:b513017ee369 | 80 | TFT.foreground(Green); |
flatcat | 0:b513017ee369 | 81 | TFT.set_font((unsigned char*) Arial12x12); |
flatcat | 0:b513017ee369 | 82 | TFT.locate(0,50); |
flatcat | 0:b513017ee369 | 83 | printf("> version0.1a (2014)"); |
flatcat | 0:b513017ee369 | 84 | TFT.locate(0,65); |
flatcat | 0:b513017ee369 | 85 | printf("> system initialization..."); |
flatcat | 0:b513017ee369 | 86 | TFT.locate(10,80); |
flatcat | 0:b513017ee369 | 87 | printf("waiting for raspiComm.."); |
flatcat | 0:b513017ee369 | 88 | return 0; |
flatcat | 0:b513017ee369 | 89 | } |
flatcat | 0:b513017ee369 | 90 | |
flatcat | 0:b513017ee369 | 91 | int shit() |
flatcat | 0:b513017ee369 | 92 | { |
flatcat | 0:b513017ee369 | 93 | TFT.foreground(White); |
flatcat | 0:b513017ee369 | 94 | TFT.background(Blue); |
flatcat | 0:b513017ee369 | 95 | TFT.cls(); |
flatcat | 0:b513017ee369 | 96 | TFT.set_font((unsigned char*) Arial24x23); |
flatcat | 0:b513017ee369 | 97 | TFT.locate(0,0); |
flatcat | 0:b513017ee369 | 98 | TFT.printf("meridianScientific"); |
flatcat | 0:b513017ee369 | 99 | TFT.locate(0,20); |
flatcat | 0:b513017ee369 | 100 | TFT.printf("ramanSpectrometer"); |
flatcat | 0:b513017ee369 | 101 | TFT.foreground(Green); |
flatcat | 0:b513017ee369 | 102 | TFT.set_font((unsigned char*) Arial12x12); |
flatcat | 0:b513017ee369 | 103 | return 0; |
flatcat | 0:b513017ee369 | 104 | } |
flatcat | 0:b513017ee369 | 105 | |
flatcat | 0:b513017ee369 | 106 | int setScr(){ |
flatcat | 0:b513017ee369 | 107 | TFT.foreground(White); |
flatcat | 0:b513017ee369 | 108 | TFT.background(Blue); |
flatcat | 0:b513017ee369 | 109 | TFT.cls(); |
flatcat | 0:b513017ee369 | 110 | TFT.set_font((unsigned char*) Neu42x35); |
flatcat | 0:b513017ee369 | 111 | return 0; |
flatcat | 0:b513017ee369 | 112 | } |
flatcat | 0:b513017ee369 | 113 | |
flatcat | 0:b513017ee369 | 114 | int main() |
flatcat | 0:b513017ee369 | 115 | { |
flatcat | 0:b513017ee369 | 116 | LCD_LED = 1; |
flatcat | 0:b513017ee369 | 117 | |
flatcat | 0:b513017ee369 | 118 | TFT.claim(stdout); |
flatcat | 0:b513017ee369 | 119 | |
flatcat | 0:b513017ee369 | 120 | touch_pad.init(); |
flatcat | 0:b513017ee369 | 121 | touch_pad.enable(); |
flatcat | 0:b513017ee369 | 122 | touch_pad.registerDump(raspi); |
flatcat | 0:b513017ee369 | 123 | |
flatcat | 0:b513017ee369 | 124 | splashScreen(); |
flatcat | 0:b513017ee369 | 125 | wait(5); |
flatcat | 0:b513017ee369 | 126 | startupScreen(); |
flatcat | 0:b513017ee369 | 127 | |
flatcat | 0:b513017ee369 | 128 | while(1) { |
flatcat | 0:b513017ee369 | 129 | led1=0; |
flatcat | 0:b513017ee369 | 130 | if(touch_pad.isPressed()) { |
flatcat | 0:b513017ee369 | 131 | uint16_t button_val = touch_pad.buttonPressed(); |
flatcat | 0:b513017ee369 | 132 | led1 = (button_val>0) ? 1 : 0; |
flatcat | 0:b513017ee369 | 133 | raspi.printf("button = 0x%04x\r\n", button_val); |
flatcat | 0:b513017ee369 | 134 | switch (button_val) { |
flatcat | 0:b513017ee369 | 135 | case 0: |
flatcat | 0:b513017ee369 | 136 | break; |
flatcat | 0:b513017ee369 | 137 | case 1: |
flatcat | 0:b513017ee369 | 138 | setScr(); |
flatcat | 0:b513017ee369 | 139 | TFT.locate(20,70); |
flatcat | 0:b513017ee369 | 140 | TFT.printf("UP"); |
flatcat | 0:b513017ee369 | 141 | TFT.locate(110,100); |
flatcat | 0:b513017ee369 | 142 | TFT.printf("ARROW"); |
flatcat | 0:b513017ee369 | 143 | break; |
flatcat | 0:b513017ee369 | 144 | case 2: |
flatcat | 0:b513017ee369 | 145 | setScr(); |
flatcat | 0:b513017ee369 | 146 | TFT.locate(20,70); |
flatcat | 0:b513017ee369 | 147 | TFT.printf("RIGHT"); |
flatcat | 0:b513017ee369 | 148 | TFT.locate(110,100); |
flatcat | 0:b513017ee369 | 149 | TFT.printf("ARROW"); |
flatcat | 0:b513017ee369 | 150 | break; |
flatcat | 0:b513017ee369 | 151 | case 4: |
flatcat | 0:b513017ee369 | 152 | setScr(); |
flatcat | 0:b513017ee369 | 153 | TFT.locate(20,70); |
flatcat | 0:b513017ee369 | 154 | TFT.printf("DOWN"); |
flatcat | 0:b513017ee369 | 155 | TFT.locate(110,100); |
flatcat | 0:b513017ee369 | 156 | TFT.printf("ARROW"); |
flatcat | 0:b513017ee369 | 157 | break; |
flatcat | 0:b513017ee369 | 158 | case 8: |
flatcat | 0:b513017ee369 | 159 | setScr(); |
flatcat | 0:b513017ee369 | 160 | TFT.locate(20,70); |
flatcat | 0:b513017ee369 | 161 | TFT.printf("LEFT"); |
flatcat | 0:b513017ee369 | 162 | TFT.locate(110,100); |
flatcat | 0:b513017ee369 | 163 | TFT.printf("ARROW"); |
flatcat | 0:b513017ee369 | 164 | break; |
flatcat | 0:b513017ee369 | 165 | case 16: |
flatcat | 0:b513017ee369 | 166 | startupScreen(); |
flatcat | 0:b513017ee369 | 167 | TFT.locate(20,120); |
flatcat | 0:b513017ee369 | 168 | TFT.printf("5"); |
flatcat | 0:b513017ee369 | 169 | break; |
flatcat | 0:b513017ee369 | 170 | case 32: |
flatcat | 0:b513017ee369 | 171 | startupScreen(); |
flatcat | 0:b513017ee369 | 172 | TFT.locate(30,120); |
flatcat | 0:b513017ee369 | 173 | TFT.printf("6"); |
flatcat | 0:b513017ee369 | 174 | break; |
flatcat | 0:b513017ee369 | 175 | case 64: |
flatcat | 0:b513017ee369 | 176 | startupScreen(); |
flatcat | 0:b513017ee369 | 177 | TFT.locate(10,130); |
flatcat | 0:b513017ee369 | 178 | TFT.printf("7"); |
flatcat | 0:b513017ee369 | 179 | break; |
flatcat | 0:b513017ee369 | 180 | case 128: |
flatcat | 0:b513017ee369 | 181 | startupScreen(); |
flatcat | 0:b513017ee369 | 182 | TFT.locate(20,130); |
flatcat | 0:b513017ee369 | 183 | TFT.printf("8"); |
flatcat | 0:b513017ee369 | 184 | break; |
flatcat | 0:b513017ee369 | 185 | case 256: |
flatcat | 0:b513017ee369 | 186 | startupScreen(); |
flatcat | 0:b513017ee369 | 187 | TFT.locate(30,130); |
flatcat | 0:b513017ee369 | 188 | TFT.printf("9"); |
flatcat | 0:b513017ee369 | 189 | break; |
flatcat | 0:b513017ee369 | 190 | default: |
flatcat | 0:b513017ee369 | 191 | break; |
flatcat | 0:b513017ee369 | 192 | } |
flatcat | 0:b513017ee369 | 193 | |
flatcat | 0:b513017ee369 | 194 | } |
flatcat | 0:b513017ee369 | 195 | } |
flatcat | 0:b513017ee369 | 196 | } |