Working Menu, additions to be made

Dependencies:   mbed

main.cpp

Committer:
jackmcgarley
Date:
2022-01-28
Revision:
7:51c21f7f6f12
Parent:
6:e6e7b99198fd
Child:
8:811fe7529732

File content as of revision 7:51c21f7f6f12:

/*
* Author - Jack McGarley - 18689007
* Date - January 2022
* Acknowledgements
* Craig A. Evans, University of Leeds, TMP102 Library, Feb 2016
* Dr Edmond Nurellari, University of Lincoln, Joystick & N5110 Libraries
*/

#include "mbed.h" // include the library header, ensure the library has been imported into the project
#include "Joystick.h"
#include "TMP102.h"
#include "N5110.h"

DigitalOut grn_led1(PTA1); // Designating LEDs from left to right
DigitalOut grn_led2(PTA2);
DigitalOut grn_led3(PTC2);
DigitalOut red_led1(PTC3);
DigitalOut red_led2(PTC4);
DigitalOut red_led3(PTD3);

DigitalIn button_A(PTB9); // Designating Buttons
DigitalIn button_B(PTD0);
DigitalIn button_X(PTC17);
DigitalIn button_Y(PTC12);
DigitalIn button_L(PTB18);
DigitalIn button_R(PTB3);
InterruptIn button_back(PTB19);
InterruptIn button_start(PTC5);

TMP102 tmp102(I2C_SDA,I2C_SCL); // Create TMP102 object

N5110 lcd(PTC9,PTC0,PTC7,PTD2,PTD1,PTC11); //Designating N5110 Display

Joystick joystick(PTB10,PTB11,PTC16); //Designating Joystick

Serial pc(USBTX,USBRX); // UART connection for PC

InterruptIn sw2(SW2); // K64F on-board switches
InterruptIn sw3(SW3);
InterruptIn buttonStart(PTC5);
InterruptIn buttonBack(PTB19);

DigitalOut r_led(LED_RED); // K64F on-board LEDs
DigitalOut g_led(LED_GREEN);
DigitalOut b_led(LED_BLUE);

// DECLARE VOIDS BEING USED IN CODE

void buttonStart_isr(); // Button Start interrupt service routine

void buttonBack_isr(); // Button Back interrupt service routine

void button_start_isr();

void button_back_isr();

volatile int S_flag, B_flag;
volatile int g_buttonStart_flag = 0; 
volatile int g_buttonBack_flag = 0; 

void error(); // error function hangs flashing an LED

void init_serial(); // Setting up the serial port

void init_K64F(); // Setting up the on-board LEDs and switches

void init_leds(); //Setting up the LEDs

void startup();

int main()
{
button_start.mode(PullDown);
button_start.rise(button_start_isr);
button_back.mode(PullDown);
button_back.rise(button_back_isr);

init_K64F(); // Initialising the board, serial port, LED'S and joystick
init_serial();
init_leds();
joystick.init();

tmp102.init(); // call the sensor init method using dot syntax

lcd.init(); // initialise display

lcd.setContrast(0.5); // Sets contrast to 0.5

startup(); // USE VOID NOW

while (1) {

// these are settings that I have adjusted
lcd.normalMode(); // normal colour mode
lcd.setBrightness(0.75); // put LED backlight on 75%

float T = tmp102.get_temperature(); // read temperature and print over serial port
pc.printf("T = %.1f K\n",T);

if (T > 37.2f) {
red_led1.write(0); // LED 1 will flash when you're in High Temp
pc.printf("High Temperature \n"); // Printing to the LCD
}

else if (T < 36.1f) {
red_led2.write(0); // LED 2 will flash when you're in Low Temp
printf("Low Temperature \n"); // Printing to the LCD
}
else if (T > 38) {
red_led3.write(0); // LED 3 will flash when you're beyond high temperature
printf("Call Your GP \n"); // Printing to the LCD
}

}
}
void init_serial() {
pc.baud(9600); // set to highest baud - ensure terminal software matches
}

void init_K64F()
{
r_led = 1; // on-board LEDs are active-low, so set pin high to turn them off.
g_led = 1;
b_led = 1;

// since the on-board switches have external pull-ups, we should disable the internal pull-down
// resistors that are enabled by default using InterruptIn
sw2.mode(PullNone);
sw3.mode(PullNone);

}
void init_leds()
{
red_led1.write(1); // LEDs are common anode (active-low) so writing a 1 will turn them off
red_led2.write(1);
red_led3.write(1);
grn_led1.write(1);
grn_led2.write(1);
grn_led3.write(0); // LED on to show the board is on
}
void lcd_sett()
{
//LCD SET
}
void startup() // VOID FUNCTION SETUP
{
S_flag = 0;
int select = 0;

while (1) {
char d = joystick.get_direction();

switch(select) {
    case 0:
        switch(d) {
        case N:
        select = 1;
        // printf("UP");
    break;
        case S:
        select = 1;
        // printf("Down");
    break;
    }
break;

    case 1:
        switch(d) {
        case N:
        select = 0;
        // printf("UP");
    break;
        case S:
        select = 0;
        // printf("Down");
    break;
    }
break;
}
// Menu

if (select == 0){
lcd.clear();
lcd.printString(" >Collection ", 0, 0);
lcd.printString(" View Data ", 0, 1);
lcd.printString(" Live Data ", 0, 2);
lcd.printString(" About ", 0, 3);
lcd.refresh();
wait(0.3);}


else if (select == 1) {
// Menu Selection
lcd.printString(" Collection ", 0, 0);
lcd.printString(" >View Data ", 0, 1);

lcd.refresh();
wait(0.3);
}
}
}

void welcome()
{
    // Welcome Screen 1                               
lcd.clear();
lcd.printString(" Jack McGarley ", 0, 0);
lcd.printString(" 18689007 ", 0, 1);
lcd.printString(" Schneider ", 0, 2);
lcd.printString(" Lincoln Uni ", 0, 3);
lcd.printString(" January 2022 ", 0, 4);
lcd.refresh();
wait(3);
// Welcome Screen 2
lcd.clear();
lcd.printString(" Temperature ", 0, 0);
lcd.printString(" Based ", 0, 1);
lcd.printString(" Smart Device ", 0, 2);
lcd.printString(" Health ", 0, 3);
lcd.printString(" Monitoring ", 0, 4);
lcd.refresh();
wait(3);
}
void button_start_isr()
{
S_flag = 1;
}

void button_back_isr()
{
B_flag = 1;
}