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

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?

UserRevisionLine numberNew 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 }