LCD implementation of our project.

Dependencies:   mbed mbed-rtos MLX90614

main.cpp

Committer:
ovidiup13
Date:
2015-05-25
Revision:
4:024e6a9c2ebf
Parent:
3:688b62ff6474
Child:
5:5b1a8ad6c187

File content as of revision 4:024e6a9c2ebf:

#include "UserInterface.h"
#include "st7565LCD.h"

//define mbed pins
#define _MOSI p5
#define _SCLK p7
#define _RST p24
#define _A0 p8
#define _CS p6

ST7565 st7565(_MOSI, _SCLK, _CS, _RST, _A0); // mosi, sclk, cs, rst, a0
Serial pc(USBTX, USBRX); //rx, tx

//buttons
DigitalIn down(p18);
DigitalIn select(p19);

void init_config(UI *ui){
    //create main menu
    Menu * main_menu = new Menu(" Main Menu", &st7565);
    
    //create distance screens
    Measure *distance = new Measure(" Distance", &st7565, main_menu);
    distance->setDescription("Select Start from the menu below to start laser.");
    Measure *distance2 = new Measure(" Distance", &st7565, distance);
    distance2->setDescription("Press select button to fix target.");
    Measure *distance3 = new Measure(" Distance", &st7565, main_menu);
    distance3->setDescription("Distance to target is:");
    distance3->setResult(true);
    
    distance->setNext(" Start", distance2);
    distance2->setNext(" Select", distance3);
    distance3->setNext(" Start again", distance);
    main_menu->addItem(distance);
    
    //create point-to-point screens
    Measure *p2p = new Measure(" Point-to-Point", &st7565, main_menu);
    p2p->setDescription("Select Start from the menu to start laser for #1 target.");
    Measure *p2p2 = new Measure(" Point-to-Point", &st7565, p2p);
    p2p2->setDescription("Press select button to fix target #1.");
    Measure *p2p3 = new Measure(" Point-to-Point", &st7565, p2p2);
    p2p3->setDescription("Press select button to fix target #2.");
    Measure *p2p4 = new Measure(" Point-to-Point", &st7565, p2p3);
    p2p4->setDescription("Distance between targets is:");
    p2p4->setResult(true); //result screen
    
    p2p->setNext(" Start", p2p2);
    p2p2->setNext(" Select", p2p3);
    p2p3->setNext(" Select", p2p4);
    p2p4->setNext(" Start again", p2p);
    main_menu->addItem(p2p);
    
    //create level meter screen
    LevelMeter *lvl = new LevelMeter(&st7565, main_menu);
    main_menu->addItem(lvl);
    
    //create compass screen
    Compass *compass = new Compass(&st7565, main_menu);
    main_menu->addItem(compass);
    
    //create thermo screen
    Measure *thermo = new Measure(" Thermometer", &st7565, main_menu);
    thermo->setDescription("Press Start from the menu to start laser.");
    Measure *thermo2 = new Measure(" Thermometer", &st7565, thermo);
    thermo2->setDescription("Press select button to fix target.");
    Measure *thermo3 = new Measure(" Thermometer", &st7565, main_menu);
    thermo3->setDescription("Target temperature is:");
    thermo3->setResult(true);
    
    thermo->setNext(" Start", thermo2);
    thermo2->setNext(" Start", thermo3);
    thermo3->setNext(" Start", thermo);
    main_menu->addItem(thermo);
    
    //create settings menu
    Menu *settings = new Menu(" Settings", &st7565);
    main_menu->addItem(settings);
    
    //create header object
    Header * header = new Header(70, "", &st7565);
    
    //set header and current menu
    ui->setCurrent(main_menu);
    ui->setHeader(header);
    ui->init();
}

int main(){
    //create god UI object
    UI * ui = new UI(&st7565);
    //initialize configuration
    init_config(ui);
    
    while(1) {
        if(down){
            ui->update('s');
            wait(0.2);
        }
        else if(select){
            ui->update('y');
            wait(0.2);
        }
        /*
        else{
            char c = pc.getc();
            ui->update(c);
        }
        */
    }
}