Class: I2CDevice::AQM0802A

Inherits:
HD44780 show all
Defined in:
lib/templates/grove_pi/i2c/device/aqm0802.rb

Constant Summary

Constants inherited from HD44780

HD44780::MAP

Constants inherited from I2CDevice

VERSION

Instance Attribute Summary

Attributes inherited from I2CDevice

#address

Instance Method Summary collapse

Methods inherited from HD44780

#clear_display, #cursor_or_display_shift, #define_character, #display_on_off_control, #entry_mode_set, #read_busy_flag_and_address, #return_home, #set_cgram_address, #set_ddram_address

Methods inherited from I2CDevice

#i2cget, #i2cset

Constructor Details

#initialize(args = {}) ⇒ AQM0802A

Returns a new instance of AQM0802A.



7
8
9
10
11
# File 'lib/templates/grove_pi/i2c/device/aqm0802.rb', line 7

def initialize(args={})
  args[:address] ||= 0x3e
  super
  @is = 0
end

Instance Method Details

#follower_control(fon, rab) ⇒ Object



45
46
47
48
# File 'lib/templates/grove_pi/i2c/device/aqm0802.rb', line 45

def follower_control(fon, rab)
  i2cset(0, 0b01100000 | (fon<<3) | rab)
  sleep 300e-3
end

#function_set(dl, n, f, is) ⇒ Object

is
Integer

Instruction set 1: extension, 0: normal



51
52
53
54
55
# File 'lib/templates/grove_pi/i2c/device/aqm0802.rb', line 51

def function_set(dl, n, f, is)
  @is = is
  i2cset(0, 0b00100000 | (dl<<4) | (n<<3) | (f<<2) | (is))
  sleep 37e-6
end

#initialize_lcdObject



16
17
18
19
20
21
22
23
24
# File 'lib/templates/grove_pi/i2c/device/aqm0802.rb', line 16

def initialize_lcd
  function_set(1, 1, 0, 1)
  internal_osc_frequency(0, 0b100)
  power_icon_control_contrast_set(0, 1, 0b10000)
  follower_control(1, 0b100)
  function_set(1, 1, 0, 0)
  display_on_off_control(1, 0, 0)
  clear
end

#internal_osc_frequency(bs, f) ⇒ Object

Must set is = 1 by function_set before call.



28
29
30
31
32
33
# File 'lib/templates/grove_pi/i2c/device/aqm0802.rb', line 28

def internal_osc_frequency(bs, f)
  raise "is must be 1" unless @is == 1
  f &= 0b111
  i2cset(0, 0b00010000 | (bs << 3) | (f))
  sleep 26.3e-6
end

#power_icon_control_contrast_set(ion, bon, c) ⇒ Object



35
36
37
38
39
40
41
42
43
# File 'lib/templates/grove_pi/i2c/device/aqm0802.rb', line 35

def power_icon_control_contrast_set(ion, bon, c)
  c &= 0b111111
  # contrast_set
  i2cset(0, 0b01110000 | (c&0b111))
  sleep 26.3e-6
  # power_icon_control_contrast_set
  i2cset(0, 0b01010000 | (ion<<3) | (bon<<2) | (c>>3))
  sleep 26.3e-6
end

#put_line(line, str, force = false) ⇒ Object



57
58
59
60
61
62
63
64
65
66
67
68
69
# File 'lib/templates/grove_pi/i2c/device/aqm0802.rb', line 57

def put_line(line, str, force=false)
  str.force_encoding(Encoding::BINARY)
  str.gsub!(/#{MAP.keys.join('|')}/, MAP)
  str = "%- 8s" % str
  if force || str != @lines[line]
    # set ddram address
    set_ddram_address(line<<6) # line is 0 or 1
    sleep 60e-6
    i2cset(0b01000000, *str.unpack("C*"))
    sleep 60e-6
  end
  @lines[line] = str
end