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.
Fork of Smoothie by
LCDBang.h
00001 /* 00002 This file is part of Smoothie (http://smoothieware.org/). The motion control part is heavily based on Grbl (https://github.com/simen/grbl). 00003 Smoothie is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. 00004 Smoothie 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 General Public License for more details. 00005 You should have received a copy of the GNU General Public License along with Smoothie. If not, see <http://www.gnu.org/licenses/>. 00006 */ 00007 #ifndef LCDBANG_H 00008 #define LCDBANG_H 00009 #include "mbed.h" // mbed.h lib 00010 #include "I2CBang.h" 00011 00012 void lcdbang_writenibble(I2C i2c, char c, bool command = false){ 00013 const int addr = 0x40; 00014 char cmd[2]; 00015 c <<= 4; 00016 c &= 0xF0; 00017 c |= 0x01; 00018 if(!command) c |= 0x02; 00019 00020 cmd[0] = 0x0C; 00021 cmd[1] = c; 00022 i2c.write(addr, cmd, 2); 00023 cmd[1] = c | 0x08; 00024 i2c.write(addr, cmd, 2); 00025 cmd[1] = c; 00026 i2c.write(addr, cmd, 2); 00027 // wait_ms(1); 00028 } 00029 00030 void lcdbang_write(I2C i2c, char c, bool command = false){ 00031 if(command){ 00032 lcdbang_writenibble(i2c, c, command); 00033 }else{ 00034 lcdbang_writenibble(i2c, c >> 4, command); 00035 lcdbang_writenibble(i2c, c, command); 00036 } 00037 } 00038 00039 void lcdbang_init(I2C i2c){ 00040 const int addr = 0x40; 00041 char cmd[2]; 00042 cmd[0] = 0x1C; 00043 cmd[1] = 0x00; 00044 i2c.write(addr, cmd, 2); 00045 00046 lcdbang_write(i2c, 0x3, true); 00047 wait_ms(50); 00048 lcdbang_write(i2c, 0x3, true); 00049 wait_ms(10); 00050 lcdbang_write(i2c, 0x3, true); 00051 wait_ms(10); 00052 lcdbang_write(i2c, 0x2, true); 00053 wait_ms(1); 00054 00055 lcdbang_write(i2c, 0x2, true); 00056 lcdbang_write(i2c, 0x8, true); 00057 wait_ms(1); 00058 00059 lcdbang_write(i2c, 0x0, true); 00060 lcdbang_write(i2c, 0x8, true); 00061 wait_ms(1); 00062 00063 lcdbang_write(i2c, 0x0, true); 00064 lcdbang_write(i2c, 0x1, true); 00065 wait_ms(1); 00066 00067 lcdbang_write(i2c, 0x0, true); 00068 lcdbang_write(i2c, 0x6, true); 00069 wait_ms(1); 00070 00071 lcdbang_write(i2c, 0x0, true); 00072 lcdbang_write(i2c, 0x2, true); 00073 wait_ms(1); 00074 00075 lcdbang_write(i2c, 0x0, true); 00076 lcdbang_write(i2c, 0xC, true); 00077 wait_ms(1); 00078 } 00079 00080 void lcdbang_print(I2C i2c, const char* msg){ 00081 for(int i=0;msg[i];i++){ 00082 lcdbang_write(i2c, msg[i]); 00083 } 00084 } 00085 00086 void lcdbang_contrast(I2C i2c, int contrast){ 00087 // set dac pins as output and set dac 00088 i2cbang_init(i2c); 00089 i2cbang_start(i2c); 00090 i2cbang_write(i2c, 0xC0); 00091 i2cbang_write(i2c, 0x60); 00092 i2cbang_write(i2c, contrast >> 8); 00093 i2cbang_write(i2c, (contrast << 8) & 0xF0 ); 00094 i2cbang_stop(i2c); 00095 } 00096 00097 #endif // LCDBANG_H 00098
Generated on Tue Jul 12 2022 20:09:02 by
1.7.2
