Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/env python
- import time
- import smbus
- import socket
- import fcntl
- import struct
- BUS = smbus.SMBus(1)
- def write_word(addr, data):
- global BLEN
- temp = data
- if BLEN == 1:
- temp |= 0x08
- else:
- temp &= 0xF7
- BUS.write_byte(addr ,temp)
- def send_command(comm):
- # Send bit7-4 firstly
- buf = comm & 0xF0
- buf |= 0x04 # RS = 0, RW = 0, EN = 1
- write_word(LCD_ADDR ,buf)
- time.sleep(0.002)
- buf &= 0xFB # Make EN = 0
- write_word(LCD_ADDR ,buf)
- # Send bit3-0 secondly
- buf = (comm & 0x0F) << 4
- buf |= 0x04 # RS = 0, RW = 0, EN = 1
- write_word(LCD_ADDR ,buf)
- time.sleep(0.002)
- buf &= 0xFB # Make EN = 0
- write_word(LCD_ADDR ,buf)
- def send_data(data):
- # Send bit7-4 firstly
- buf = data & 0xF0
- buf |= 0x05 # RS = 1, RW = 0, EN = 1
- write_word(LCD_ADDR ,buf)
- time.sleep(0.002)
- buf &= 0xFB # Make EN = 0
- write_word(LCD_ADDR ,buf)
- # Send bit3-0 secondly
- buf = (data & 0x0F) << 4
- buf |= 0x05 # RS = 1, RW = 0, EN = 1
- write_word(LCD_ADDR ,buf)
- time.sleep(0.002)
- buf &= 0xFB # Make EN = 0
- write_word(LCD_ADDR ,buf)
- def init(addr, bl):
- # global BUS
- # BUS = smbus.SMBus(1)
- global LCD_ADDR
- global BLEN
- LCD_ADDR = addr
- BLEN = bl
- try:
- send_command(0x33) # Must initialize to 8-line mode at first
- time.sleep(0.005)
- send_command(0x32) # Then initialize to 4-line mode
- time.sleep(0.005)
- send_command(0x28) # 2 Lines & 5*7 dots
- time.sleep(0.005)
- send_command(0x0C) # Enable display without cursor
- time.sleep(0.005)
- send_command(0x01) # Clear Screen
- BUS.write_byte(LCD_ADDR, 0x08)
- except:
- return False
- else:
- return True
- def clear():
- send_command(0x01) # Clear Screen
- def openlight(): # Enable the backlight
- BUS.write_byte(0x27,0x08)
- BUS.close()
- def write(x, y, str):
- if x < 0:
- x = 0
- if x > 15:
- x = 15
- if y <0:
- y = 0
- if y > 1:
- y = 1
- # Move cursor
- addr = 0x80 + 0x40 * y + x
- send_command(addr)
- for chr in str:
- send_data(ord(chr))
- def get_ip_address(ifname):
- s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
- return socket.inet_ntoa(fcntl.ioctl(
- s.fileno(),
- 0x8915,
- struct.pack('256s', ifname[:15])
- )[20:24])
- if __name__ == '__main__':
- init(0x27, 1)
- write(0, 1, 'IP: ' + get_ip_address('wlan0'))
- write(0, 0, time.strftime('%b')) #month
- write(4, 0, time.strftime('%d')) #day of month
- write(8, 0, time.strftime('%H:')) #hour
- write(11, 0, time.strftime('%M:')) #minute
- while True:
- write(14, 0, time.strftime('%S'))#second
- time.sleep(1)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement