--------------------------------------------------------------------------------------------------- |-- Module : System.Hardware.Arduino.Parts.SevenSegmentCodes-- Copyright : (c) Levent Erkok-- License : BSD3-- Maintainer : erkokl@gmail.com-- Stability : experimental---- Character to 7-segment display conversion.-------------------------------------------------------------------------------------------------moduleSystem.Hardware.Arduino.Parts.SevenSegmentCodes(char2SS )whereimportData.Word(Word8)-- | Convert a character to a bit-pattern, suitable for display on a seven-segment display. -- Note that most characters are just not representable in a 7-segment display, in which-- case we map it to 'Nothing'. However, some substitutions are done, for instance '(' is-- displayed the same as '['.---- The return value is a 'Word8', although only 7-bits are used; the least significant bit will-- always be 0. With the traditional coding, the bits correspond to segments ABCDEFG0, i.e.,-- most-significant-bit will be for segment A, next for segment B, and so on.char2SS ::Char->MaybeWord8char2SS :: Char -> Maybe Word8 char2SS =(forall a b. Eq a => a -> [(a, b)] -> Maybe b `lookup`[(Char, Word8)] tbl )wheretbl :: [(Char, Word8)] tbl =[(Char '"',Word8 0x44),(Char '\'',Word8 0x40),(Char '(',Word8 0x9C),(Char ')',Word8 0xF0),(Char '-',Word8 0x02),(Char '0',Word8 0xFC),(Char '1',Word8 0x60),(Char '2',Word8 0xDA),(Char '3',Word8 0xF2),(Char '4',Word8 0x66),(Char '5',Word8 0xB6),(Char '6',Word8 0xBE),(Char '7',Word8 0xE0),(Char '8',Word8 0xFE),(Char '9',Word8 0xF6),(Char '=',Word8 0x12),(Char '?',Word8 0xCA),(Char 'A',Word8 0xEE),(Char 'B',Word8 0x3E),(Char 'C',Word8 0x9C),(Char 'D',Word8 0x7A),(Char 'E',Word8 0x9E),(Char 'F',Word8 0x8E),(Char 'G',Word8 0xBC),(Char 'H',Word8 0x6E),(Char 'I',Word8 0x60),(Char 'J',Word8 0x78),(Char 'L',Word8 0x1C),(Char 'N',Word8 0x2A),(Char 'O',Word8 0xFC),(Char 'P',Word8 0xCE),(Char 'R',Word8 0x0A),(Char 'S',Word8 0xB6),(Char 'T',Word8 0x1E),(Char 'U',Word8 0x7C),(Char 'Y',Word8 0x76),(Char '[',Word8 0x9C),(Char ']',Word8 0xF0),(Char '_',Word8 0x10),(Char 'a',Word8 0xFA),(Char 'b',Word8 0x3E),(Char 'c',Word8 0x1A),(Char 'd',Word8 0x7A),(Char 'e',Word8 0xDE),(Char 'f',Word8 0x8E),(Char 'g',Word8 0xBC),(Char 'h',Word8 0x2E),(Char 'i',Word8 0x20),(Char 'j',Word8 0x78),(Char 'l',Word8 0x1C),(Char 'n',Word8 0x2A),(Char 'o',Word8 0x3A),(Char 'p',Word8 0xCE),(Char 'q',Word8 0xE7),(Char 'r',Word8 0x0A),(Char 's',Word8 0xB6),(Char 't',Word8 0x1E),(Char 'u',Word8 0x38),(Char 'y',Word8 0x76),(Char ' ',Word8 0x00)]