Welcome, guest | Sign In | My Account | Store | Cart
#!/bin/bash
#
# Clock_DEMO.sh
# A bash DEMO to create a 6 x 7 character set using the whitespace character.
# It is a functional digital clock but this is not important as I want this
# method for an _at_a_glance_ digital display for a kids level shell digital
# voltmeter I am in the process of doing.
#
# The clock in normal size is white on black near the top. The extra large clock
# is green on black and in the centre of the terminal..
#
# $VER: Clock.sh_Version_1.00.00_(C)2013_B.Walker_G0LCU.
#
# Written so the anyone can understand how it works.

# Set the window to white foreground on black background.
printf
"\x1B[0;37;40m"
clear
# Remove the cursor.
tput civis
# Set up all _variables_ as is required.
TIME
=`date "+%H:%M"`
char="0"
# The plot _variable_ "p".
p
="(C)2013, B.Walker, G0LCU."
# The background colours.
bg
="\x1B[0;37;40m"
# The foreground colours.
fg
="\x1B[0;37;42m"
# The initial character plotting points.
horiz
=10
vert
=9
# This function reads the time and stores it in "TIME".
clock
()
{
        TIME
=`date "+%H:%M"`
        printf
"\x1B[2;32f$bg The time is $TIME.\n"
}
# This function is required to coreectly print out the large characters.
plot
()
{
        p
="\x1B["$vert";"$horiz"f"
        vert
=$[ ( $vert + 1 ) ]
}
# *********************************************************
# The eleven characters required for this DEMO are 0 to 9
# and the : colon character.
zero
()
{
        plot
        printf
"$p$bg $fg   $bg  "
        plot
        printf
"$p$fg $bg   $fg $bg "
        plot
        printf
"$p$fg $bg  $fg  $bg "
        plot
        printf
"$p$fg $bg $fg $bg $fg $bg "
        plot
        printf
"$p$fg  $bg  $fg $bg "
        plot
        printf
"$p$fg $bg   $fg $bg "
        plot
        printf
"$p$bg $fg   $bg  "
}
one
()
{
        plot
        printf
"$p$bg   $fg $bg  "
        plot
        printf
"$p$bg  $fg  $bg  "
        plot
        printf
"$p$bg   $fg $bg  "
        plot
        printf
"$p$bg   $fg $bg  "
        plot
        printf
"$p$bg   $fg $bg  "
        plot
        printf
"$p$bg   $fg $bg  "
        plot
        printf
"$p$bg  $fg   $bg "
}
two
()
{
        plot
        printf
"$p$bg $fg   $bg  "
        plot
        printf
"$p$fg $bg   $fg $bg "
        plot
        printf
"$p$bg    $fg $bg "
        plot
        printf
"$p$bg $fg   $bg  "
        plot
        printf
"$p$fg $bg     "
        plot
        printf
"$p$fg $bg     "
        plot
        printf
"$p$fg     $bg "
}
three
()
{
        plot
        printf
"$p$bg $fg   $bg  "
        plot
        printf
"$p$fg $bg   $fg $bg "
        plot
        printf
"$p$bg    $fg $bg "
        plot
        printf
"$p$bg $fg   $bg  "
        plot
        printf
"$p$bg    $fg $bg "
        plot
        printf
"$p$fg $bg   $fg $bg "
        plot
        printf
"$p$bg $fg   $bg  "
}
four
()
{
        plot
        printf
"$p$bg   $fg $bg  "
        plot
        printf
"$p$bg  $fg  $bg  "
        plot
        printf
"$p$bg $fg $bg $fg $bg  "
        plot
        printf
"$p$fg $bg  $fg $bg  "
        plot
        printf
"$p$fg     $bg "
        plot
        printf
"$p$bg   $fg $bg "
        plot
        printf
"$p$bg   $fg $bg "
}
five
()
{
        plot
        printf
"$p$fg     $bg "
        plot
        printf
"$p$fg $bg     "
        plot
        printf
"$p$fg $bg     "
        plot
        printf
"$p$bg $fg   $bg  "
        plot
        printf
"$p$bg    $fg $bg "
        plot
        printf
"$p$fg $bg   $fg $bg "
        plot
        printf
"$p$bg $fg   $bg  "
}
six
()
{
        plot
        printf
"$p$bg $fg   $bg  "
        plot
        printf
"$p$fg $bg     "
        plot
        printf
"$p$fg $bg     "
        plot
        printf
"$p$fg    $bg  "
        plot
        printf
"$p$fg $bg   $fg $bg "
        plot
        printf
"$p$fg $bg   $fg $bg "
        plot
        printf
"$p$bg $fg   $bg  "
}
seven
()
{
        plot
        printf
"$p$fg     $bg "
        plot
        printf
"$p$bg    $fg $bg "
        plot
        printf
"$p$bg   $fg $bg  "
        plot
        printf
"$p$bg  $fg $bg   "
        plot
        printf
"$p$bg $fg $bg    "
        plot
        printf
"$p$fg $bg     "
        plot
        printf
"$p$fg $bg     "
}
eight
()
{
        plot
        printf
"$p$bg $fg   $bg  "
        plot
        printf
"$p$fg $bg   $fg $bg "
        plot
        printf
"$p$fg $bg   $fg $bg "
        plot
        printf
"$p$bg $fg   $bg  "
        plot
        printf
"$p$fg $bg   $fg $bg "
        plot
        printf
"$p$fg $bg   $fg $bg "
        plot
        printf
"$p$bg $fg   $bg  "
}
nine
()
{
        plot
        printf
"$p$bg $fg   $bg  "
        plot
        printf
"$p$fg $bg   $fg $bg "
        plot
        printf
"$p$fg $bg   $fg $bg "
        plot
        printf
"$p$bg $fg    $bg "
        plot
        printf
"$p$bg    $fg $bg "
        plot
        printf
"$p$bg    $fg $bg "
        plot
        printf
"$p$bg $fg   $bg  "
}
colon
()
{
        plot
        printf
"$p$bg      "
        plot
        printf
"$p$bg      "
        plot
        printf
"$p$bg  $fg $bg   "
        plot
        printf
"$p$bg      "
        plot
        printf
"$p$bg  $fg $bg   "
        plot
        printf
"$p$bg      "
        plot
        printf
"$p$bg      "
}
# End of the character set.
# *********************************************************
# Print all of these characters first just to display them.
# This will last for 5 seconds only...
# Done longhand purely for fun...
horiz
=10
vert
=9
zero
horiz
=16
vert
=9
one
horiz
=22
vert
=9
two
horiz
=28
vert
=9
three
horiz
=34
vert
=9
four
horiz
=40
vert
=9
five
horiz
=46
vert
=9
six
horiz
=52
vert
=9
seven
horiz
=58
vert
=9
eight
horiz
=64
vert
=9
nine
horiz
=70
vert
=9
colon
# Now display the clock in the normal character size...
clock
sleep
5
# Now clear the screen and display the big digits.
clear
while true
do
        clock
       
for subscript in $( seq 0 1 4)
       
do
               
# Take each character in turn and do the plots of them.
               
char="${TIME:${subscript}:1}"
                horiz
=$[ ( 26 + ( $subscript * 6 ) ) ]
                vert
=9
               
if [ "$char" == ":" ]
               
then
                        colon
               
fi
               
if [ "$char" == "0" ]
               
then
                        zero
               
fi
               
if [ "$char" == "1" ]
               
then
                        one
               
fi
               
if [ "$char" == "2" ]
               
then
                        two
               
fi
               
if [ "$char" == "3" ]
               
then
                        three
               
fi
               
if [ "$char" == "4" ]
               
then
                        four
               
fi
               
if [ "$char" == "5" ]
               
then
                        five
               
fi
               
if [ "$char" == "6" ]
               
then
                        six
               
fi
               
if [ "$char" == "7" ]
               
then
                        seven
               
fi
               
if [ "$char" == "8" ]
               
then
                        eight
               
fi
               
if [ "$char" == "9" ]
               
then
                        nine
               
fi
       
done
        sleep
1
done
# There is no code to clean up the terminal for this session in this DEMO.
# It is SOOO easy to do it manually that I expect you to be able to do
# that yourselves.
# Enjoy finding simple solutions to often very difficult questions.

History