Updated following fixing of Joystick 'Bounce'. Also insertion of a Starting Temp to be compared against following user selection.

Dependencies:   mbed N5110v02 TMP102 JoystickIoT

Revision:
2:e0091b5311f1
Parent:
1:dd5fb735acf1
Child:
3:80c1eba78f9b
diff -r dd5fb735acf1 -r e0091b5311f1 main.cpp
--- a/main.cpp	Fri Feb 05 17:25:03 2016 +0000
+++ b/main.cpp	Fri Dec 17 08:34:45 2021 +0000
@@ -1,74 +1,100 @@
-/* 
-
-2645_I2C_TMP102_Library
-
-Sample code from ELEC2645 Week 17 Lab
-
-Demonstrates how to re-factor the TMP102 code into a library
-
-(c) Craig A. Evans, University of Leeds, Feb 2016
-
+/* * Print String
+* @ File main.cpp
+* Prints a string of characters to the screen buffer, string is cut off after the 83rd  pixel.
+* @param x - the column number (0 to 83)
+* @param y - the row number (0-5) - the display is split into 6 banks - each bank can be considered a row
+* @author - David Leaming - 25574043
+* @ Date - December 2021
+*
+* 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 "mbed.h"                                                               // include the library header, ensure the library has been imported into the project
 #include "TMP102.h"
+#include "N5110.h"
+#include "Joystick.h"
+#include "Bitmap.h"
 
-// Create TMP102 object
-TMP102 tmp102(I2C_SDA,I2C_SCL);  
-// UART connection for PC
-Serial pc(USBTX,USBRX);
+TMP102 tmp102(I2C_SDA,I2C_SCL);                                                 // Create TMP102 object  
+
+//        VCC,SCE,RST,D/C,MOSI,SCLK,LED 
+N5110 lcd(PTC9,PTC0,PTC7,PTD2,PTD1,PTC11);                                      // Create Screen Object - K64F - pwr from 3V3, GND Pin also needs connecting
+
 
-// K64F on-board LEDs 
-DigitalOut r_led(LED_RED);
-DigitalOut g_led(LED_GREEN);
-DigitalOut b_led(LED_BLUE);
-// K64F on-board switches
-InterruptIn sw2(SW2);
-InterruptIn sw3(SW3);
+Serial pc(USBTX,USBRX);                                                         // UART connection for PC
+
+DigitalOut r_led(LED_RED);                                                      // K64F on-board LEDs 
+DigitalOut g_led(LED_GREEN);                                                    // K64F on-board LEDs 
+DigitalOut b_led(LED_BLUE);                                                     // K64F on-board LEDs 
 
-// error function hangs flashing an LED
-void error();
-// setup serial port
-void init_serial();
-// set-up the on-board LEDs and switches
-void init_K64F();
+InterruptIn sw2(SW2);                                                           // K64F on-board switches
+InterruptIn sw3(SW3);                                                           // K64F on-board switches
+
+void error();                                                                   // error function hangs flashing an LED
+void init_serial();                                                             // setup serial port
+void init_K64F();                                                               // set-up the on-board LEDs and switches
 
 int main()
 {
-    // initialise the board and serial port
-    init_K64F();
-    init_serial(); 
-    // call the sensor init method using dot syntax
-    tmp102.init();
+    init_K64F();                                                                // initialise the board
+    init_serial();                                                              // initialise the serial port
+    
+    tmp102.init();                                                              // call the sensor init method using dot syntax
+    lcd.init();                                                                 // initialise display
+    
+    lcd.setContrast(0.5);                                                       // change set contrast in range 0.0 to 1.0
     
     while (1) {
         
-        // read temperature and print over serial port
-        float T = tmp102.get_temperature();
-        pc.printf("T = %f K\n",T);
-        // small delay - 1s to match the update rate of the sensor (1 Hz)
-        wait(1.0);
+        lcd.normalMode();                                                       // normal colour mode
+        lcd.setBrightness(0.5);                                                 // put LED backlight on 50%
+        lcd.clear();                                                            // clear buffer at start of every loop
+        
+        char buffer[14];                                                        // each character is 6 pixels wide, screen is 84 pixels (84/6 = 14)
+
+        
+        int temperature = 27;
+        int length = sprintf(buffer,"T = %2d C",temperature);                   // print formatted data to buffer - it is important the format specifier ensures the length will fit in the buffer
+        if (length <= 14)                                                       // if string will fit on display (assuming printing at x=0)
+        lcd.printString(buffer,0,1);                                            // display on screen
+
+        float pressure = 1012.3;                                                // same idea with floats
+        length = sprintf(buffer,"P = %.2f mb",pressure);
+        if (length <= 14)
+        lcd.printString(buffer,0,2);
+
+        lcd.refresh();                                                          // need to refresh display after setting pixels or writing strings
+        wait(2.0);     
+        
+        lcd.clear();                                                            // clear buffer at start of every loop
+        lcd.refresh();                                                          // need to refresh display after setting pixels or writing strings 
+        wait(0.5);
+        
+        float T = tmp102.get_temperature();                                     // read temperature and print to lcd
+        length = sprintf(buffer,"T = %.2f C",T);
+        if (length <= 14)
+        lcd.printString(buffer,0,2);
+        lcd.refresh();                                                          // need to refresh display after setting pixels or writing strings 
+        wait(2.0);
         
     }
 
 }
 
 void init_serial() {
-    // set to highest baud - ensure terminal software matches
-    pc.baud(115200); 
+    pc.baud(115200);                                                            // set to highest baud - ensure terminal software matches
 }
 
 void init_K64F() 
 {
-    // on-board LEDs are active-low, so set pin high to turn them off.
-    r_led = 1;
-    g_led = 1;
-    b_led = 1;   
+    r_led = 1;                                                                  // on-board LEDs are active-low, so set pin high to turn them off.
+    g_led = 1;                                                                  // on-board LEDs are active-low, so set pin high to turn them off.
+    b_led = 1;                                                                  // on-board LEDs are active-low, so set pin high to turn them off.
     
-    // 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);
+    sw2.mode(PullNone);                                                         // since the on-board switches have external pull-ups, we should disable the internal pull-down
+    sw3.mode(PullNone);                                                         // resistors that are enabled by default using InterruptIn
 
 }