# sample Python code for thermal printers on BBC micro:bit # by Giles Booth @blogmywiki / for more information # see http://www.suppertime.co.uk/blogmywiki/2016/12/microbit-thermal/ import microbit import random microbit.uart.init(baudrate=19200, bits=8, parity=None, stop=1, tx=microbit.pin8, rx=None) # Print lines of text in buffer def thermal_print_ln(msg): microbit.uart.write(msg+"\n") # Send text but don't print - you need to send a # newline (\n) character to empty buffer & print. # This enables mixed print modes on same line. def thermal_print(msg): microbit.uart.write(msg) def doubleHeightOn(): microbit.uart.write("\x1B\x21\x10") def doubleHeightOff(): global print_mode microbit.uart.write("\x1B\x21\x00") def smallFontOn(): microbit.uart.write("\x1B\x21\x01") def smallFontOff(): microbit.uart.write("\x1B\x21\x00") def boldOn(): microbit.uart.write("\x1B\x45\x01") def boldOff(): microbit.uart.write("\x1B\x45\x00") def wideOn(): microbit.uart.write("\x1B\x0E") def wideOff(): microbit.uart.write("\x1B\x14") def inverseOn(): microbit.uart.write("\x1B\x21\x02") def inverseOff(): microbit.uart.write("\x1B\x21\x00") def upsideDownOn(): microbit.uart.write("\x1B\x7B\x01") def upsideDownOff(): microbit.uart.write("\x1B\x7B\x00") def underlineOn(): microbit.uart.write("\x1B\x2D\x02") def underlineOff(): microbit.uart.write("\x1B\x2D\x00") def largeFontOn(): microbit.uart.write("\x1D\x21\x11") def largeFontOff(): microbit.uart.write("\x1D\x21\x00") def leftAlign(): microbit.uart.write("\x1B\x61\x00") def centreAlign(): microbit.uart.write("\x1B\x61\x01") def rightAlign(): microbit.uart.write("\x1B\x61\x02") # prints test page def printerTest(): microbit.uart.write("\x12\x54") # resets the printer to default values def printerReset(): microbit.uart.write("\x1B\x40") # press button A to activate demo # increase printing temperature and time microbit.uart.write("\x1B\x37\x07\xFF\xFF") noun_list = ["fish ", "dog ", "cat ", "girl ", "boy ", "duck ", "teacher ", "snake ", "kitten ", "puppy ", "bird ", "bee ", "spider ", "ant "] verb_list = ["walks ", "runs ", "eats ", "sings ", "smiles ", "waves ", "swims ", "talks ", "stands ", "looks ", "nods ", "sleeps ", "flies ", "floats "] adverb_list = ["quickly ", "slowly ", "happily ", "sadly ", "gracefully ", "hungrily ", "well ", "badly ", "bravely ", "lazily ", "joyfully ", "crossly ", "loudly ", "quietly "] preposition_list = ["under ", "over ", "beneath ", "through ", "into ", "above "] adjective_list = ["dark ", "spooky ", "lonely ", "ancient "] place_list = ["sky ", "pond ", "forest ", "ocean ", "lake ", "city ", "village "] while True: if microbit.button_a.was_pressed(): poem = noun_list[random.randint(0, len(noun_list)-1)] \ + verb_list[random.randint(0, len(verb_list)-1)] \ + adverb_list[random.randint(0, len(adverb_list)-1)] \ + preposition_list[random.randint(0, len(preposition_list)-1)] \ + "the " + adjective_list[random.randint(0, len(adjective_list)-1)] \ + place_list[random.randint(0, len(place_list)-1)] thermal_print_ln("micro:bit poem or story") thermal_print_ln("specially made for you!") largeFontOn() thermal_print_ln(noun_list[random.randint(0, len(noun_list)-1)] + verb_list[random.randint(0, len(verb_list)-1)]) thermal_print_ln(adverb_list[random.randint(0, len(adverb_list)-1)] + preposition_list[random.randint(0, len(preposition_list)-1)]) thermal_print_ln('the ' + place_list[random.randint(0, len(place_list)-1)]) thermal_print_ln(" ") thermal_print_ln(" ") largeFontOff() microbit.sleep(300)