Test session

Dependencies:   FatFileSystem MCP23017 WattBob_TextLCD mbed

Fork of Assignment_2_herpe by Xavier Herpe

Revision:
4:48761259552a
diff -r 5883d1a2c5b0 -r 48761259552a lcd_helper.cpp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/lcd_helper.cpp	Tue Mar 14 14:46:43 2017 +0000
@@ -0,0 +1,85 @@
+/**
+ * Mostly just a wrapper around the LCD display.
+ *
+ * Author: Jacob Baungard Hansen
+ */
+
+#include "lcd_helper.h"
+
+/**
+ * Constructor setups the LCD Display
+ * and writes initial values needed for this project.
+ */
+LCDHelper::LCDHelper() {
+
+  this->par_port = new MCP23017(p9, p10, 0x40); // initialise 16-bit I/O chip
+  this->lcd = new WattBob_TextLCD(par_port); // initialise 2*26 char display 
+  par_port->write_bit(1,BL_BIT); // turn LCD backlight ON 
+  
+    lcd->cls(); // clear display
+    
+    this->print("Fr     d1   d2  ", "a1   a2   e  ");
+
+}
+
+LCDHelper::~LCDHelper() {
+    delete this->par_port;
+    delete this->lcd;
+}
+
+/**
+ * Clears the display and prints one line
+ */
+void LCDHelper::print(std::string line1) {
+    this->print(line1, std::string());
+}
+
+/**
+ * Clears the display and prints two lines
+ */
+void LCDHelper::print(std::string line1, std::string line2) {
+    lcd->cls(); // clear display
+    
+  lcd->locate(0,0); // set cursor to location (0,0) - top left corner
+  lcd->printf(line1.c_str()); 
+    
+    // only print line2 if it contains data
+    if (!line2.empty()) {
+    lcd->locate(1,0); // set cursor to location (1,0) - bottom left corner
+    lcd->printf(line2.c_str()); 
+    }
+}
+
+void LCDHelper::clear() {
+    lcd->cls(); // clear display
+}
+
+/**
+ *
+ *
+ * @Param   state       pointer to state object
+ */
+void LCDHelper::print_state(State * state) {
+    lcd->locate(0,3);
+    lcd->printf("%d", state->get_freq());
+    
+    lcd->locate(0,10);
+    lcd->printf("%d", state->get_digital_1());
+    
+    lcd->locate(0,15);
+    lcd->printf("%d", state->get_digital_2());
+    
+    lcd->locate(1,3);
+    // printf is very slow at converting from float to int
+    int avg_analog_1 = (int) floor( state->get_avg_analog_1() + 0.5);
+    lcd->printf("%d", avg_analog_1);
+        
+    lcd->locate(1,8);
+    // printf is very slow at converting from float to int
+    int avg_analog_2 = (int) floor( state->get_avg_analog_2() + 0.5);
+  lcd->printf("%d", avg_analog_2);
+    
+    lcd->locate(1,12);
+    lcd->printf("%d", state->get_error() );
+    
+}
\ No newline at end of file