Yuji Notsu
/
Groove-Base-Shield
コネクタ4 : LED コネクタ7 : Buzzer コネクタ13 : Relay コネクタUART:Serial LCD 4つを動かしています
Revision 0:3acc8fa91b79, committed 2014-01-16
- Comitter:
- y_notsu
- Date:
- Thu Jan 16 13:27:49 2014 +0000
- Commit message:
- LPC800 MAX?Grove-Base Shield???????????????????????????
Changed in this revision
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/SerialLCD.cpp Thu Jan 16 13:27:49 2014 +0000 @@ -0,0 +1,220 @@ +/* + SerialLCD.h - Serial LCD driver Library + 2010 Copyright (c) Seeed Technology Inc. All right reserved. + + Original Author: Jimbo.We + Contribution: Visweswara R + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ +#include "mbed.h" +#include "SerialLCD.h" +/* +SerialLCD::SerialLCD(uint8_t rx, uint8_t tx):SoftwareSerial(rx,tx) +{ + +} +*/ +/********** High level commands, for the user! **********/ +/* +// Initialize the Serial LCD Driver. SerialLCD Module initiates the communication. +void SerialLCD::begin() +{ + SoftwareSerial::begin(9600); + delay(2); + SoftwareSerial::write(SLCD_CONTROL_HEADER); + SoftwareSerial::write(SLCD_POWER_OFF); + delay(1); + SoftwareSerial::write(SLCD_CONTROL_HEADER); + SoftwareSerial::write(SLCD_POWER_ON); + delay(1); + SoftwareSerial::write(SLCD_INIT_ACK); + while(1) + { + if (SoftwareSerial::available() > 0 &&SoftwareSerial::read()==SLCD_INIT_DONE) + break; + } + delay(2); +} + +// Clear the display +void SerialLCD::clear() +{ + SoftwareSerial::write(SLCD_CONTROL_HEADER); + SoftwareSerial::write(SLCD_CLEAR_DISPLAY); +} + +// Return to home(top-left corner of LCD) +void SerialLCD::home() +{ + SoftwareSerial::write(SLCD_CONTROL_HEADER); + SoftwareSerial::write(SLCD_RETURN_HOME); + delay(2);//this command needs more time; +} + +// Set Cursor to (Column,Row) Position +void SerialLCD::setCursor(uint8_t column, uint8_t row) +{ + SoftwareSerial::write(SLCD_CONTROL_HEADER); + SoftwareSerial::write(SLCD_CURSOR_HEADER); //cursor header command + SoftwareSerial::write(column); + SoftwareSerial::write(row); +} + +// Switch the display off without clearing RAM +void SerialLCD::noDisplay() +{ + SoftwareSerial::write(SLCD_CONTROL_HEADER); + SoftwareSerial::write(SLCD_DISPLAY_OFF); +} + +// Switch the display on +void SerialLCD::display() +{ + SoftwareSerial::write(SLCD_CONTROL_HEADER); + SoftwareSerial::write(SLCD_DISPLAY_ON); +} + +// Switch the underline cursor off +void SerialLCD::noCursor() +{ + SoftwareSerial::write(SLCD_CONTROL_HEADER); + SoftwareSerial::write(SLCD_CURSOR_OFF); +} + +// Switch the underline cursor on +void SerialLCD::cursor() +{ + SoftwareSerial::write(SLCD_CONTROL_HEADER); + SoftwareSerial::write(SLCD_CURSOR_ON); +} + +// Switch off the blinking cursor +void SerialLCD::noBlink() +{ + SoftwareSerial::write(SLCD_CONTROL_HEADER); + SoftwareSerial::write(SLCD_BLINK_OFF); +} + +// Switch on the blinking cursor +void SerialLCD::blink() +{ + SoftwareSerial::write(SLCD_CONTROL_HEADER); + SoftwareSerial::write(SLCD_BLINK_ON); +} + +// Scroll the display left without changing the RAM +void SerialLCD::scrollDisplayLeft(void) +{ + SoftwareSerial::write(SLCD_CONTROL_HEADER); + SoftwareSerial::write(SLCD_SCROLL_LEFT); +} + +// Scroll the display right without changing the RAM +void SerialLCD::scrollDisplayRight(void) +{ + SoftwareSerial::write(SLCD_CONTROL_HEADER); + SoftwareSerial::write(SLCD_SCROLL_RIGHT); +} + +// Set the text flow "Left to Right" +void SerialLCD::leftToRight(void) +{ + SoftwareSerial::write(SLCD_CONTROL_HEADER); + SoftwareSerial::write(SLCD_LEFT_TO_RIGHT); +} + +// Set the text flow "Right to Left" +void SerialLCD::rightToLeft(void) +{ + SoftwareSerial::write(SLCD_CONTROL_HEADER); + SoftwareSerial::write(SLCD_RIGHT_TO_LEFT); +} + +// This will 'right justify' text from the cursor +void SerialLCD::autoscroll(void) +{ + SoftwareSerial::write(SLCD_CONTROL_HEADER); + SoftwareSerial::write(SLCD_AUTO_SCROLL); +} + +// This will 'left justify' text from the cursor +void SerialLCD::noAutoscroll(void) +{ + SoftwareSerial::write(SLCD_CONTROL_HEADER); + SoftwareSerial::write(SLCD_NO_AUTO_SCROLL); +} +void SerialLCD::Power(void) +{ + SoftwareSerial::write(SLCD_CONTROL_HEADER); + SoftwareSerial::write(SLCD_POWER_ON); +} +void SerialLCD::noPower(void) +{ + SoftwareSerial::write(SLCD_CONTROL_HEADER); + SoftwareSerial::write(SLCD_POWER_OFF); +} +//Turn off the backlight +void SerialLCD::noBacklight(void) +{ + SoftwareSerial::write(SLCD_CONTROL_HEADER); + SoftwareSerial::write(SLCD_BACKLIGHT_OFF); +} +//Turn on the back light +void SerialLCD::backlight(void) +{ + SoftwareSerial::write(SLCD_CONTROL_HEADER); + SoftwareSerial::write(SLCD_BACKLIGHT_ON); +} +// Print Commands + +void SerialLCD::print(uint8_t b) +{ + SoftwareSerial::write(SLCD_CHAR_HEADER); + SoftwareSerial::write(b); +} +void SerialLCD::print(const char b[]) +{ + SoftwareSerial::write(SLCD_CHAR_HEADER); + SoftwareSerial::write(b); +} + +void SerialLCD::print(unsigned long n, uint8_t base) +{ + unsigned char buf[8 * sizeof(long)]; // Assumes 8-bit chars. + unsigned long i = 0; + + if (base == 0) print(n); + + else if(base!=0) + { + if (n == 0) { + print('0'); + return; + } + + while (n > 0) { + buf[i++] = n % base; + n /= base; + } + + for (; i > 0; i--) + print((char) (buf[i - 1] < 10 ? + '0' + buf[i - 1] : + 'A' + buf[i - 1] - 10)); + } +} + +*/
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/SerialLCD.h Thu Jan 16 13:27:49 2014 +0000 @@ -0,0 +1,97 @@ +/* + SerialLCD.h - Serial LCD driver Library + 2010 Copyright (c) Seeed Technology Inc. All right reserved. + + Original Author: Jimbo.We + Contribution: Visweswara R + + Modified 15 March,2012 for Arduino 1.0 IDE + by Frankie.Chu + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#include "mbed.h" + +#ifndef SERIAL_LCD_H +#define SERIAL_LCD_H + + +//Initialization Commands or Responses + +#define SLCD_INIT 0xA3 +#define SLCD_INIT_ACK 0xA5 +#define SLCD_INIT_DONE 0xAA + +//WorkingMode Commands or Responses +#define SLCD_CONTROL_HEADER 0x9F +#define SLCD_CHAR_HEADER 0xFE +#define SLCD_CURSOR_HEADER 0xFF +#define SLCD_CURSOR_ACK 0x5A + +#define SLCD_RETURN_HOME 0x61 +#define SLCD_DISPLAY_OFF 0x63 +#define SLCD_DISPLAY_ON 0x64 +#define SLCD_CLEAR_DISPLAY 0x65 +#define SLCD_CURSOR_OFF 0x66 +#define SLCD_CURSOR_ON 0x67 +#define SLCD_BLINK_OFF 0x68 +#define SLCD_BLINK_ON 0x69 +#define SLCD_SCROLL_LEFT 0x6C +#define SLCD_SCROLL_RIGHT 0x72 +#define SLCD_NO_AUTO_SCROLL 0x6A +#define SLCD_AUTO_SCROLL 0x6D +#define SLCD_LEFT_TO_RIGHT 0x70 +#define SLCD_RIGHT_TO_LEFT 0x71 +#define SLCD_POWER_ON 0x83 +#define SLCD_POWER_OFF 0x82 +#define SLCD_INVALIDCOMMAND 0x46 +#define SLCD_BACKLIGHT_ON 0x81 +#define SLCD_BACKLIGHT_OFF 0x80 + +/* +class SerialLCD : public SoftwareSerial{ +public: + + SerialLCD(uint8_t, uint8_t); + void begin(); + void clear(); + void home(); + + void noDisplay(); + void display(); + void noBlink(); + void blink(); + void noCursor(); + void cursor(); + void scrollDisplayLeft(); + void scrollDisplayRight(); + void leftToRight(); + void rightToLeft(); + void autoscroll(); + void noAutoscroll(); + + void setCursor(uint8_t, uint8_t); + void noPower(void); + void Power(void); + void noBacklight(void); + void backlight(void); + void print(uint8_t b); + void print(const char[]); + void print(unsigned long n, uint8_t base); + +}; +*/ +#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Thu Jan 16 13:27:49 2014 +0000 @@ -0,0 +1,121 @@ +#include "mbed.h" +#include "SerialLCD.h" + +DigitalOut myled(P0_9); +DigitalOut Buzzer(P0_7); +Serial LCD(P0_4, P0_0); //tx, rx +DigitalOut Relay(P0_12); + +void ClearDisplay() +{ + LCD.putc(SLCD_CONTROL_HEADER); + LCD.putc(SLCD_CLEAR_DISPLAY); +} + +void LCDHome() +{ + LCD.putc(SLCD_CONTROL_HEADER); + LCD.putc(SLCD_RETURN_HOME); +} + +void LCDsetCursor(uint8_t column, uint8_t row) +{ + LCD.putc(SLCD_CONTROL_HEADER); + LCD.putc(SLCD_CURSOR_HEADER); + LCD.putc(column); + LCD.putc(row); +} + +// Switch the display off without clearing RAM +void LCDnoDisplay() +{ + LCD.putc(SLCD_CONTROL_HEADER); + LCD.putc(SLCD_DISPLAY_OFF); +} + +// Switch the display on +void LCDdisplay() +{ + LCD.putc(SLCD_CONTROL_HEADER); + LCD.putc(SLCD_DISPLAY_ON); +} + +// Switch the underline cursor off +void LCDnoCursor() +{ + LCD.putc(SLCD_CONTROL_HEADER); + LCD.putc(SLCD_CURSOR_OFF); +} + +// Switch the underline cursor on +void LCDcursor() +{ + LCD.putc(SLCD_CONTROL_HEADER); + LCD.putc(SLCD_CURSOR_ON); +} + +//Turn off the backlight +void LCDnoBacklight(void) +{ + LCD.putc(SLCD_CONTROL_HEADER); + LCD.putc(SLCD_BACKLIGHT_OFF); +} +//Turn on the back light +void LCDbacklight(void) +{ + LCD.putc(SLCD_CONTROL_HEADER); + LCD.putc(SLCD_BACKLIGHT_ON); +} + +void LCDprint(uint8_t b) +{ + LCD.putc(SLCD_CHAR_HEADER); + LCD.putc(b); +} + +void LCDprintc(const char b[]) +{ + LCD.putc(SLCD_CHAR_HEADER); + LCD.printf(b); +} + + +int main() { + LCD.baud(9600); + //LCD startup + LCD.putc(SLCD_CONTROL_HEADER); + LCD.putc(SLCD_POWER_OFF); + wait_ms(1); + LCD.putc(SLCD_CONTROL_HEADER); + LCD.putc(SLCD_POWER_ON); + wait_ms(1); + LCD.putc(SLCD_INIT_ACK); + while(1) + { + if(LCD.getc()==SLCD_INIT_DONE) + break; + } + wait_ms(2); + + //LCD printf + LCDprintc("Hello World"); + + //LCD Backlight ON + LCDbacklight(); + + //LCD Display ON + LCDdisplay(); + + while(1) { + LCDnoBacklight(); + myled = 1; + Buzzer=0; + Relay=1; + wait(0.2); + LCDbacklight(); + myled = 0; + Buzzer=1; + Relay=0; + wait(0.2); + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed.bld Thu Jan 16 13:27:49 2014 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/mbed_official/code/mbed/builds/a9913a65894f \ No newline at end of file