-
-
Save Gadgetoid/f4bc9bdd99e72549c923 to your computer and use it in GitHub Desktop.
This file contains 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
require 'wiringpi' | |
DATA_PIN = 3 | |
CLOCK_PIN = 2 | |
LATCH_PIN = 0 | |
NUM_OFF = 1 | |
NUM_ON = 0 | |
SEG_OFF = 0 | |
SEG_ON = 1 | |
#LSBFIRST = 0 | |
#MSBFIRST = 1 | |
message = `uptime` + ' ---- ' # 'this is not the prettiest font in the world - ' | |
charOffset = 0 | |
startTime = Time.now | |
WIO = WiringPi::GPIO.new(0) | |
WIO.mode DATA_PIN, OUTPUT | |
WIO.mode CLOCK_PIN, OUTPUT | |
WIO.mode LATCH_PIN, OUTPUT | |
@charMap = Hash[ | |
'a' => [SEG_ON,SEG_ON,SEG_ON,SEG_OFF,SEG_ON,SEG_ON,SEG_ON], | |
'b' => [SEG_OFF,SEG_OFF,SEG_ON,SEG_ON,SEG_ON,SEG_ON,SEG_ON], | |
'c' => [SEG_ON,SEG_OFF,SEG_OFF,SEG_ON,SEG_ON,SEG_ON,SEG_OFF], | |
'd' => [SEG_OFF,SEG_ON,SEG_ON,SEG_ON,SEG_ON,SEG_OFF,SEG_ON], | |
'e' => [SEG_ON,SEG_OFF,SEG_OFF,SEG_ON,SEG_ON,SEG_ON,SEG_ON], | |
'f' => [SEG_ON,SEG_OFF,SEG_OFF,SEG_OFF,SEG_ON,SEG_ON,SEG_ON], | |
'g' => [SEG_ON,SEG_OFF,SEG_ON,SEG_ON,SEG_ON,SEG_ON,SEG_OFF], | |
'h' => [SEG_OFF,SEG_OFF,SEG_ON,SEG_OFF,SEG_ON,SEG_ON,SEG_ON], | |
'i' => [SEG_OFF,SEG_ON,SEG_ON,SEG_OFF,SEG_OFF,SEG_OFF,SEG_OFF], | |
'j' => [SEG_OFF,SEG_ON,SEG_ON,SEG_ON,SEG_ON,SEG_OFF,SEG_OFF], | |
'k' => [SEG_OFF,SEG_ON,SEG_ON,SEG_OFF,SEG_ON,SEG_ON,SEG_ON], | |
'l' => [SEG_OFF,SEG_OFF,SEG_OFF,SEG_ON,SEG_ON,SEG_ON,SEG_OFF], | |
'm' => [SEG_ON,SEG_OFF,SEG_ON,SEG_OFF,SEG_ON,SEG_OFF,SEG_OFF], | |
'n' => [SEG_OFF,SEG_OFF,SEG_ON,SEG_OFF,SEG_ON,SEG_OFF,SEG_ON], | |
'o' => [SEG_OFF,SEG_OFF,SEG_ON,SEG_ON,SEG_ON,SEG_OFF,SEG_ON], | |
'p' => [SEG_ON,SEG_ON,SEG_OFF,SEG_OFF,SEG_ON,SEG_ON,SEG_ON], | |
'q' => [SEG_ON,SEG_ON,SEG_ON,SEG_OFF,SEG_OFF,SEG_ON,SEG_ON], | |
'r' => [SEG_ON,SEG_OFF,SEG_OFF,SEG_OFF,SEG_ON,SEG_ON,SEG_OFF], | |
's' => [SEG_ON,SEG_OFF,SEG_ON,SEG_ON,SEG_OFF,SEG_ON,SEG_ON], | |
't' => [SEG_OFF,SEG_OFF,SEG_OFF,SEG_ON,SEG_ON,SEG_ON,SEG_ON], | |
'u' => [SEG_OFF,SEG_ON,SEG_ON,SEG_ON,SEG_ON,SEG_ON,SEG_OFF], | |
'v' => [SEG_OFF,SEG_OFF,SEG_ON,SEG_ON,SEG_ON,SEG_OFF,SEG_OFF], | |
'w' => [SEG_OFF,SEG_ON,SEG_OFF,SEG_ON,SEG_OFF,SEG_ON,SEG_OFF], | |
'x' => [SEG_OFF,SEG_ON,SEG_ON,SEG_OFF,SEG_ON,SEG_ON,SEG_ON], | |
'y' => [SEG_OFF,SEG_ON,SEG_ON,SEG_OFF,SEG_OFF,SEG_ON,SEG_ON], | |
'z' => [SEG_ON,SEG_ON,SEG_OFF,SEG_ON,SEG_ON,SEG_OFF,SEG_ON], | |
'0' => [SEG_ON,SEG_ON,SEG_ON,SEG_ON,SEG_ON,SEG_ON,SEG_OFF], | |
'1' => [SEG_OFF,SEG_OFF,SEG_OFF,SEG_OFF,SEG_ON,SEG_ON,SEG_OFF], | |
'2' => [SEG_ON,SEG_ON,SEG_OFF,SEG_ON,SEG_ON,SEG_OFF,SEG_ON], | |
'3' => [SEG_ON,SEG_ON,SEG_ON,SEG_ON,SEG_OFF,SEG_OFF,SEG_ON], | |
'4' => [SEG_OFF,SEG_ON,SEG_ON,SEG_OFF,SEG_OFF,SEG_ON,SEG_ON], | |
'5' => [SEG_ON,SEG_OFF,SEG_ON,SEG_ON,SEG_OFF,SEG_ON,SEG_ON], | |
'6' => [SEG_ON,SEG_OFF,SEG_ON,SEG_ON,SEG_ON,SEG_ON,SEG_ON], | |
'7' => [SEG_ON,SEG_ON,SEG_ON,SEG_OFF,SEG_OFF,SEG_OFF,SEG_OFF], | |
'8' => [SEG_ON,SEG_ON,SEG_ON,SEG_ON,SEG_ON,SEG_ON,SEG_ON], | |
'9' => [SEG_ON,SEG_ON,SEG_ON,SEG_ON,SEG_OFF,SEG_ON,SEG_ON], | |
' ' => [SEG_OFF,SEG_OFF,SEG_OFF,SEG_OFF,SEG_OFF,SEG_OFF,SEG_OFF], | |
'-' => [SEG_OFF,SEG_OFF,SEG_OFF,SEG_OFF,SEG_OFF,SEG_OFF,SEG_ON], | |
'_' => [SEG_OFF,SEG_OFF,SEG_OFF,SEG_ON,SEG_OFF,SEG_OFF,SEG_OFF] | |
] | |
def shiftOut(dataPin, clockPin, latchPin, bits) | |
WIO.write( latchPin, LOW ) | |
#firstByte = bits[0,7].reverse.join.to_i(2) | |
#secondByte = bits[8,15].reverse.join.to_i(2) | |
bits.each_slice(8) do |slice| | |
#puts 'Shifting out ' + slice.reverse.join.to_i(2).to_s | |
Wiringpi.shiftOut(dataPin, clockPin, LSBFIRST, slice.reverse.join.to_i(2)) | |
end | |
#WIO.write( clockPin, LOW ) | |
#bits.each do |bit| | |
# | |
# WIO.write( dataPin, bit ) | |
# WIO.write( clockPin, HIGH ) | |
# WIO.write( clockPin, LOW ) | |
# | |
#end | |
WIO.write( latchPin, HIGH ) | |
end | |
def lcdd(digit,segments) | |
top = segments[0] | |
topright = segments[1] | |
bottomright = segments[2] | |
bottom = segments[3] | |
bottomleft = segments[4] | |
topleft = segments[5] | |
middle = segments[6] | |
digit1 = NUM_OFF | |
digit2 = NUM_OFF | |
digit3 = NUM_OFF | |
digit4 = NUM_OFF | |
digit1 = NUM_ON if digit == 1 | |
digit2 = NUM_ON if digit == 2 | |
digit3 = NUM_ON if digit == 3 | |
digit4 = NUM_ON if digit == 4 | |
lcd(digit1,digit2,digit3,digit4,top,topright,bottomright,bottom,bottomleft,topleft,middle) | |
end | |
def lcd(digit1,digit2,digit3,digit4,top,topright,bottomright,bottom,bottomleft,topleft,middle) | |
shiftOut DATA_PIN, CLOCK_PIN, LATCH_PIN, [digit1,digit2,bottom,bottomleft,digit3,digit4,0,0,topright,middle,top,bottomright,topleft,0,0,0] | |
end | |
def shiftOutArray(dataPin, clockPin, latchPin, bits) | |
Wiringpi.digitalWrite( latchPin, LOW ) | |
bits.each_slice(8) do |slice| | |
Wiringpi.shiftOut(dataPin, clockPin, LSBFIRST, slice.reverse.join.to_i(2)) | |
end | |
Wiringpi.digitalWrite( latchPin, HIGH ) | |
end | |
def charToBits(char) | |
if @charMap.has_key? char | |
@charMap[ char ] | |
else | |
[SEG_OFF,SEG_OFF,SEG_OFF,SEG_ON,SEG_OFF,SEG_OFF,SEG_OFF] | |
end | |
end | |
while 1 | |
#lcd(NUM_ON,NUM_OFF,NUM_OFF,NUM_OFF,SEG_ON,SEG_ON,SEG_ON,SEG_ON,SEG_ON,SEG_ON,SEG_ON) | |
if (Time.now - startTime) * 1000 >= 250 | |
message = `uptime` + ' ---- ' | |
charOffset += 1 | |
if charOffset > message.length | |
charOffset = 1 | |
end | |
startTime = Time.now | |
end | |
(1..4).each do |digit| | |
letters = message+message | |
letters = letters[charOffset,charOffset+4] | |
lcdd digit, charToBits(letters[digit-1]) | |
#puts 'Shifting to digit ' + digit.to_s | |
sleep 0.001 | |
end | |
end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment