Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- hardware.i2c89.configure(CLOCK_SPEED_400_KHZ);
- oled <- hardware.i2c89;
- local i2c_address = 0x78;
- function ASCII_8bit(c) {
- switch (c) {
- case "!": return "\x00\x00\x5F\x00\x00";
- case "\"": return "\x00\x07\x00\x07\x00";
- case "#": return "\x14\x7F\x14\x7F\x14";
- case "$": return "\x24\x2A\x7F\x2A\x12";
- case "%": return "\x23\x13\x08\x64\x62";
- case "&": return "\x36\x49\x55\x22\x50";
- case "'": return "\x00\x05\x03\x00\x00";
- case "(": return "\x00\x1C\x22\x41\x00";
- case ")": return "\x00\x41\x22\x1C\x00";
- case "*": return "\x14\x08\x3E\x08\x14";
- case "+": return "\x08\x08\x3E\x08\x08";
- case "'": return "\x00\x50\x30\x00\x00";
- case "-": return "\x08\x08\x08\x08\x08";
- case ".": return "\x00\x60\x60\x00\x00";
- case "/": return "\x20\x10\x08\x04\x02";
- case "0": return "\x3E\x51\x49\x45\x3E";
- case "1": return "\x00\x42\x7F\x40\x00";
- case "2": return "\x42\x61\x51\x49\x46";
- case "3": return "\x21\x41\x45\x4B\x31";
- case "4": return "\x18\x14\x12\x7F\x10";
- case "5": return "\x27\x45\x45\x45\x39";
- case "6": return "\x3C\x4A\x49\x49\x30";
- case "7": return "\x01\x71\x09\x05\x03";
- case "8": return "\x36\x49\x49\x49\x36";
- case "9": return "\x06\x49\x49\x29\x1E";
- case ":": return "\x00\x36\x36\x00\x00";
- case ";": return "\x00\x56\x36\x00\x00";
- case "<": return "\x08\x14\x22\x41\x00";
- case "=": return "\x14\x14\x14\x14\x14";
- case ">": return "\x00\x41\x22\x14\x08";
- case "?": return "\x02\x01\x51\x09\x06";
- case "@": return "\x32\x49\x79\x41\x3E";
- case "A": return "\x7E\x11\x11\x11\x7E";
- case "B": return "\x7F\x49\x49\x49\x36";
- case "C": return "\x3E\x41\x41\x41\x22";
- case "D": return "\x7F\x41\x41\x22\x1C";
- case "E": return "\x7F\x49\x49\x49\x41";
- case "F": return "\x7F\x09\x09\x09\x01";
- case "G": return "\x3E\x41\x49\x49\x7A";
- case "H": return "\x7F\x08\x08\x08\x7F";
- case "I": return "\x00\x41\x7F\x41\x00";
- case "J": return "\x20\x40\x41\x3F\x01";
- case "K": return "\x7F\x08\x14\x22\x41";
- case "L": return "\x7F\x40\x40\x40\x40";
- case "M": return "\x7F\x02\x0C\x02\x7F";
- case "N": return "\x7F\x04\x08\x10\x7F";
- case "O": return "\x3E\x41\x41\x41\x3E";
- case "P": return "\x7F\x09\x09\x09\x06";
- case "Q": return "\x3E\x41\x51\x21\x5E";
- case "R": return "\x7F\x09\x19\x29\x46";
- case "S": return "\x46\x49\x49\x49\x31";
- case "T": return "\x01\x01\x7F\x01\x01";
- case "U": return "\x3F\x40\x40\x40\x3F";
- case "V": return "\x1F\x20\x40\x20\x1F";
- case "W": return "\x3F\x40\x38\x40\x3F";
- case "X": return "\x63\x14\x08\x14\x63";
- case "Y": return "\x07\x08\x70\x08\x07";
- case "Z": return "\x61\x51\x49\x45\x43";
- case "[": return "\x00\x7F\x41\x41\x00";
- case "\\": return "\x02\x04\x08\x10\x20";
- case "]": return "\x00\x41\x41\x7F\x00";
- case "^": return "\x04\x02\x01\x02\x04";
- case "_": return "\x40\x40\x40\x40\x40";
- case "`": return "\x00\x01\x02\x04\x00";
- case "a": return "\x20\x54\x54\x54\x78";
- case "b": return "\x7F\x48\x44\x44\x38";
- case "c": return "\x38\x44\x44\x44\x20";
- case "d": return "\x38\x44\x44\x48\x7F";
- case "e": return "\x38\x54\x54\x54\x18";
- case "f": return "\x08\x7E\x09\x01\x02";
- case "g": return "\x0C\x52\x52\x52\x3E";
- case "h": return "\x7F\x08\x04\x04\x78";
- case "i": return "\x00\x44\x7D\x40\x00";
- case "j": return "\x20\x40\x44\x3D\x00";
- case "k": return "\x7F\x10\x28\x44\x00";
- case "l": return "\x00\x41\x7F\x40\x00";
- case "m": return "\x7C\x04\x18\x04\x78";
- case "n": return "\x7C\x08\x04\x04\x78";
- case "o": return "\x38\x44\x44\x44\x38";
- case "p": return "\x7C\x14\x14\x14\x08";
- case "q": return "\x08\x14\x14\x18\x7C";
- case "r": return "\x7C\x08\x04\x04\x08";
- case "s": return "\x48\x54\x54\x54\x20";
- case "t": return "\x04\x3F\x44\x40\x20";
- case "u": return "\x3C\x40\x40\x20\x7C";
- case "v": return "\x1C\x20\x40\x20\x1C";
- case "w": return "\x3C\x40\x30\x40\x3C";
- case "x": return "\x44\x28\x10\x28\x44";
- case "y": return "\x0C\x50\x50\x50\x3C";
- case "z": return "\x44\x64\x54\x4C\x44";
- case "{": return "\x00\x08\x36\x41\x00";
- case "|": return "\x00\x00\x7F\x00\x00";
- case "}": return "\x00\x41\x36\x08\x00";
- case "~": return "\x10\x08\x08\x10\x08";
- case "\xB0": return "\x00\x00\x07\x05\x07"; //degree
- default: return "\x00\x00\x00\x00\x00"; //space
- }
- }
- function sendChar8(data) {
- local char = ASCII_8bit(data);
- oled.write(i2c_address, "\x40"+char+"\x00\x00"); // 0x00 for some gap
- }
- function sendString8(y, x, textString) {
- setXY(y,x);
- foreach(character in textString) {
- if ((character & 0xE0) != 0xC0) { //Ignore the first byte of all 2-bytes unicode characters
- sendChar8(format("%c", character));
- }
- }
- }
- function ASCII_16bit_Top(c) {
- switch (c) {
- case "!": return "\xFF\xFF\xFF";
- case "\"": return "\x1F\x1F\x1F\x00\x1F\x1F\x1F";
- case "#": return "\x30\x30\xB0\xF8\xFF\x37\xB0\xF8\xFF\x37\x30";
- case "$": return "\x38\x7C\xE6\xFF\xC6\x8C\x08";
- case "%": return "\x7E\xFF\xC3\xC3\xFF\x7E\x00\xC0\xF0\x3E\x0F\x01\x00\x00\x00";
- case "&": return "\x00\x00\x9C\xFE\xFF\xF3\xE3\xFF\x3E\x1C\x00\x00\x00";
- case "'": return "\x1F\x1F\x1F";
- case "(": return "\xF0\xFE\x0F\x01";
- case ")": return "\x01\x0F\xFE\xF0";
- case "*": return "\x0C\x4C\xE8\x3F\x3F\xF8\x4C\x0C";
- case "+": return "\xC0\xC0\xC0\xC0\xFC\xFC\xFC\xC0\xC0\xC0\xC0";
- case "'": return "\x00\x00\x00";
- case "-": return "\x00\x00\x00\x00\x00\x00";
- case ".": return "\x00\x00\x00";
- case "/": return "\x00\x00\xE0\xFC\x3F\x03";
- case "0": return "\xF8\xFE\xFF\x07\x03\x07\xFF\xFE\xF8";
- case "1": return "\x70\x38\x38\x1C\xFF\xFF\xFF";
- case "2": return "\x0C\x0E\x0F\x03\x83\xC3\xFF\xFE\x3C";
- case "3": return "\x0C\x0E\x0F\xC3\xC3\xE3\xFF\xFE\x3C";
- case "4": return "\x00\x00\xC0\xE0\x38\x1E\xFF\xFF\xFF\x00\x00";
- case "5": return "\xC0\xFC\xFF\x7F\x63\xE3\xE3\xC3\x80";
- case "6": return "\xF8\xFE\xFE\xC7\x63\xE7\xEF\xCE\x84";
- case "7": return "\x03\x03\x03\xC3\xF3\xFB\x3F\x0F\x07";
- case "8": return "\x1C\x3E\xFF\xE3\xC3\xE3\xFF\x3E\x1C";
- case "9": return "\xF8\xFE\xFE\x87\x03\x87\xFE\xFE\xF8";
- case ":": return "\x1C\x1C\x1C";
- case "": return "\x1C\x1C\x1C";
- case "<": return "\xC0\xC0\xE0\x60\x70\x30\x30\x38\x18\x1C";
- case "=": return "\x70\x70\x70\x70\x70\x70\x70\x70\x70\x70";
- case ">": return "\x1C\x18\x38\x30\x30\x70\x60\xE0\xC0\xC0";
- case "?": return "\x0C\x0E\x0F\x07\x83\xC3\xE7\xFF\x7E\x3C";
- case "@": return "\xE0\xF8\x3C\xCE\xF6\x3B\x1B\x1B\xF3\xFB\x7B\x06\x0E\xFC\xF0\x00";
- case "A": return "\x00\x00\x80\xF8\xFF\x3F\x07\x3F\xFF\xF8\xC0\x00\x00";
- case "B": return "\xFF\xFF\xFF\xC7\xC7\xC7\xC7\xC7\xFF\xFE\x3C\x00";
- case "C": return "\xF0\xFC\xFE\x1E\x07\x07\x07\x07\x0F\x1E\x1E\x08";
- case "D": return "\xFF\xFF\xFF\x07\x07\x07\x07\x07\x1F\xFE\xFC\xF0";
- case "E": return "\xFF\xFF\xFF\xC7\xC7\xC7\xC7\xC7\xC7\xC7\x07";
- case "F": return "\xFF\xFF\xFF\xC7\xC7\xC7\xC7\xC7\xC7\x07";
- case "G": return "\xF0\xF8\xFC\x1E\x0E\x07\x07\x87\x87\x87\x8E\x9E\x9C\x88";
- case "H": return "\xFF\xFF\xFF\xC0\xC0\xC0\xC0\xC0\xC0\xFF\xFF\xFF";
- case "I": return "\xFF\xFF\xFF";
- case "J": return "\x00\x00\x00\x00\x00\x00\x00\xFF\xFF\xFF";
- case "K": return "\xFF\xFF\xFF\xC0\xE0\xF0\xFC\xFE\x8F\x07\x03\x01";
- case "L": return "\xFF\xFF\xFF\x00\x00\x00\x00\x00\x00\x00";
- case "M": return "\xFF\xFF\xFF\x07\xFF\xF8\xC0\x00\xC0\xF8\xFF\x07\xFF\xFF\xFF";
- case "N": return "\xFF\xFF\xFF\x1E\x7C\xF0\xC0\x00\x00\xFF\xFF\xFF";
- case "O": return "\xF0\xFC\xFE\x1E\x0F\x07\x07\x07\x07\x0F\x1E\xFE\xFC\xF0";
- case "P": return "\xFF\xFF\xFF\xC7\xC7\xC7\xC7\xC7\xFF\xFE\x7C";
- case "Q": return "\xF0\xFC\xFE\x1E\x0F\x07\x07\x07\x07\x0F\x1E\xFE\xFC\xF0\x00";
- case "R": return "\xFF\xFF\xFF\xC7\xC7\xC7\xC7\xC7\xFF\xFE\x7C\x00";
- case "S": return "\x38\x7E\xFE\xEF\xC7\xC7\xC7\x8F\x9E\x9E\x18";
- case "T": return "\x07\x07\x07\x07\xFF\xFF\xFF\x07\x07\x07\x07";
- case "U": return "\xFF\xFF\xFF\x00\x00\x00\x00\x00\x00\xFF\xFF\xFF";
- case "V": return "\x03\x1F\xFF\xFC\xE0\x00\x00\x00\xE0\xFC\xFF\x1F\x03";
- case "W": return "\x03\x3F\xFF\xFC\xC0\x00\xC0\xFC\xFF\x0F\xFF\xFC\xC0\x00\xC0\xFC\xFF\x3F\x03";
- case "X": return "\x03\x07\x1F\x7C\xF8\xE0\xF8\x7C\x1F\x07\x03";
- case "Y": return "\x03\x07\x1F\x3C\xF8\xE0\xC0\xE0\xF8\x3C\x1F\x07\x03";
- case "Z": return "\x00\x07\x07\x07\x87\xE7\xF7\x7F\x3F\x1F\x0F";
- case "[": return "\xFF\xFF\x03\x03";
- case "\\": return "\x03\x3F\xFC\xC0\x00\x00";
- case "]": return "\x03\x03\xFF\xFF";
- case "^": return "\x80\xE0\xF8\x7E\x0F\x0F\x7E\xF8\xE0\x80";
- case "_": return "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00";
- case "`": return "\x01\x03\x07\x04";
- case "a": return "\x40\x60\x30\x30\x30\xB0\xF0\xE0\xC0\x00";
- case "b": return "\xFE\xFE\xFE\x60\x30\x30\x70\xF0\xE0\x80";
- case "c": return "\x80\xE0\xE0\x70\x30\x30\x70\xE0\x40";
- case "d": return "\x80\xE0\xF0\x70\x30\x30\x60\xFE\xFE\xFE";
- case "e": return "\x80\xE0\xE0\x30\x30\x30\xF0\xE0\xC0";
- case "f": return "\x30\xFC\xFE\xFE\x36\x36\x06";
- case "g": return "\xE0\xF8\xFC\x1C\x0C\x0C\x18\xFC\xFC\xFC";
- case "h": return "\xFE\xFE\xFE\x60\x30\x30\x30\xF0\xE0\xC0";
- case "i": return "\xF6\xF6\xF6";
- case "j": return "\x00\x00\xF6\xF6\xF6";
- case "k": return "\xFE\xFE\xFE\x80\xC0\xE0\x70\x30\x10";
- case "l": return "\xFE\xFE\xFE";
- case "m": return "\xF0\xF0\xF0\x60\x30\x30\xF0\xE0\xC0\x60\x30\x30\xF0\xE0\xC0";
- case "n": return "\xF0\xF0\xF0\x60\x30\x30\x70\xF0\xE0\xC0";
- case "o": return "\x80\xE0\xE0\x70\x30\x30\x70\xE0\xE0\x80";
- case "p": return "\xFC\xFC\xFC\x18\x0C\x0C\x1C\xFC\xF8\xE0";
- case "q": return "\xF0\xF8\xFC\x1C\x0C\x0C\x18\xFC\xFC\xFC";
- case "r": return "\xF0\xF0\xF0\x60\x30\x30\x30";
- case "s": return "\xC0\xE0\xF0\x30\x30\x30\x70\x60\x40";
- case "t": return "\x30\xF8\xFC\xFE\x30\x30";
- case "u": return "\xF0\xF0\xF0\x00\x00\x00\x00\xF0\xF0\xF0";
- case "v": return "\x70\xF0\xF0\x00\x00\x00\xF0\xF0\x70";
- case "w": return "\x30\xF0\xF0\x80\x00\x80\xF0\xF0\xF0\x80\x00\x80\xF0\xF0\x30";
- case "x": return "\x30\x70\xF0\xC0\x80\xC0\xF0\x70\x30";
- case "y": return "\x38\xF8\xF8\xC0\x00\xC0\xF8\xF8\x38";
- case "z": return "\x30\x30\x30\x30\xB0\xF0\xF0\x70";
- case "{": return "\xC0\xC0\xFE\x3F\x03\x03";
- case "|": return "\xFF\xFF\x00";
- case "}": return "\x03\x03\x3F\xFE\xC0\xC0";
- case "~": return "\x80\xC0\xC0\xC0\xC0\xC0\x80\x80\x80\x80\xC0";
- case "\xB0": return "\x1E\x33\x21\x21\x33\x1E"; //degrees
- default: return "\x00\x00\x00\x00\x00"; //space
- }
- }
- function ASCII_16bit_Bottom(c) {
- switch (c) {
- case "!": return "\x71\x77\x71";
- case "\"": return "\x00\x00\x00\x00\x00\x00\x00";
- case "#": return "\x06\x76\x7F\x1F\x06\x76\x7F\x1F\x06\x06\x06";
- case "$": return "\x06\x0E\x18\x7F\x19\x0F\x07";
- case "%": return "\x00\x00\x00\x00\x60\x7C\x1F\x03\x00\x3E\x7F\x63\x63\x7F\x3E";
- case "&": return "\x1E\x3F\x7F\x73\x61\x61\x77\x7F\x3E\x3E\x3F\x77\x20";
- case "'": return "\x00\x00\x00";
- case "(": return "\x07\x3F\x78\x40";
- case ")": return "\x40\x78\x3F\x07";
- case "*": return "\x00\x00\x00\x00\x00\x00\x00\x00";
- case "+": return "\x01\x01\x01\x01\x1F\x1F\x1F\x01\x01\x01\x01";
- case "'": return "\x9C\xDC\x7C";
- case "-": return "\x07\x07\x07\x07\x07\x07";
- case ".": return "\x70\x70\x70";
- case "/": return "\x60\x7E\x1F\x01\x00\x00";
- case "0": return "\x0F\x3F\x7F\x70\x60\x70\x7F\x3F\x0F";
- case "1": return "\x00\x00\x00\x00\x7F\x7F\x7F";
- case "2": return "\x60\x78\x7C\x7F\x6F\x63\x61\x60\x60";
- case "3": return "\x18\x38\x78\x60\x60\x61\x7F\x3F\x1F";
- case "4": return "\x0E\x0F\x0D\x0C\x0C\x0C\x7F\x7F\x7F\x0C\x0C";
- case "5": return "\x18\x38\x78\x70\x60\x70\x7F\x3F\x0F";
- case "6": return "\x0F\x3F\x3F\x70\x60\x70\x3F\x3F\x0F";
- case "7": return "\x00\x78\x7F\x7F\x07\x00\x00\x00\x00";
- case "8": return "\x1E\x3F\x7F\x71\x60\x71\x7F\x3F\x1E";
- case "9": return "\x10\x39\x7B\x73\x63\x71\x3F\x3F\x0F";
- case ":": return "\x0E\x0E\x0E";
- case "": return "\x0E\x2E\x1E";
- case "<": return "\x01\x01\x03\x03\x07\x07\x06\x0E\x0E\x1C";
- case "=": return "\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E";
- case ">": return "\x1C\x0E\x0E\x06\x07\x07\x03\x03\x01\x01";
- case "?": return "\x00\x00\x00\x77\x77\x77\x01\x00\x00\x00";
- case "@": return "\x07\x1F\x38\x77\x6F\xCC\xCC\xC6\xCF\xCF\xCC\xEE\x67\x73\x31\x10";
- case "A": return "\x60\x7C\x7F\x1F\x0F\x0E\x0E\x0E\x0F\x1F\x7F\x7C\x60";
- case "B": return "\x7F\x7F\x7F\x71\x71\x71\x71\x71\x71\x7F\x3F\x1E";
- case "C": return "\x07\x1F\x3F\x3C\x70\x70\x70\x70\x78\x3C\x3C\x08";
- case "D": return "\x7F\x7F\x7F\x70\x70\x70\x70\x70\x38\x3F\x1F\x07";
- case "E": return "\x7F\x7F\x7F\x71\x71\x71\x71\x71\x71\x71\x70";
- case "F": return "\x7F\x7F\x7F\x01\x01\x01\x01\x01\x01\x00";
- case "G": return "\x03\x0F\x1F\x3C\x38\x70\x70\x73\x73\x73\x3B\x3F\x3F\x1F";
- case "H": return "\x7F\x7F\x7F\x01\x01\x01\x01\x01\x01\x7F\x7F\x7F";
- case "I": return "\x7F\x7F\x7F";
- case "J": return "\x0E\x3E\x3E\x78\x70\x70\x70\x3F\x3F\x1F";
- case "K": return "\x7F\x7F\x7F\x03\x01\x00\x01\x07\x1F\x7E\x78\x60";
- case "L": return "\x7F\x7F\x7F\x70\x70\x70\x70\x70\x70\x70";
- case "M": return "\x7F\x7F\x7F\x00\x00\x0F\x7F\x7C\x7F\x0F\x00\x00\x7F\x7F\x7F";
- case "N": return "\x7F\x7F\x7F\x00\x00\x01\x07\x1F\x3C\x7F\x7F\x7F";
- case "O": return "\x07\x1F\x3F\x3C\x78\x70\x70\x70\x70\x78\x3C\x3F\x1F\x07";
- case "P": return "\x7F\x7F\x7F\x01\x01\x01\x01\x01\x01\x00\x00";
- case "Q": return "\x07\x1F\x3F\x3C\x78\x70\x74\x7E\x7C\x78\x3C\x7F\xFF\xE7\x40";
- case "R": return "\x7F\x7F\x7F\x01\x01\x03\x07\x1F\x7E\x7C\x70\x40";
- case "S": return "\x0C\x3C\x3C\x78\x71\x71\x71\x7B\x3F\x3F\x1E";
- case "T": return "\x00\x00\x00\x00\x7F\x7F\x7F\x00\x00\x00\x00";
- case "U": return "\x0F\x3F\x3F\x78\x70\x70\x70\x70\x78\x3F\x3F\x0F";
- case "V": return "\x00\x00\x00\x07\x3F\x7F\x78\x7F\x3F\x07\x00\x00\x00";
- case "W": return "\x00\x00\x03\x7F\x7F\x7C\x7F\x1F\x00\x00\x00\x1F\x7F\x7C\x7F\x7F\x07\x00\x00";
- case "X": return "\x60\x70\x7C\x1F\x0F\x03\x0F\x1F\x7C\x70\x60";
- case "Y": return "\x00\x00\x00\x00\x00\x7F\x7F\x7F\x00\x00\x00\x00\x00";
- case "Z": return "\x78\x7C\x7E\x7F\x77\x73\x70\x70\x70\x70\x70";
- case "[": return "\x7F\x7F\x60\x60";
- case "\\": return "\x00\x00\x03\x1F\x7E\x60";
- case "]": return "\x60\x60\x7F\x7F";
- case "^": return "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00";
- case "_": return "\x60\x60\x60\x60\x60\x60\x60\x60\x60\x60\x60";
- case "`": return "\x00\x00\x00\x00";
- case "a": return "\x1C\x3E\x7F\x63\x63\x31\x3F\x7F\x7F\x40";
- case "b": return "\x7F\x7F\x7F\x30\x60\x60\x70\x7F\x3F\x0F";
- case "c": return "\x0F\x3F\x3F\x70\x60\x60\x70\x38\x10";
- case "d": return "\x0F\x3F\x7F\x70\x60\x60\x30\x7F\x7F\x7F";
- case "e": return "\x0F\x3F\x3F\x73\x63\x63\x73\x33\x13";
- case "f": return "\x00\x7F\x7F\x7F\x00\x00\x00";
- case "g": return "\x61\x67\xEF\xCE\xCC\xCC\xC6\xFF\x7F\x3F";
- case "h": return "\x7F\x7F\x7F\x00\x00\x00\x00\x7F\x7F\x7F";
- case "i": return "\x7F\x7F\x7F";
- case "j": return "\xC0\xC0\xFF\xFF\x7F";
- case "k": return "\x7F\x7F\x7F\x03\x07\x1F\x7E\x78\x60";
- case "l": return "\x7F\x7F\x7F";
- case "m": return "\x7F\x7F\x7F\x00\x00\x00\x7F\x7F\x7F\x00\x00\x00\x7F\x7F\x7F";
- case "n": return "\x7F\x7F\x7F\x00\x00\x00\x00\x7F\x7F\x7F";
- case "o": return "\x0F\x3F\x3F\x70\x60\x60\x70\x3F\x3F\x0F";
- case "p": return "\xFF\xFF\xFF\x0C\x18\x18\x1C\x1F\x0F\x03";
- case "q": return "\x03\x0F\x1F\x1C\x18\x18\x0C\xFF\xFF\xFF";
- case "r": return "\x7F\x7F\x7F\x00\x00\x00\x00";
- case "s": return "\x11\x33\x73\x67\x67\x67\x7E\x3E\x1C";
- case "t": return "\x00\x3F\x7F\x7F\x60\x60";
- case "u": return "\x1F\x3F\x7F\x70\x60\x60\x30\x7F\x7F\x7F";
- case "v": return "\x00\x03\x1F\x7F\x78\x7F\x1F\x03\x00";
- case "w": return "\x00\x01\x1F\x7F\x78\x7F\x0F\x00\x0F\x7F\x78\x7F\x1F\x01\x00";
- case "x": return "\x60\x70\x7D\x1F\x0F\x1F\x7D\x70\x60";
- case "y": return "\xC0\xC0\xE7\xFF\x7E\x1F\x07\x00\x00";
- case "z": return "\x70\x78\x7E\x6F\x67\x63\x60\x60";
- case "{": return "\x00\x00\x3F\x7F\x60\x60";
- case "|": return "\xFF\xFF\x00";
- case "}": return "\x60\x60\x7F\x3F\x00\x00";
- case "~": return "\x03\x01\x01\x01\x01\x03\x03\x03\x03\x03\x01";
- case "\xB0": return "\x00\x00\x00\x00\x00\x00"; //degrees
- default: return "\x00\x00\x00\x00\x00"; //space
- }
- }
- function sendChar16_Top(data) {
- local char = ASCII_16bit_Top(data);
- oled.write(i2c_address, "\x40"+char+"\x00\x00\x00"); // 0x00 for some gap
- }
- function sendChar16_Bottom(data) {
- local char = ASCII_16bit_Bottom(data);
- oled.write(i2c_address, "\x40"+char+"\x00\x00\x00"); // 0x00 for some gap
- }
- function sendString16(y, x, textString) {
- setXY(y,x);
- foreach(character in textString) {
- if ((character & 0xE0) != 0xC0) { //Ignore the first byte of all 2-bytes unicode characters
- sendChar16_Top(format("%c", character));
- }
- }
- setXY(y+1,x);
- foreach(character in textString) {
- if ((character & 0xE0) != 0xC0) { //Ignore the first byte of all 2-bytes unicode characters
- sendChar16_Bottom(format("%c", character));
- }
- }
- }
- function sendChar(data) {
- oled.write(i2c_address, format("%c%c",0x40, data));
- }
- function sendcommand(data) {
- oled.write(i2c_address, format("%c%c",0x80, data));
- }
- function clear_display() {
- local i;
- local k;
- for(k=0;k<8;k++) {
- setXY(k,0);
- for(i=0;i<132;i++) {
- sendChar(0);
- }
- }
- }
- function setXY(row, col) {
- sendcommand(0xb0+row); //set page address
- sendcommand(0x00+(8*col&0x0f)); //set low col address
- sendcommand(0x10+((8*col>>4)&0x0f)); //set high col address
- }
- function init_OLED() {
- sendcommand(0xae); //turn display off
- clear_display(); // clear garbage
- sendcommand(0xaf); //turn display on
- sendcommand(0xa1); //flip vertical A0/A1
- sendcommand(0xc8); //flip horizontal C0/C8
- sendcommand(0xa6); //normal/reverse display A6/A7
- }
- init_OLED();
- sendString8(0, 1, "1.3\" OLED SH1106");
- sendString8(2, 1, "8-Bit Font");
- sendString16(4, 1, "16-Bit Font");
- local i = 0;
- function loop() {
- i++;
- sendString16(6, 1, "T=" + i.tostring() + "°F");
- imp.wakeup(1, loop);
- }
- loop();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement