An I2C text LCD library for Displaytronic ACM1602NI-FLW-FBW-M01

Dependents:   ACM1602NI_Demo ROBOT_v01 ROBOT_v02 Boku-Transmit ... more

Files at this revision

API Documentation at this revision

Comitter:
takuo
Date:
Sat Dec 14 14:45:38 2013 +0000
Parent:
3:bac80efb323e
Child:
5:c1dbbc2af9dd
Commit message:
Fixed the documents

Changed in this revision

ACM1602NI.cpp Show annotated file Show diff for this revision Revisions of this file
ACM1602NI.h Show annotated file Show diff for this revision Revisions of this file
--- a/ACM1602NI.cpp	Mon May 13 13:04:06 2013 +0000
+++ b/ACM1602NI.cpp	Sat Dec 14 14:45:38 2013 +0000
@@ -17,14 +17,16 @@
 #include "mbed.h"
 #include "ACM1602NI.h"
 
-#define _i2cSUCCESS 0
-#define _i2cFAILURE 1
+#define I2C_SUCCESS 0
+#define I2C_FAILURE 1
 
-ACM1602NI::ACM1602NI(I2C &i2c): _i2c(i2c) {
+ACM1602NI::ACM1602NI(I2C &i2c): _i2c(i2c)
+{
     init();
 }
 
-void ACM1602NI::init() {
+void ACM1602NI::init()
+{
     writeCommand(0x01);
     wait_ms(i2c_command_wait_ms);
     writeCommand(0x38);
@@ -36,7 +38,8 @@
     locate(0, 0);
 }
 
-int ACM1602NI::writeBytes(const char *data, int length, bool repeated) {
+int ACM1602NI::writeBytes(const char *data, int length, bool repeated)
+{
     wait_us(i2c_bit_wait_us);
     _i2c.start();
     for (int i = 0; i < length; i++) {
@@ -44,39 +47,41 @@
         if (_i2c.write(data[i]) != 1) {
             wait_us(i2c_bit_wait_us);
             _i2c.stop();
-            return _i2cFAILURE;
+            return I2C_FAILURE;
         }
     }
     if (!repeated) {
         wait_us(i2c_bit_wait_us);
         _i2c.stop();
     }
-    return _i2cSUCCESS;
+    return I2C_SUCCESS;
 }
 
-void ACM1602NI::character(int column, int row, int c) {
-    int a = address(column, row);
-    writeCommand(a);
+void ACM1602NI::character(int column, int row, int c)
+{
+    writeCommand(address(column, row));
     writeData(c);
 }
 
-void ACM1602NI::cls() {
+void ACM1602NI::cls()
+{
     writeCommand(0x01);
     wait_ms(i2c_command_wait_ms);
     locate(0, 0);
 }
 
-void ACM1602NI::locate(int column, int row) {
+void ACM1602NI::locate(int column, int row)
+{
     _column = column;
     _row = row;
 }
 
-int ACM1602NI::_putc(int value) {
+int ACM1602NI::_putc(int value)
+{
     if (value == '\n') {
         _column = 0;
         _row = (_row + 1) % rows();
-    }
-    else {
+    } else {
         character(_column, _row, value);
         _column++;
         if (_column >= columns()) {
@@ -87,29 +92,34 @@
     return value;
 }
 
-int ACM1602NI::_getc() {
+int ACM1602NI::_getc()
+{
     return -1;
 }
 
-void ACM1602NI::writeCommand(int command) {
+void ACM1602NI::writeCommand(int command)
+{
     char bs[3] = { i2c_addr, 0x00, command };
     writeBytes(bs, 3);
 }
 
-void ACM1602NI::writeData(int data) {
+void ACM1602NI::writeData(int data)
+{
     char bs[3] = { i2c_addr, 0x80, data };
     writeBytes(bs, 3);
 }
 
-int ACM1602NI::address(int column, int row) {
+int ACM1602NI::address(int column, int row)
+{
     return 0x80 + row * 0x40 + column;
 }
 
-int ACM1602NI::columns() {
+int ACM1602NI::columns()
+{
     return display_columns;
 }
 
-int ACM1602NI::rows() {
+int ACM1602NI::rows()
+{
     return display_rows;
 }
-
--- a/ACM1602NI.h	Mon May 13 13:04:06 2013 +0000
+++ b/ACM1602NI.h	Sat Dec 14 14:45:38 2013 +0000
@@ -20,17 +20,21 @@
 #include "mbed.h"
 
 /** An I2C text LCD library for Displaytronic ACM1602NI-FLW-FBW-M01.
+ * The device does not work with default I2C library due to its slow I2C responce.
+ * This library adds some extra waits so that the device can answer to the I2C commands.
  * The interface is basically the same as TextLCD by Simon Ford.
  *
  * @code
  * #include "mbed.h"
  * #include "ACM1602NI.h"
- * 
+ *
+ * // p9: sda, p10: scl
  * I2C i2c(p9, p10);
  * ACM1602NI lcd(i2c);
  *
  * int main() {
  *     lcd.printf("Hello, World!\n");
+ *     lcd.printf("ACM1602NI\n");
  * }
  * @endcode
  */