class RpiLcd16x2
Public Class Methods
new(string='', p_rs: 11, p_en: 10, d4: 6, d5: 5, d6: 4, d7: 1)
click to toggle source
# File lib/rpi_lcd16x2.rb, line 13 def initialize(string='', p_rs: 11, p_en: 10, d4: 6, d5: 5, d6: 4, d7: 1) @p_rs, @p_en, @d4, @d5, @d6, @d7 = p_rs, p_en, d4, d5, d6, d7 Wiringpi.wiringPiSetup # Set all pins to output mode [p_rs, p_en, d7, d6, d5, d4].each {|pin,val| Wiringpi.pinMode(pin, 1)} function_set # sets the display to use 4-bit instructions cursor_off print string unless string.empty? end
Public Instance Methods
cls()
click to toggle source
Clear all data from screen
# File lib/rpi_lcd16x2.rb, line 29 def cls() cmd d4: 1 end
cursor(direction=1)
click to toggle source
# File lib/rpi_lcd16x2.rb, line 31 def cursor(direction=1) cmd d7: 1, d6: direction, d5: nil, d4: nil end
cursor_off()
click to toggle source
# File lib/rpi_lcd16x2.rb, line 32 def cursor_off() cmd d7: 1, d6: 1, d5: 0 end
cursor_on()
click to toggle source
# File lib/rpi_lcd16x2.rb, line 33 def cursor_on() cmd d7: 1, d6: 1, d5: 1 end
display_off()
click to toggle source
# File lib/rpi_lcd16x2.rb, line 34 def display_off() cmd d7: 1 end
display_on()
click to toggle source
# File lib/rpi_lcd16x2.rb, line 35 def display_on() cmd d7: 1, d6: 1 end
entry(direction=1)
click to toggle source
Sets cursor move direction (I/D); specifies to shift the display (S). I/D - increment = 1 or decrement = 0 S - 0 = no display shift, 1 = display shift e.g. 0 0 0 0 1 D C B
# File lib/rpi_lcd16x2.rb, line 42 def entry(direction=1) write_command rs: 1, d7: 0, d6: 0, d5: 0, d4: 1 write_command rs: 1, d7: 0, d6: direction, d5: nil, d4: nil end
home()
click to toggle source
# File lib/rpi_lcd16x2.rb, line 55 def home() cmd d5: 1 end
lcd_write(a)
click to toggle source
Write data to CGRAM/DDRAM
# File lib/rpi_lcd16x2.rb, line 49 def lcd_write(a) write_command rs: 1, d7: a[0], d6: a[1], d5: a[2], d4: a[3] write_command rs: 1, d7: a[4], d6: a[5], d5: a[6], d4: a[7] end
print(raw_s)
click to toggle source
# File lib/rpi_lcd16x2.rb, line 58 def print(raw_s) cls s = raw_s.split(/\n/).map {|x| x.ljust(40)}.join print_text s end
Also aliased as: text
print_text(s)
click to toggle source
# File lib/rpi_lcd16x2.rb, line 66 def print_text(s) s.each_byte.to_a.each do |x| lcd_write ("%08b" % x).each_char.to_a.map(&:to_i) end end
Protected Instance Methods
cmd(h)
click to toggle source
# File lib/rpi_lcd16x2.rb, line 75 def cmd(h) write_command; write_command h; sleep 0.001 end
function_set()
click to toggle source
Sets interface data length (DL), number of display line (N),
and character font (F).
DL - 0 = 4-bit interface, 1 = 8-bit interface N - 0 = 1/8 or 1/11 duty (1 line), 1 = 1/16 duty (2 lines) F - 0 = 5×8 dots, 1 = 5×10 dots e.g. 0 0 1 DL N F * *
d7 d6 d5 d4 d7 d6 d5 d4
# File lib/rpi_lcd16x2.rb, line 84 def function_set() write_command rs: 0, d7: 0, d6: 0, d5: 1, d4: 0 write_command rs: 0, d7: 1, d6: 0, d5: nil, d4: nil end
write_command(rs: 0, d7: 0, d6: 0, d5: 0, d4: 0)
click to toggle source
# File lib/rpi_lcd16x2.rb, line 89 def write_command(rs: 0, d7: 0, d6: 0, d5: 0, d4: 0) [@p_rs, @d7, @d6, @d5, @d4,].zip([rs,d7,d6,d5,d4]).each do |pin,val| Wiringpi.digitalWrite(pin, val) if val end pulse_enable() end
Private Instance Methods
pulse_enable()
click to toggle source
Indicate to LCD that command should be 'executed'
# File lib/rpi_lcd16x2.rb, line 101 def pulse_enable() [1,0].each {|x| Wiringpi.digitalWrite(@p_en, x)} end