Working Menu, additions to be made

Dependencies:   mbed

main.cpp

Committer:
jackmcgarley
Date:
2022-01-28
Revision:
4:143487eef742
Parent:
3:d1e1de4a712e
Child:
5:bec67fb2b2f9

File content as of revision 4:143487eef742:

/* 
* 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);
DigitalIn button_back(PTB19);
DigitalIn 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);
 
DigitalOut r_led(LED_RED); // K64F on-board LEDs 
DigitalOut g_led(LED_GRN);
DigitalOut b_led(LED_BLUE);
 

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
int main()
{
    
    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
    
    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.2) {
            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.1) {
            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
}