def test_string_sprite(self): expected = [[1, 1, 1, 1, 1], [0, 0, 1, 0, 0], [0, 0, 1, 0, 0], [1, 1, 0, 0, 0], [0, 0, 0, 0, 0], [0, 1, 1, 0, 0], [1, 0, 1, 1, 0], [1, 0, 1, 1, 0], [1, 0, 1, 0, 0], [0, 0, 0, 0, 0], [1, 0, 0, 0, 1], [1, 1, 1, 1, 1], [1, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [1, 0, 0, 0, 1], [1, 1, 1, 1, 1], [1, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 1, 1, 0, 0], [1, 0, 0, 1, 0], [1, 0, 0, 1, 0], [0, 1, 1, 0, 0], [0, 0, 0, 0, 0]] s = StringSprite("hello") self.assertEqual(s.pixel_state, expected)
IO_ANALOG_INPUT) import codebug_tether.colourtail from codebug_tether.sprites import StringSprite import random import time lucky_number = None codebug = codebug_tether.CodeBug() codebug.set_leg_io(0, IO_DIGITAL_INPUT); codebug.set_leg_io(1, IO_DIGITAL_INPUT); codebug.set_leg_io(2, IO_DIGITAL_INPUT); codebug.set_leg_io(3, IO_DIGITAL_INPUT); codebug.set_leg_io(4, IO_DIGITAL_INPUT); codebug.set_leg_io(5, IO_DIGITAL_INPUT); codebug.set_leg_io(6, IO_DIGITAL_INPUT); codebug.set_leg_io(7, IO_DIGITAL_INPUT); colourtail = codebug_tether.colourtail.CodeBugColourTail(codebug) colourtail.init(); for count in range(1): codebug.scroll_sprite(StringSprite('Welcome to Magic Roulette... GOOD LUCK!!!', 'R'), 100/1000, 'L') while True: if codebug.get_input('A') == 1: lucky_number = random.randint(0, 36) codebug.scroll_sprite(StringSprite('The Lucky Number is...', 'R'), 100/1000, 'L') time.sleep(1000/1000); codebug.scroll_sprite(StringSprite(lucky_number, 'R'), 500/1000, 'L')
codebug.set_leg_io(6, IO_DIGITAL_INPUT) codebug.set_leg_io(7, IO_DIGITAL_INPUT) def build_sprite(rows): s = Sprite(5, 5) for i in range(5): s.set_row(i, rows[i]) return s string = "B&O er nice" letter = 1 pressed = False string = string.replace(" ", "") codebug.draw_sprite(0, 0, StringSprite(string[0])) while True: if codebug.get_input('A') == 1 and pressed == False: pressed = True codebug.draw_sprite(0, 0, StringSprite(string[letter])) letter += 1 if letter == (len(string)): letter = 0 elif codebug.get_input('A') == 0: pressed = False if codebug.get_input('B') == 1: codebug.draw_sprite( 0, 0, build_sprite([0b00000, 0b00000, 0b00000, 0b00000, 0b00000]))
import codebug_tether from codebug_tether import (IO_DIGITAL_OUTPUT, IO_DIGITAL_INPUT, IO_PWM_OUTPUT, IO_ANALOG_INPUT) from codebug_tether.sprites import StringSprite codebug = codebug_tether.CodeBug() codebug.set_leg_io(0, IO_DIGITAL_INPUT) codebug.set_leg_io(1, IO_DIGITAL_INPUT) codebug.set_leg_io(2, IO_DIGITAL_INPUT) codebug.set_leg_io(3, IO_DIGITAL_INPUT) codebug.set_leg_io(4, IO_DIGITAL_INPUT) codebug.set_leg_io(5, IO_DIGITAL_INPUT) codebug.set_leg_io(6, IO_DIGITAL_INPUT) codebug.set_leg_io(7, IO_DIGITAL_INPUT) while True: codebug.scroll_sprite(StringSprite('WELCOME TO SAPS LAB!!! ', 'R'), 100 / 1000, 'L')
IO_DIGITAL_INPUT, IO_PWM_OUTPUT, ) item = None codebug = codebug_tether.CodeBug() codebug.set_leg_io(0, IO_DIGITAL_INPUT) codebug.set_leg_io(1, IO_DIGITAL_INPUT) codebug.set_leg_io(2, IO_DIGITAL_INPUT) codebug.set_leg_io(3, IO_DIGITAL_INPUT) codebug.set_leg_io(4, IO_DIGITAL_INPUT) codebug.set_leg_io(5, IO_DIGITAL_INPUT) codebug.set_leg_io(6, IO_DIGITAL_INPUT) codebug.set_leg_io(7, IO_DIGITAL_INPUT) def getBitcoinPrice(): URL = 'https://www.bitstamp.net/api/ticker/' try: r = requests.get(URL) priceFloat = float(json.loads(r.text)['last']) return priceFloat except requests.ConnectionError: print("Error querying Bitstamp API") while True: codebug.scroll_sprite(StringSprite(str(getBitcoinPrice()) + "$", 'R'), 100 / 1000, 'L')
codebug.set_leg_io(6, IO_DIGITAL_INPUT) codebug.set_leg_io(7, IO_DIGITAL_INPUT) def build_sprite(rows): s = Sprite(5, 5) for i in range(5): s.set_row(i, rows[i]) return s codebug.scroll_sprite( build_sprite([0b00100, 0b01110, 0b11111, 0b11111, 0b11011]), 100 / 1000, 'L') codebug.scroll_sprite( build_sprite([0b00100, 0b01110, 0b11111, 0b11111, 0b11011]), 100 / 1000, 'L') codebug.scroll_sprite( build_sprite([0b00100, 0b01110, 0b11111, 0b11111, 0b11011]), 100 / 1000, 'L') codebug.scroll_sprite(StringSprite('I LOVE YOU!!!', 'R'), 100 / 1000, 'L') codebug.scroll_sprite( build_sprite([0b00100, 0b01110, 0b11111, 0b11111, 0b11011]), 100 / 1000, 'L') codebug.scroll_sprite( build_sprite([0b00100, 0b01110, 0b11111, 0b11111, 0b11011]), 100 / 1000, 'L') codebug.scroll_sprite( build_sprite([0b00100, 0b01110, 0b11111, 0b11111, 0b11011]), 100 / 1000, 'L')
def test_draw_sprite(self): self.codebug.clear() def fill_sprite(s): for x in range(s.width): for y in range(s.height): s.set_pixel(x, y, 1) sprite = Sprite(4, 4) fill_sprite(sprite) self.codebug.draw_sprite(0, 0, sprite) self.assertEqual(self.codebug.get_row(4), 0x00) self.assertEqual(self.codebug.get_row(3), 0x1E) self.assertEqual(self.codebug.get_row(2), 0x1E) self.assertEqual(self.codebug.get_row(1), 0x1E) self.assertEqual(self.codebug.get_row(0), 0x1E) self.codebug.draw_sprite(1, 1, sprite) self.assertEqual(self.codebug.get_row(4), 0x0F) self.assertEqual(self.codebug.get_row(3), 0x0F) self.assertEqual(self.codebug.get_row(2), 0x0F) self.assertEqual(self.codebug.get_row(1), 0x0F) self.assertEqual(self.codebug.get_row(0), 0x00) sprite = Sprite(2, 3) fill_sprite(sprite) self.codebug.draw_sprite(0, 0, sprite) self.assertEqual(self.codebug.get_row(4), 0x00) self.assertEqual(self.codebug.get_row(3), 0x00) self.assertEqual(self.codebug.get_row(2), 0x18) self.assertEqual(self.codebug.get_row(1), 0x18) self.assertEqual(self.codebug.get_row(0), 0x18) sprite = Sprite(3, 3) fill_sprite(sprite) sprite.set_pixel(1, 2, 0) # key the sprite self.codebug.draw_sprite(0, 0, sprite) self.assertEqual(self.codebug.get_row(4), 0x00) self.assertEqual(self.codebug.get_row(3), 0x00) self.assertEqual(self.codebug.get_row(2), 0x14) self.assertEqual(self.codebug.get_row(1), 0x1C) self.assertEqual(self.codebug.get_row(0), 0x1C) self.codebug.draw_sprite(2, 2, sprite) self.assertEqual(self.codebug.get_row(4), 0x05) self.assertEqual(self.codebug.get_row(3), 0x07) self.assertEqual(self.codebug.get_row(2), 0x07) self.assertEqual(self.codebug.get_row(1), 0x00) self.assertEqual(self.codebug.get_row(0), 0x00) hello_str = StringSprite('Hello!') self.codebug.draw_sprite(0, 0, hello_str) self.assertEqual(self.codebug.get_row(4), 0x12) self.assertEqual(self.codebug.get_row(3), 0x12) self.assertEqual(self.codebug.get_row(2), 0x1E) self.assertEqual(self.codebug.get_row(1), 0x12) self.assertEqual(self.codebug.get_row(0), 0x12) self.codebug.draw_sprite(-7, 0, hello_str) self.assertEqual(self.codebug.get_row(4), 0x03) self.assertEqual(self.codebug.get_row(3), 0x11) self.assertEqual(self.codebug.get_row(2), 0x19) self.assertEqual(self.codebug.get_row(1), 0x01) self.assertEqual(self.codebug.get_row(0), 0x1B)
def get_currencies(): coindesk_currencies = requests.get(coindeskApi + "supported-currencies.json").json() currency_list = [] for currency in coindesk_currencies: currency_list.append(currency["currency"]) return currency_list def get_current_price(currency): return float(requests.get(coindeskApi + "currentprice/" + currency + ".json").json()["bpi"][currency]["rate"] .replace(",", "")) def get_historical_price( currency, start=date.today()-timedelta(days=31), end=date.today() ): start_string = f"{start.year:#02d}-{start.month:#02d}-{start.day:#02d}" end_string = f"{end.year:#02d}-{end.month:#02d}-{end.day:#02d}" return requests.get(f"{coindeskApi}historical/close.json?" f"currency={currency}&start={start_string}&end={end_string}") \ .json()["bpi"] while True: codebug.scroll_sprite(StringSprite(get_current_price('USD'), 'R'), 300/1000, 'L')
# interrupts -- and therefore sleep -- not supported in Python while True: codebug.draw_sprite( 0, 0, build_sprite([0b10001, 0b00000, 0b00000, 0b00000, 0b10001])) time.sleep(100 / 1000) codebug.draw_sprite( 0, 0, build_sprite([0b10001, 0b01010, 0b00000, 0b01010, 0b10001])) time.sleep(100 / 1000) codebug.draw_sprite( 0, 0, build_sprite([0b00000, 0b01010, 0b00100, 0b01010, 0b00000])) time.sleep(100 / 1000) codebug.draw_sprite( 0, 0, build_sprite([0b00000, 0b00000, 0b00100, 0b00000, 0b00000])) time.sleep(100 / 1000) for count in range(5): codebug.draw_sprite( 0, 0, build_sprite([0b00000, 0b01110, 0b01010, 0b01110, 0b00000])) time.sleep(100 / 1000) codebug.draw_sprite( 0, 0, build_sprite([0b11111, 0b10001, 0b10101, 0b10001, 0b11111])) time.sleep(100 / 1000) codebug.draw_sprite( 0, 0, build_sprite([0b00000, 0b01110, 0b01010, 0b01110, 0b00000])) time.sleep(100 / 1000) codebug.draw_sprite( 0, 0, build_sprite([0b11111, 0b10001, 0b10001, 0b10001, 0b11111])) codebug.draw_sprite( 0, 0, build_sprite([0b00000, 0b00000, 0b00000, 0b00000, 0b00000])) time.sleep(2000 / 1000) codebug.scroll_sprite(StringSprite('MATT ARNOLD', 'R'), 100 / 1000, 'L')
import codebug_tether from codebug_tether import (IO_DIGITAL_OUTPUT, IO_DIGITAL_INPUT, IO_PWM_OUTPUT, IO_ANALOG_INPUT) from codebug_tether.sprites import StringSprite codebug = codebug_tether.CodeBug() codebug.set_leg_io(0, IO_DIGITAL_INPUT) codebug.set_leg_io(1, IO_DIGITAL_INPUT) codebug.set_leg_io(2, IO_DIGITAL_INPUT) codebug.set_leg_io(3, IO_DIGITAL_INPUT) codebug.set_leg_io(4, IO_DIGITAL_INPUT) codebug.set_leg_io(5, IO_DIGITAL_INPUT) codebug.set_leg_io(6, IO_DIGITAL_INPUT) codebug.set_leg_io(7, IO_DIGITAL_INPUT) while True: codebug.scroll_sprite( StringSprite('1,61803398874989484820458683436563811772030917980', 'R'), 500 / 1000, 'L') codebug.scroll_sprite( StringSprite('1,61803398874989484820458683436563811772030917980', 'R'), 300 / 1000, 'L') codebug.scroll_sprite( StringSprite('1,61803398874989484820458683436563811772030917980', 'R'), 100 / 1000, 'L')
import codebug_tether from codebug_tether import (IO_DIGITAL_OUTPUT, IO_DIGITAL_INPUT, IO_PWM_OUTPUT, IO_ANALOG_INPUT) from codebug_tether.sprites import StringSprite codebug = codebug_tether.CodeBug() codebug.set_leg_io(0, IO_DIGITAL_INPUT) codebug.set_leg_io(1, IO_DIGITAL_INPUT) codebug.set_leg_io(2, IO_DIGITAL_INPUT) codebug.set_leg_io(3, IO_DIGITAL_INPUT) codebug.set_leg_io(4, IO_DIGITAL_INPUT) codebug.set_leg_io(5, IO_DIGITAL_INPUT) codebug.set_leg_io(6, IO_DIGITAL_INPUT) codebug.set_leg_io(7, IO_DIGITAL_INPUT) while True: codebug.scroll_sprite( StringSprite( '1-1-2-3-5-8-13-21-34-55-89-144-233-377-610-987-1597-2584-4181-6765...', 'R'), 377 / 1000, 'L') codebug.scroll_sprite( StringSprite( '1-1-2-3-5-8-13-21-34-55-89-144-233-377-610-987-1597-2584-4181-6765...', 'R'), 233 / 1000, 'L') codebug.scroll_sprite( StringSprite( '1-1-2-3-5-8-13-21-34-55-89-144-233-377-610-987-1597-2584-4181-6765...', 'R'), 1 / 1000, 'L')
import codebug_tether from codebug_tether import (IO_DIGITAL_OUTPUT, IO_DIGITAL_INPUT, IO_PWM_OUTPUT, IO_ANALOG_INPUT) from codebug_tether.sprites import StringSprite codebug = codebug_tether.CodeBug() codebug.set_leg_io(0, IO_DIGITAL_INPUT); codebug.set_leg_io(1, IO_DIGITAL_INPUT); codebug.set_leg_io(2, IO_DIGITAL_INPUT); codebug.set_leg_io(3, IO_DIGITAL_INPUT); codebug.set_leg_io(4, IO_DIGITAL_INPUT); codebug.set_leg_io(5, IO_DIGITAL_INPUT); codebug.set_leg_io(6, IO_DIGITAL_INPUT); codebug.set_leg_io(7, IO_DIGITAL_INPUT); while True: codebug.scroll_sprite(StringSprite('SAPPOH SAMA', 'R'), 100/1000, 'L')