Last active
December 26, 2015 07:49
-
-
Save yoggy/7117774 to your computer and use it in GitHub Desktop.
I2CLCD control sample code (for Akizuki AQM0802A)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #!/usr/bin/python | |
| # | |
| # I2CLCD control sample code (for Akizuki AQM0802A) | |
| # | |
| # setup | |
| # $ sudo apt-get install i2c-tools | |
| # $ sudo apt-get install python-smbus | |
| # | |
| # check | |
| # $ sudo i2cdetect -y 0 | |
| # or | |
| # $ sudo i2cdetect -y 1 | |
| # | |
| import smbus | |
| class AkiI2CLCD: | |
| def __init__(self, i2c_bus, addr=0x3e): | |
| self.i2c_bus = i2c_bus | |
| self.addr = addr | |
| self._init() | |
| def _init(self): | |
| self.send_command(0x38) # function set (8bit, 2lines, enable instraction set 0) | |
| self.send_command(0x39) # function set (8bit, 2lines, enable instraction set 1) | |
| self.send_command(0x14) # (IS1) internal osc freq | |
| self.send_command(0x56) # (IS1) power, icon, contrast... | |
| self.send_command(0x6c) # (IS1) follower control | |
| self.send_command(0x06) # entry mode | |
| self.send_command(0x0c) # display on(db2), cursor off(db1), cursor position off(db0) | |
| #self.send_command(0x0f) # display on(db2), cursor on(db1), cursor position on(db0) | |
| def _send(self, rsrw, data): | |
| self.i2c_bus.write_byte_data(self.addr, rsrw, data) | |
| def send_command(self, data): | |
| self._send(0x00, data) | |
| def write_data_to_ram(self, data): | |
| self._send(0x40, data) # write data to ram | |
| def contrast(self, val): | |
| if val < 0x00: val = 0 | |
| if val > 0x0f: val = 0x0f | |
| self.send_command(0x39) # function set (8bit, 2lines, enable instraction set 1) | |
| self.send_command(0x70 + val) # contrast set | |
| def clear(self): | |
| self.send_command(0x01) # clear display | |
| self.send_command(0x02) # return to home | |
| def move(self, x, y): | |
| if x < 0: x = 0 | |
| if y < 0: y = 0 | |
| addr = x + y * 0x40 | |
| self.send_command(0x80 + addr) # set ddram address | |
| def puts(self, str): | |
| for c in str: | |
| self.write_data_to_ram(ord(c)) | |
| if __name__ == '__main__': | |
| lcd = AkiI2CLCD(smbus.SMBus(1)) | |
| lcd.clear() | |
| lcd.contrast(4) | |
| lcd.move(0, 0) | |
| lcd.puts("test1234") | |
| lcd.move(0, 1) | |
| lcd.puts("test1234") |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment