Robot Arm Controller Library

Dependents:   PR_RobotArm lighthouse_2

Revision:
0:9f7b70e0186e
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/display.h	Thu Feb 16 23:57:45 2017 +0000
@@ -0,0 +1,140 @@
+/* University of York Robotics Laboratory Robot Arm Controller Board
+ * 
+ * Driver for the Midas 16x2 I2C LCD Display (MCCOG21605x6W) LCD  [Farnell part 2218942 or 2063206]
+ *
+ * File: display.cpp
+ *
+ * (C) Dept. Electronics & Computer Science, University of York
+ * 
+ * James Hilder, Alan Millard, Shuhei Miyashita, Homero Elizondo, Jon Timmis
+ *
+ *
+ * January 2017
+ *
+ *
+ */ 
+
+
+#ifndef DISPLAY_H
+#define DISPLAY_H
+
+
+/**
+ * Display class
+ * Functions for use with the Midas 16x2 I2C LCD Display (MCCOG21605x6W) LCD
+ * Farnell part 2218942 or 2063206
+ *
+ * Example:
+ * @code
+ * #include "robotarm.h"
+ *
+ * Robotarm arm;
+ *
+ * int main() {
+ *     arm.init();
+ *     display.clear_display;       //Clears display
+ *     display.set_position(0,2);   //Set cursor to row 0 column 2
+ *     display.write_string("YORK ROBOTICS");
+ *     display.set_position(1,3);   //Set cursor to row 1 column 3
+ *     display.write_string("LABORATORY");
+ * }
+ * @endcode
+*/
+class Display : public Stream
+{
+
+// Public Functions
+
+public:
+
+    /** Create the LCD Display object connected to the default pins
+     * (sda = p28, scl = p27)
+     */
+    Display();
+
+    /** Create the LCD Display object connected to specific pins
+     *
+     * @param sda pin   - default is p28
+     * @param scl pin   - default is p27
+     */
+    Display(PinName sda, PinName scl);
+
+    /** Clear the display
+    */
+    void clear_display(void);
+
+    /** Set cursor to home position
+    */
+    void home(void);
+
+    /** Print string message
+    * @param message - The null-terminated message to print
+    */
+    void write_string(char * message);
+
+    /** Print string message of given length
+    * @param message - The message to print
+    * @param length - The number of characters to display
+    */
+    void write_string(char * message, char length);
+
+    /** Set the row and column of cursor position
+    * @param row - The row of the display to set the cursor to (either 0 or 1)
+    * @param column - The column of the display to set the cursor to (range 0 to 15)
+    */
+    void set_position(char row, char column);
+
+    /** Enable or disable cursor
+    * @param enable - Set to 1 to enable the cursor visibility
+    */
+    void set_cursor(char enable);
+
+    /** Enable or disable cursor blink
+    * @param enable - Set to 1 to enable the cursor blinking mode
+    */
+    void set_blink(char enable);
+
+    /** Enable or disable display
+    * @param enable - Set to 1 to enable the display output
+    */
+    void set_display(char enable);
+
+    //Parts of initialisation routine
+    void post_init(void);
+    void post_post_init(void);
+
+    // Send a 1-byte control message to the display
+    int i2c_message(char byte);
+
+    // Default initialisation sequence for the display
+    void init(void);
+
+    int disp_putc(int c);
+
+
+private :
+
+    I2C _i2c;
+
+    char display_on;
+    char cursor_on;
+    char blink_on;
+
+    void _set_display();
+
+    virtual int _putc(int c);
+    virtual int _getc();
+
+};
+
+#endif // DISPLAY_H
+
+/*
+ * Copyright 2017 University of York
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
+ * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
+ * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
+ * See the License for the specific language governing permissions and limitations under the License.
+ */
\ No newline at end of file