{"id":34826,"date":"2020-07-30T13:49:43","date_gmt":"2020-07-30T05:49:43","guid":{"rendered":"\/blog\/?p=34826"},"modified":"2020-07-30T13:50:58","modified_gmt":"2020-07-30T05:50:58","slug":"pycalculator-by-circuitpython-on-wio-terminal-handle-the-input-and-calculations-with-joystick","status":"publish","type":"post","link":"https:\/\/www.seeedstudio.com\/blog\/2020\/07\/30\/pycalculator-by-circuitpython-on-wio-terminal-handle-the-input-and-calculations-with-joystick\/","title":{"rendered":"pycalculator by CircuitPython on Wio Terminal: Handle the Input and Calculations with Joystick"},"content":{"rendered":"\n<p>We follow the guide <a href=\"https:\/\/learn.adafruit.com\/pyportal-calculator-using-the-displayio-ui-elements\">PyPortal Calculator using the Displayio UI Elements <\/a>to build the Calculator on <a href=\"https:\/\/www.seeedstudio.com\/Wio-Terminal-p-4509.html\">Wio Terminal<\/a>.  <\/p>\n\n\n\n<p>Through the guide by Adafruit, it extends the User Interface (UI) elements available through CircuitPython Displayio library. You can use it to easily build actual calculations on the device. The tutorials used <a href=\"https:\/\/www.adafruit.com\/product\/4116\">PyPortal<\/a>, the PyPortal is the perfect device for setting up as a calculator with the touchscreen and large display.\u00a0<\/p>\n\n\n\n<p>Based on the guide, we built the calculator using Wio Terminal! You can use the onboard joystick as the button. <\/p>\n\n\n\n<figure class=\"wp-block-video\"><video controls src=\"https:\/\/blog.seeedstudio.com\/wp-content\/uploads\/2020\/07\/1596074503718404.mp4\"><\/video><\/figure>\n\n\n\n<p>Code as following: <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\"\"\"\nPyPortal Calculator Demo\n\nAdjusted for Wio Terminal By Anson (Seeed)\n\"\"\"\nimport time\nfrom collections import namedtuple\nimport board\nimport displayio\nfrom adafruit_display_text.label import Label\nfrom adafruit_bitmap_font import bitmap_font\nfrom adafruit_display_shapes.rect import Rect\nfrom adafruit_button import Button\nfrom calculator import Calculator\nimport adafruit_touchscreen\nCoords = namedtuple(\"Point\", \"x y\")\n\nfrom digitalio import DigitalInOut, Direction\n\n# 5 - way Switch\nUP = DigitalInOut(board.SWITCH_UP)\nDOWN = DigitalInOut(board.SWITCH_DOWN)\nLEFT = DigitalInOut(board.SWITCH_LEFT)\nRIGHT = DigitalInOut(board.SWITCH_RIGHT)\nPRESS = DigitalInOut(board.SWITCH_PRESS)\n\n# Settings\nBUTTON_WIDTH = 60\nBUTTON_HEIGHT = 30\nBUTTON_MARGIN = 8\nMAX_DIGITS = 29\nBLACK = 0x0\nORANGE = 0xFF8800\nWHITE = 0xFFFFFF\nGRAY = 0x888888\nRED = 0xFF0000\nLABEL_OFFSET = 290\nSTARTING_X = 50\nSTARTING_Y = 50\n\n# Make the display context\ncalc_group = displayio.Group(max_size=25)\nboard.DISPLAY.show(calc_group)\n\n# Make a background color fill\ncolor_bitmap = displayio.Bitmap(320, 240, 1)\ncolor_palette = displayio.Palette(1)\ncolor_palette[0] = GRAY\nbg_sprite = displayio.TileGrid(color_bitmap,\n                               pixel_shader=color_palette,\n                               x=0, y=0)\ncalc_group.append(bg_sprite)\n\n# Load the font\nfont = bitmap_font.load_font(\"\/fonts\/Arial-12.bdf\")\nbuttons = []\n\n# Some button functions\ndef button_grid(row, col):\n    return Coords(BUTTON_MARGIN * (row + 1) + BUTTON_WIDTH * row + 20,\n                  BUTTON_MARGIN * (col + 1) + BUTTON_HEIGHT * col + 40)\n\ndef add_button(row, col, label, width=1, color=WHITE, text_color=BLACK):\n    pos = button_grid(row, col)\n    new_button = Button(x=pos.x, y=pos.y,\n                        width=BUTTON_WIDTH * width + BUTTON_MARGIN * (width - 1),\n                        height=BUTTON_HEIGHT, label=label, label_font=font,\n                        label_color=text_color, fill_color=color, style=Button.ROUNDRECT)\n    buttons.append(new_button)\n    return new_button\n\ndef find_button(label):\n    result = None\n    for _, btn in enumerate(buttons):\n        if btn.label == label:\n            result = btn\n    return result\n\nborder = Rect(20, 8, 280, 35, fill=WHITE, outline=BLACK, stroke=2)\ncalc_display = Label(font, text=\"0\", color=BLACK, max_glyphs=MAX_DIGITS)\ncalc_display.y = 25\n\nclear_button = add_button(0, 0, \"AC\")\nadd_button(1, 0, \"+\/-\")\nadd_button(2, 0, \"%\")\nadd_button(3, 0, \"\/\", 1, ORANGE, WHITE)\nadd_button(0, 1, \"7\")\nadd_button(1, 1, \"8\")\nadd_button(2, 1, \"9\")\nadd_button(3, 1, \"x\", 1, ORANGE, WHITE)\nadd_button(0, 2, \"4\")\nadd_button(1, 2, \"5\")\nadd_button(2, 2, \"6\")\nadd_button(3, 2, \"-\", 1, ORANGE, WHITE)\nadd_button(0, 3, \"1\")\nadd_button(1, 3, \"2\")\nadd_button(2, 3, \"3\")\nadd_button(3, 3, \"+\", 1, ORANGE, WHITE)\nadd_button(0, 4, \"0\", 2)\nadd_button(2, 4, \".\")\nadd_button(3, 4, \"=\", 1, ORANGE, WHITE)\n\n# Add the display and buttons to the main calc group\ncalc_group.append(border)\ncalc_group.append(calc_display)\nfor b in buttons:\n    calc_group.append(b.group)\n\ncalculator = Calculator(calc_display, clear_button, LABEL_OFFSET)\n\nx = 0\ny = 0\nbutton = \"\"\nold_point = (0, 0)\n\nwhile True:\n    # Moving cursor\n    if (LEFT.value == False) and x != 0:\n        time.sleep(0.2)\n        x -= 50\n        if (x == 100): x -= 50\n    elif (RIGHT.value == False) and x != 200:\n        time.sleep(0.2)\n        x += 50\n        if (x == 100): x += 50\n    elif (UP.value == False) and y != 0:\n        time.sleep(0.2)\n        y -= 45\n    elif (DOWN.value == False) and y != 180:\n        time.sleep(0.2)\n        y += 45\n \n    point = (STARTING_X+x, STARTING_Y+y)\n    \n    if old_point is not (0, 0) and old_point != point: # Clearing old point selected highlight\n        for _, b in enumerate(buttons):\n            if b.contains(old_point) and button == \"\":\n                last_op = calculator.get_current_operator() \n                if (last_op in ('+', '-', 'x', '\/') and b.label == last_op): # condition for operators\n                    continue\n                b.selected = False\n    \n    old_point = point\n    \n    if point is not (0, 0):\n        # Button Down Events\n        for _, b in enumerate(buttons):\n            if b.contains(point) and button == \"\":\n                b.selected = True\n                if (PRESS.value == False):\n                    time.sleep(0.3)\n                    button = b.label\n    if button != \"\":\n        # Button Up Events\n        last_op = calculator.get_current_operator()\n        op_button = find_button(last_op)\n        # Deselect the last operation when certain buttons are pressed\n        if op_button is not None:\n            if button in ('=', 'AC', 'CE'):\n                op_button.selected = False\n            elif button in ('+', '-', 'x', '\/') and button != last_op:\n                op_button.selected = False\n        calculator.add_input(button)\n        b = find_button(button)\n        if b is not None:\n            if button not in ('+', '-', 'x', '\/') or button != calculator.get_current_operator():\n                b.selected = False\n        button = \"\"\n    time.sleep(0.05)<\/code><\/pre>\n\n\n\n<p>Now you can tell there are more User Interface (UI) possibilities that happened with Wio Terminal! Besides, we also use Wio Terminal to build a USB HMI display for the retro game, calendar, and also automotive dashboard!<\/p>\n\n\n\n<p>This tutorial demonstrates how to use  Wio Terminal as a USB HMI display for BeagleBone.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/blog.seeedstudio.com\/wp-content\/uploads\/2020\/07\/image-24.png\" alt=\"This image has an empty alt attribute; its file name is image-24.png\"\/><\/figure>\n\n\n\n<p>This tutorial demonstrates how to use  Wio Terminal as a USB HMI display for BeagleBone.<\/p>\n\n\n\n<p><a href=\"https:\/\/wiki.seeedstudio.com\/Wio-Terminal-HMI\/\" target=\"_blank\" rel=\"noreferrer noopener\" aria-label=\" (opens in a new tab)\">Play Super Mario retro game on Wio Terminal and BeagleBone Green, using USB connected only!\u00a0<\/a><\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large is-resized\"><img fetchpriority=\"high\" decoding=\"async\" src=\"https:\/\/blog.seeedstudio.com\/wp-content\/uploads\/2020\/07\/image-25.png\" alt=\"\" class=\"wp-image-34828\" width=\"437\" height=\"293\" srcset=\"https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2020\/07\/image-25.png 874w, https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2020\/07\/image-25-300x201.png 300w, https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2020\/07\/image-25-768x515.png 768w\" sizes=\"(max-width: 437px) 100vw, 437px\" \/><\/figure><\/div>\n\n\n\n<p>You can also make Wio Terminal as a table calendar and automotive dashboard!<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img decoding=\"async\" src=\"https:\/\/blog.seeedstudio.com\/wp-content\/uploads\/2020\/07\/image-26.png\" alt=\"\" class=\"wp-image-34829\" width=\"731\" height=\"321\" srcset=\"https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2020\/07\/image-26.png 974w, https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2020\/07\/image-26-300x132.png 300w, https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2020\/07\/image-26-768x337.png 768w\" sizes=\"(max-width: 731px) 100vw, 731px\" \/><\/figure>\n","protected":false},"excerpt":{"rendered":"<p>We follow the guide PyPortal Calculator using the Displayio UI Elements to build the Calculator<\/p>\n","protected":false},"author":200,"featured_media":34831,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_lmt_disableupdate":"","_lmt_disable":"","_price":"","_stock":"","_tribe_ticket_header":"","_tribe_default_ticket_provider":"","_tribe_ticket_capacity":"0","_ticket_start_date":"","_ticket_end_date":"","_tribe_ticket_show_description":"","_tribe_ticket_show_not_going":false,"_tribe_ticket_use_global_stock":"","_tribe_ticket_global_stock_level":"","_global_stock_mode":"","_global_stock_cap":"","_tribe_rsvp_for_event":"","_tribe_ticket_going_count":"","_tribe_ticket_not_going_count":"","_tribe_tickets_list":"[]","_tribe_ticket_has_attendee_info_fields":false,"iawp_total_views":0,"footnotes":""},"categories":[1],"tags":[1547,3342,142,3003],"class_list":["post-34826","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-news","tag-adafruit","tag-circuitpython","tag-open-hardware","tag-wio-terminal"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v24.0 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>pycalculator by CircuitPython on Wio Terminal: Handle the Input and Calculations with Joystick - Latest News from Seeed Studio<\/title>\n<meta name=\"description\" content=\"We follow the guide PyPortal Calculator using the Displayio UI Elements to build the Calculator on Wio Terminal.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.seeedstudio.com\/blog\/2020\/07\/30\/pycalculator-by-circuitpython-on-wio-terminal-handle-the-input-and-calculations-with-joystick\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"pycalculator by CircuitPython on Wio Terminal: Handle the Input and Calculations with Joystick - Latest News from Seeed Studio\" \/>\n<meta property=\"og:description\" content=\"We follow the guide PyPortal Calculator using the Displayio UI Elements to build the Calculator on Wio Terminal.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.seeedstudio.com\/blog\/2020\/07\/30\/pycalculator-by-circuitpython-on-wio-terminal-handle-the-input-and-calculations-with-joystick\/\" \/>\n<meta property=\"og:site_name\" content=\"Latest News from Seeed Studio\" \/>\n<meta property=\"article:published_time\" content=\"2020-07-30T05:49:43+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2020-07-30T05:50:58+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2020\/07\/image-27.png\" \/>\n\t<meta property=\"og:image:width\" content=\"832\" \/>\n\t<meta property=\"og:image:height\" content=\"372\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Elaine Wu\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Elaine Wu\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.seeedstudio.com\/blog\/2020\/07\/30\/pycalculator-by-circuitpython-on-wio-terminal-handle-the-input-and-calculations-with-joystick\/\",\"url\":\"https:\/\/www.seeedstudio.com\/blog\/2020\/07\/30\/pycalculator-by-circuitpython-on-wio-terminal-handle-the-input-and-calculations-with-joystick\/\",\"name\":\"pycalculator by CircuitPython on Wio Terminal: Handle the Input and Calculations with Joystick - Latest News from Seeed Studio\",\"isPartOf\":{\"@id\":\"https:\/\/www.seeedstudio.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.seeedstudio.com\/blog\/2020\/07\/30\/pycalculator-by-circuitpython-on-wio-terminal-handle-the-input-and-calculations-with-joystick\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.seeedstudio.com\/blog\/2020\/07\/30\/pycalculator-by-circuitpython-on-wio-terminal-handle-the-input-and-calculations-with-joystick\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2020\/07\/image-27.png\",\"datePublished\":\"2020-07-30T05:49:43+00:00\",\"dateModified\":\"2020-07-30T05:50:58+00:00\",\"author\":{\"@id\":\"https:\/\/www.seeedstudio.com\/blog\/#\/schema\/person\/61c04bed5bbe2d098f04195c6e48fb11\"},\"description\":\"We follow the guide PyPortal Calculator using the Displayio UI Elements to build the Calculator on Wio Terminal.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.seeedstudio.com\/blog\/2020\/07\/30\/pycalculator-by-circuitpython-on-wio-terminal-handle-the-input-and-calculations-with-joystick\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.seeedstudio.com\/blog\/2020\/07\/30\/pycalculator-by-circuitpython-on-wio-terminal-handle-the-input-and-calculations-with-joystick\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.seeedstudio.com\/blog\/2020\/07\/30\/pycalculator-by-circuitpython-on-wio-terminal-handle-the-input-and-calculations-with-joystick\/#primaryimage\",\"url\":\"https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2020\/07\/image-27.png\",\"contentUrl\":\"https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2020\/07\/image-27.png\",\"width\":832,\"height\":372,\"caption\":\"pycalculator by CircuitPython on Wio Terminal: Handle the Input and Calculations with Joystick\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.seeedstudio.com\/blog\/2020\/07\/30\/pycalculator-by-circuitpython-on-wio-terminal-handle-the-input-and-calculations-with-joystick\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.seeedstudio.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"pycalculator by CircuitPython on Wio Terminal: Handle the Input and Calculations with Joystick\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.seeedstudio.com\/blog\/#website\",\"url\":\"https:\/\/www.seeedstudio.com\/blog\/\",\"name\":\"Latest News from Seeed Studio\",\"description\":\"Emerging IoT, AI and Autonomous Applications on the Edge\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.seeedstudio.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.seeedstudio.com\/blog\/#\/schema\/person\/61c04bed5bbe2d098f04195c6e48fb11\",\"name\":\"Elaine Wu\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.seeedstudio.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/184af8ef71f0d6b64c276f9bb38b992e?s=96&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/184af8ef71f0d6b64c276f9bb38b992e?s=96&r=g\",\"caption\":\"Elaine Wu\"},\"description\":\"Head of AI Robotics @seeed Every day holds new magic \u2728 on ne sait jamais\u2601\ufe0f\",\"sameAs\":[\"https:\/\/www.linkedin.com\/in\/elaine1994\/\"],\"url\":\"https:\/\/www.seeedstudio.com\/blog\/author\/elaine\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"pycalculator by CircuitPython on Wio Terminal: Handle the Input and Calculations with Joystick - Latest News from Seeed Studio","description":"We follow the guide PyPortal Calculator using the Displayio UI Elements to build the Calculator on Wio Terminal.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.seeedstudio.com\/blog\/2020\/07\/30\/pycalculator-by-circuitpython-on-wio-terminal-handle-the-input-and-calculations-with-joystick\/","og_locale":"en_US","og_type":"article","og_title":"pycalculator by CircuitPython on Wio Terminal: Handle the Input and Calculations with Joystick - Latest News from Seeed Studio","og_description":"We follow the guide PyPortal Calculator using the Displayio UI Elements to build the Calculator on Wio Terminal.","og_url":"https:\/\/www.seeedstudio.com\/blog\/2020\/07\/30\/pycalculator-by-circuitpython-on-wio-terminal-handle-the-input-and-calculations-with-joystick\/","og_site_name":"Latest News from Seeed Studio","article_published_time":"2020-07-30T05:49:43+00:00","article_modified_time":"2020-07-30T05:50:58+00:00","og_image":[{"width":832,"height":372,"url":"https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2020\/07\/image-27.png","type":"image\/png"}],"author":"Elaine Wu","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Elaine Wu","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.seeedstudio.com\/blog\/2020\/07\/30\/pycalculator-by-circuitpython-on-wio-terminal-handle-the-input-and-calculations-with-joystick\/","url":"https:\/\/www.seeedstudio.com\/blog\/2020\/07\/30\/pycalculator-by-circuitpython-on-wio-terminal-handle-the-input-and-calculations-with-joystick\/","name":"pycalculator by CircuitPython on Wio Terminal: Handle the Input and Calculations with Joystick - Latest News from Seeed Studio","isPartOf":{"@id":"https:\/\/www.seeedstudio.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.seeedstudio.com\/blog\/2020\/07\/30\/pycalculator-by-circuitpython-on-wio-terminal-handle-the-input-and-calculations-with-joystick\/#primaryimage"},"image":{"@id":"https:\/\/www.seeedstudio.com\/blog\/2020\/07\/30\/pycalculator-by-circuitpython-on-wio-terminal-handle-the-input-and-calculations-with-joystick\/#primaryimage"},"thumbnailUrl":"https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2020\/07\/image-27.png","datePublished":"2020-07-30T05:49:43+00:00","dateModified":"2020-07-30T05:50:58+00:00","author":{"@id":"https:\/\/www.seeedstudio.com\/blog\/#\/schema\/person\/61c04bed5bbe2d098f04195c6e48fb11"},"description":"We follow the guide PyPortal Calculator using the Displayio UI Elements to build the Calculator on Wio Terminal.","breadcrumb":{"@id":"https:\/\/www.seeedstudio.com\/blog\/2020\/07\/30\/pycalculator-by-circuitpython-on-wio-terminal-handle-the-input-and-calculations-with-joystick\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.seeedstudio.com\/blog\/2020\/07\/30\/pycalculator-by-circuitpython-on-wio-terminal-handle-the-input-and-calculations-with-joystick\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.seeedstudio.com\/blog\/2020\/07\/30\/pycalculator-by-circuitpython-on-wio-terminal-handle-the-input-and-calculations-with-joystick\/#primaryimage","url":"https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2020\/07\/image-27.png","contentUrl":"https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2020\/07\/image-27.png","width":832,"height":372,"caption":"pycalculator by CircuitPython on Wio Terminal: Handle the Input and Calculations with Joystick"},{"@type":"BreadcrumbList","@id":"https:\/\/www.seeedstudio.com\/blog\/2020\/07\/30\/pycalculator-by-circuitpython-on-wio-terminal-handle-the-input-and-calculations-with-joystick\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.seeedstudio.com\/blog\/"},{"@type":"ListItem","position":2,"name":"pycalculator by CircuitPython on Wio Terminal: Handle the Input and Calculations with Joystick"}]},{"@type":"WebSite","@id":"https:\/\/www.seeedstudio.com\/blog\/#website","url":"https:\/\/www.seeedstudio.com\/blog\/","name":"Latest News from Seeed Studio","description":"Emerging IoT, AI and Autonomous Applications on the Edge","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.seeedstudio.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.seeedstudio.com\/blog\/#\/schema\/person\/61c04bed5bbe2d098f04195c6e48fb11","name":"Elaine Wu","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.seeedstudio.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/184af8ef71f0d6b64c276f9bb38b992e?s=96&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/184af8ef71f0d6b64c276f9bb38b992e?s=96&r=g","caption":"Elaine Wu"},"description":"Head of AI Robotics @seeed Every day holds new magic \u2728 on ne sait jamais\u2601\ufe0f","sameAs":["https:\/\/www.linkedin.com\/in\/elaine1994\/"],"url":"https:\/\/www.seeedstudio.com\/blog\/author\/elaine\/"}]}},"modified_by":"Elaine Wu","views":7368,"featured_image_urls":{"full":["https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2020\/07\/image-27.png",832,372,false],"thumbnail":["https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2020\/07\/image-27-80x80.png",80,80,true],"medium":["https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2020\/07\/image-27-300x134.png",300,134,true],"medium_large":["https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2020\/07\/image-27-768x343.png",640,286,true],"large":["https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2020\/07\/image-27.png",640,286,false],"1536x1536":["https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2020\/07\/image-27.png",832,372,false],"2048x2048":["https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2020\/07\/image-27.png",832,372,false],"visody_icon":["https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2020\/07\/image-27.png",32,14,false],"magazine-7-slider-full":["https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2020\/07\/image-27.png",832,372,false],"magazine-7-slider-center":["https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2020\/07\/image-27.png",832,372,false],"magazine-7-featured":["https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2020\/07\/image-27.png",832,372,false],"magazine-7-medium":["https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2020\/07\/image-27-720x372.png",720,372,true],"magazine-7-medium-square":["https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2020\/07\/image-27-675x372.png",675,372,true]},"author_info":{"display_name":"Elaine Wu","author_link":"https:\/\/www.seeedstudio.com\/blog\/author\/elaine\/"},"category_info":"<a href=\"https:\/\/www.seeedstudio.com\/blog\/category\/news\/\" rel=\"category tag\">News<\/a>","tag_info":"News","comment_count":"0","_links":{"self":[{"href":"https:\/\/www.seeedstudio.com\/blog\/wp-json\/wp\/v2\/posts\/34826","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.seeedstudio.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.seeedstudio.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.seeedstudio.com\/blog\/wp-json\/wp\/v2\/users\/200"}],"replies":[{"embeddable":true,"href":"https:\/\/www.seeedstudio.com\/blog\/wp-json\/wp\/v2\/comments?post=34826"}],"version-history":[{"count":2,"href":"https:\/\/www.seeedstudio.com\/blog\/wp-json\/wp\/v2\/posts\/34826\/revisions"}],"predecessor-version":[{"id":34833,"href":"https:\/\/www.seeedstudio.com\/blog\/wp-json\/wp\/v2\/posts\/34826\/revisions\/34833"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.seeedstudio.com\/blog\/wp-json\/wp\/v2\/media\/34831"}],"wp:attachment":[{"href":"https:\/\/www.seeedstudio.com\/blog\/wp-json\/wp\/v2\/media?parent=34826"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.seeedstudio.com\/blog\/wp-json\/wp\/v2\/categories?post=34826"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.seeedstudio.com\/blog\/wp-json\/wp\/v2\/tags?post=34826"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}