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
Diff: main.cpp
- Revision:
- 0:b513017ee369
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Fri Aug 15 10:28:21 2014 +0000 @@ -0,0 +1,196 @@ +#include "stdio.h" +#include "mbed.h" +#include "SPI_TFT_ILI9341.h" +#include "string" +#include "Arial12x12.h" +#include "Arial24x23.h" +#include "Arial28x28.h" +#include "font_big.h" +#include "MPR121.h" + +I2C i2c(PB_9, PB_8); +InterruptIn irq(PC_8); +MPR121 touch_pad(i2c, irq, MPR121::ADDR_VSS); + +extern unsigned char p1[]; // the mbed logo graphic +DigitalOut LCD_LED(D7); +DigitalOut led1(LED1); + +SPI_TFT_ILI9341 TFT(D11, D12, D13, D8, D9, D10,"TFT"); // mosi, miso, sclk, cs, reset, dc + +Serial raspi(USBTX, USBRX); + +int splashScreen() +{ + double s; + int i; + + TFT.set_orientation(1); + TFT.background(Black); + TFT.foreground(White); + TFT.cls(); + + TFT.set_orientation(0); + TFT.background(Black); + TFT.cls(); + + TFT.set_orientation(1); + for (i=0; i<320; i++) { + s =40 * sin((long double) i / 10 ); + TFT.pixel(i+s,180 + (int)s+(s-i) ,Red); + } + + for (i=0; i<320; i++) { + s =40 * sin((long double) i / 10 ); + TFT.pixel(i,180 + (int)s+(s-i) ,Green); + } + + for (i=0; i<320; i++) { + s =40 * sin((long double) i / 10 ); + TFT.pixel(i-s,180 + (int)s+(s-i) ,Blue); + } + TFT.rect(0,0,320,240,Blue); + TFT.set_font((unsigned char*) Neu42x35); + TFT.locate(20,70); + TFT.printf("meridian"); + TFT.locate(110,100); + TFT.printf("Scientific"); + TFT.set_font((unsigned char*) Arial24x23); + TFT.locate(30,140); + TFT.printf("ramanSpectrometer"); + TFT.set_font((unsigned char*) Arial12x12); + TFT.locate(160,165); + printf("version0.1a (2014)"); + TFT.foreground(DarkGrey); + TFT.locate(5,225); + printf("http://www.meridian-scientific.com"); + return 0; +} + +int startupScreen() +{ + TFT.foreground(White); + TFT.background(Blue); + TFT.cls(); + TFT.set_font((unsigned char*) Arial24x23); + TFT.locate(0,0); + TFT.printf("meridianScientific"); + TFT.locate(0,20); + TFT.printf("ramanSpectrometer"); + TFT.foreground(Green); + TFT.set_font((unsigned char*) Arial12x12); + TFT.locate(0,50); + printf("> version0.1a (2014)"); + TFT.locate(0,65); + printf("> system initialization..."); + TFT.locate(10,80); + printf("waiting for raspiComm.."); + return 0; +} + +int shit() +{ + TFT.foreground(White); + TFT.background(Blue); + TFT.cls(); + TFT.set_font((unsigned char*) Arial24x23); + TFT.locate(0,0); + TFT.printf("meridianScientific"); + TFT.locate(0,20); + TFT.printf("ramanSpectrometer"); + TFT.foreground(Green); + TFT.set_font((unsigned char*) Arial12x12); + return 0; +} + +int setScr(){ + TFT.foreground(White); + TFT.background(Blue); + TFT.cls(); + TFT.set_font((unsigned char*) Neu42x35); + return 0; +} + +int main() +{ + LCD_LED = 1; + + TFT.claim(stdout); + + touch_pad.init(); + touch_pad.enable(); + touch_pad.registerDump(raspi); + + splashScreen(); + wait(5); + startupScreen(); + + while(1) { + led1=0; + if(touch_pad.isPressed()) { + uint16_t button_val = touch_pad.buttonPressed(); + led1 = (button_val>0) ? 1 : 0; + raspi.printf("button = 0x%04x\r\n", button_val); + switch (button_val) { + case 0: + break; + case 1: + setScr(); + TFT.locate(20,70); + TFT.printf("UP"); + TFT.locate(110,100); + TFT.printf("ARROW"); + break; + case 2: + setScr(); + TFT.locate(20,70); + TFT.printf("RIGHT"); + TFT.locate(110,100); + TFT.printf("ARROW"); + break; + case 4: + setScr(); + TFT.locate(20,70); + TFT.printf("DOWN"); + TFT.locate(110,100); + TFT.printf("ARROW"); + break; + case 8: + setScr(); + TFT.locate(20,70); + TFT.printf("LEFT"); + TFT.locate(110,100); + TFT.printf("ARROW"); + break; + case 16: + startupScreen(); + TFT.locate(20,120); + TFT.printf("5"); + break; + case 32: + startupScreen(); + TFT.locate(30,120); + TFT.printf("6"); + break; + case 64: + startupScreen(); + TFT.locate(10,130); + TFT.printf("7"); + break; + case 128: + startupScreen(); + TFT.locate(20,130); + TFT.printf("8"); + break; + case 256: + startupScreen(); + TFT.locate(30,130); + TFT.printf("9"); + break; + default: + break; + } + + } + } +}