Team Alpha / Mbed 2 deprecated UserIntefaceLCD

Dependencies:   mbed mbed-rtos MLX90614

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

00001 #include "UserInterface.h"
00002 #include "st7565LCD.h"
00003 
00004 #define WAIT_TIME 0.3
00005 
00006 ST7565 st7565(_MOSI, _SCLK, _CS, _RST, _A0); // mosi, sclk, cs, rst, a0
00007 Serial pc(USBTX, USBRX); //rx, tx
00008 
00009 //buttons
00010 DigitalIn down(p19);
00011 DigitalIn select(p22);
00012 DigitalIn up(p20);
00013 
00014 //laser
00015 DigitalOut laser_mod(p21, 0);
00016 
00017 //gyro and thermo digital out
00018 DigitalOut gyro(P0_29, 0); //pin31
00019 DigitalOut thermo(P0_30, 0); //pin32
00020 
00021 int main(){
00022     //create god UI object
00023     UI * ui = new UI(&st7565);
00024     //initialize configuration
00025     //create main menu
00026     Menu * main_menu = new Menu(" Main Menu", &st7565);
00027     
00028     
00029     //create distance screens
00030     Measure *distance = new Measure(" Distance", &st7565, main_menu, &laser_mod);
00031     distance->setDescription("Select Start from the menu below to start laser."); 
00032     main_menu->addItem(distance);
00033     
00034     /*
00035     //create point-to-point screens
00036     Measure *p2p = new Measure(" Point-to-Point", &st7565, main_menu);
00037     p2p->setDescription("Select Start from the menu to start laser for #1 target.");
00038     Measure *p2p2 = new Measure(" Point-to-Point", &st7565, p2p);
00039     p2p2->setDescription("Press select button to fix target #1.");
00040     Measure *p2p3 = new Measure(" Point-to-Point", &st7565, p2p2);
00041     p2p3->setDescription("Press select button to fix target #2.");
00042     Measure *p2p4 = new Measure(" Point-to-Point", &st7565, p2p3);
00043     p2p4->setDescription("Distance between targets is:");
00044     p2p4->setResult(true); //result screen
00045     
00046     p2p->setNext(" Start", p2p2);
00047     p2p2->setNext(" Select", p2p3);
00048     p2p3->setNext(" Select", p2p4);
00049     p2p4->setNext(" Start again", p2p);
00050     main_menu->addItem(p2p);
00051     */
00052     
00053     //create level meter screen
00054     LevelMeter *lvl = new LevelMeter(&st7565, main_menu, &gyro, &thermo);
00055     main_menu->addItem(lvl);
00056     
00057     //create compass screen
00058     Compass *compass = new Compass(&st7565, main_menu, &gyro, &thermo);
00059     main_menu->addItem(compass);
00060     
00061     /*
00062     //create thermo screen
00063     Thermometer *thermo_screen = new Thermometer(&st7565, main_menu, &gyro, &thermo);
00064     main_menu->addItem(thermo_screen);
00065     */
00066     
00067     /*
00068     Measure *thermo = new Measure(" Thermometer", &st7565, main_menu);
00069     thermo->setDescription("Press Start from the menu to start laser.");
00070     Measure *thermo2 = new Measure(" Thermometer", &st7565, thermo);
00071     thermo2->setDescription("Press select button to fix target.");
00072     Measure *thermo3 = new Measure(" Thermometer", &st7565, main_menu);
00073     thermo3->setDescription("Target temperature is:");
00074     thermo3->setResult(true);
00075     
00076     thermo->setNext(" Start", thermo2);
00077     thermo2->setNext(" Start", thermo3);
00078     thermo3->setNext(" Start", thermo);
00079     */
00080     
00081     //create header object
00082     Header * header = new Header("", &st7565);
00083     
00084     //set header and current menu
00085     ui->setCurrent(main_menu);
00086     ui->setHeader(header);
00087     ui->init();
00088     
00089     while(1) {
00090         if(select){
00091             wait(0.1);
00092             //printf("select\n");
00093             ui->update('y'); //ascii 121
00094             wait(WAIT_TIME);
00095         }
00096         else if(up){
00097             wait(0.1);
00098             //printf("up\n");
00099             ui->update('w'); //ascii 119
00100             wait(WAIT_TIME);
00101         }
00102         else if(down){
00103             wait(0.1);
00104             //printf("down\n");
00105             ui->update('s'); //ascii 115
00106             wait(WAIT_TIME);
00107         }
00108     }
00109 }