Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed LM75B C12832_lcd
Revision 1:6c219a7a64a1, committed 2021-03-22
- Comitter:
- andrewbw01
- Date:
- Mon Mar 22 20:38:46 2021 +0000
- Parent:
- 0:667ac0287afa
- Commit message:
- lab9 task 2-4 creg
Changed in this revision
| main.cpp | Show annotated file Show diff for this revision Revisions of this file |
--- a/main.cpp Mon Mar 22 16:57:58 2021 +0000
+++ b/main.cpp Mon Mar 22 20:38:46 2021 +0000
@@ -1,4 +1,4 @@
-// Lab 9 Task 1
+// Lab 9 Task 2-4
#include "mbed.h"
#include "C12832_lcd.h"
@@ -23,7 +23,7 @@
Serial pc(USBTX,USBRX); // Serial comms object
-
+int state; // Store program state - Display temp in 1=Celsius 2=Fahrenheit
char welcome_str[] ="Lab Number 9"; // Welcome string
@@ -31,14 +31,23 @@
// ***** Function prototypes *****
// Just specify the data types that are used by each function
//
-void pulse_LCD(DigitalOut);
-
-
+void pulse_LCD(DigitalOut, int); // Pulse the LED a number of times
int main()
{
+ // local variables
+ float temp_c = 0; // Initialse variable for current temperature in Celsius
+ float temp_f = 0; // Current temperature in Fahrenheit
+
+ int serial_char = 0; // Character buffer from serial port
+
+ // Initialise global variables
+ state = 1; // Display temperature in Celsius
+
+
+
if (t_sensor.open()) // Initialise temp sensor by calling .open()
{
//pc.printf("LM75B Device detected!\n"); // Debug message
@@ -50,31 +59,84 @@
while(1)
{
- pulse_LCD(led_1); // Pulse LED 1
+ if(pb_centre==1) // Center push button pressed
+ {
+ // pulse_LCD(led_1); // Pulse LED 1 to help debug
+
+ if(state==1) // Toggle program state from (1 to 2) or (2 to 1)
+ state=2;
+ else if(state==2)
+ state=1;
+
+ while(pb_centre) // loop while centr push button is held down
+ {}
+ }
+
+
+ // Check if data waiting in serial port buffer
+ if(pc.readable())
+ {
+ serial_char = pc.getc(); // Display chararacter on 7 segment
+
+ if(serial_char=='C' || serial_char=='c')
+ {
+ pc.printf("Temp = %.2f C \n", temp_c );
+ }
+ else if(serial_char=='F' || serial_char=='f')
+ {
+ pc.printf("Temp = %.2f F \n", temp_f );
+ }
+ else if(serial_char>='0' && serial_char<='9')
+ {
+ int pulse_cnt = serial_char-48; // Convert ASCII char to number
+
+ pulse_LCD(led_1, pulse_cnt); // Pulse the LED x times
+ }
+ }
+
+
+
+
+
lcd.cls(); // Clear the LCD Display
lcd.locate(35,1); // Locate cursor to text row 1 on LCD (col, row)
- lcd.printf("%s", welcome_str); //
+ lcd.printf("Lab Number: 9"); //
lcd.locate(35,10); // Locate cursor to test row 2 on LCD (col, row)
- // Read temp from sensor and display temperature in Celsius
- lcd.printf("Temp = %.2f C", (float)t_sensor.temp() );
+ // Read temperature from sensor in Celsius
+ temp_c = t_sensor.temp();
+
+ temp_f = (temp_c * 1.8)+32; // Calculate Fahrenheit
- wait(0.5); // Pause
+ if(state==1)
+ {
+ lcd.printf("Temp = %.2f C ", temp_c );
+ }
+ else if(state==2)
+ {
+ lcd.printf("Temp = %.2f F ", temp_f );
+ }
+
+
+
+ wait(0.1); // Pause
}
}
-// Pulse the specified LED on and off
+// Pulse the specified LED on and off a fixed number of times (count)
//
-void pulse_LCD(DigitalOut led_pin)
+void pulse_LCD(DigitalOut led_pin, int count)
{
- led_pin = 1;
- wait(0.2);
- led_pin = 0;
- wait(0.2);
+ for( int i = 0; i< count; i++)
+ {
+ led_pin = 1;
+ wait(0.2);
+ led_pin = 0;
+ wait(0.2);
+ }
}
-