{"id":455,"date":"2019-06-06T20:59:25","date_gmt":"2019-06-07T03:59:25","guid":{"rendered":"http:\/\/lucina.mastroid.com\/wordpress\/?p=455"},"modified":"2019-06-07T09:55:13","modified_gmt":"2019-06-07T16:55:13","slug":"circuitpython-adafruit-pybadge-example-code","status":"publish","type":"post","link":"http:\/\/lucina.mastroid.com\/wordpress\/2019\/06\/06\/circuitpython-adafruit-pybadge-example-code\/","title":{"rendered":"Programming an Adafruit PyBadge using CircuitPython"},"content":{"rendered":"\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><img loading=\"lazy\" decoding=\"async\" width=\"300\" height=\"225\" src=\"http:\/\/lucina.mastroid.com\/wordpress\/wp-content\/uploads\/2019\/06\/WIN_20190606_15_52_11_Pro-2-300x225.jpg\" alt=\"\" class=\"wp-image-456\" srcset=\"http:\/\/lucina.mastroid.com\/wordpress\/wp-content\/uploads\/2019\/06\/WIN_20190606_15_52_11_Pro-2-300x225.jpg 300w, http:\/\/lucina.mastroid.com\/wordpress\/wp-content\/uploads\/2019\/06\/WIN_20190606_15_52_11_Pro-2-768x576.jpg 768w, http:\/\/lucina.mastroid.com\/wordpress\/wp-content\/uploads\/2019\/06\/WIN_20190606_15_52_11_Pro-2-1024x768.jpg 1024w, http:\/\/lucina.mastroid.com\/wordpress\/wp-content\/uploads\/2019\/06\/WIN_20190606_15_52_11_Pro-2.jpg 1541w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><figcaption>Adafruit PyBadge in 3D printed case<\/figcaption><\/figure><\/div>\n\n\n\n<ul class=\"wp-block-list\"><li><a href=\"http:\/\/lucina.mastroid.com\/wordpress\/2019\/06\/06\/circuitpython-adafruit-pybadge-example-code\/#intro\">Introduction<\/a><\/li><li><a href=\"http:\/\/lucina.mastroid.com\/wordpress\/2019\/06\/06\/circuitpython-adafruit-pybadge-example-code\/#install\">Installing CircuitPython<\/a><\/li><li><a href=\"http:\/\/lucina.mastroid.com\/wordpress\/2019\/06\/06\/circuitpython-adafruit-pybadge-example-code\/#code\">My CircuitPython Code<\/a><\/li><li><a href=\"http:\/\/lucina.mastroid.com\/wordpress\/2019\/06\/06\/circuitpython-adafruit-pybadge-example-code\/#download\">Download code, image and audio files<\/a><\/li><li><a href=\"http:\/\/lucina.mastroid.com\/wordpress\/2019\/06\/06\/circuitpython-adafruit-pybadge-example-code\/#program\">Program instructions<\/a><\/li><li><a href=\"http:\/\/lucina.mastroid.com\/wordpress\/2019\/06\/06\/circuitpython-adafruit-pybadge-example-code\/#case\">3D printed case<\/a><\/li><\/ul>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"intro\">Introduction<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">After seeing this new Adafruit product on Instagram (<a rel=\"noreferrer noopener\" aria-label=\"@adafruit (opens in a new tab)\" href=\"https:\/\/www.instagram.com\/adafruit\/\" target=\"_blank\">@adafruit<\/a>,<a rel=\"noreferrer noopener\" aria-label=\" @ecke (opens in a new tab)\" href=\"https:\/\/www.instagram.com\/ecken\/\" target=\"_blank\"> @ecke<\/a>n, and <a rel=\"noreferrer noopener\" aria-label=\"@videopixel (opens in a new tab)\" href=\"https:\/\/www.instagram.com\/videopixil\/\" target=\"_blank\">@videopixil<\/a>)  I was very anxious to get my hands on an Adafruit PyBadge, part handheld game console, part micro-controller board. It has a 1.8 inch 160&#215;128 pixel built-in color display, video game-style buttons, built-in sound, neopixels for bling, file storage for game assets, an accelerometer, an ambient light sensor, and a speedy ATSAMD51 processor. I was excited to run it through its paces. First, I learned <a rel=\"noreferrer noopener\" aria-label=\"how to update its software (opens in a new tab)\" href=\"https:\/\/learn.adafruit.com\/adafruit-pybadge\/updating-the-bootloader\" target=\"_blank\">how to update its bootloader<\/a>, Next, I tried out an example <a href=\"https:\/\/arcade.makecode.com\/\">MakeCode<\/a> project. After that, I gathered a board definition and the libraries that are necessary to write code for it using the Arduino development environment. I needed to make sure that the <a rel=\"noreferrer noopener\" aria-label=\" (opens in a new tab)\" href=\"https:\/\/adafruit.github.io\/arduino-board-index\/package_adafruit_index.json\" target=\"_blank\">Adafruit board definition URL<\/a> was included in the Additional Boards Manager URLs in the Arduino preferences. After going through <a rel=\"noreferrer noopener\" aria-label=\"the manual process of adding libraries (opens in a new tab)\" href=\"https:\/\/learn.adafruit.com\/adafruit-pybadge\/arcada-libraries\" target=\"_blank\">the manual process of adding libraries<\/a> for the PyBadge, I finally got the example code, <em>arcada_pybadge<\/em>_test running. The example code, demonstrating the Arcada Library, was almost all text, so it wasn&#8217;t very exciting.<br><\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"install\">Installing CircuitPython<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Since Adafruit seems to be touting the powers of CircuitPython, I wanted to see what all of the hoopla was about. My previous Python experience had been with Raspberry Pis. As you can tell from my introduction, finding all of the software is very much like a scavenger hunt. I had to download <a href=\"https:\/\/circuitpython.org\/board\/pybadge\/\" target=\"_blank\" rel=\"noreferrer noopener\" aria-label=\"CircuitPython for the PyBadge (opens in a new tab)\">CircuitPython for the PyBadge<\/a> from CircuitPython.org and install it onto the PyBadge. I had to download the latest release of the Adafruit CircuitPython Bundle (libraries) from <a rel=\"noreferrer noopener\" aria-label=\"GitHub (opens in a new tab)\" href=\"https:\/\/github.com\/adafruit\/Adafruit_CircuitPython_Bundle\/releases\" target=\"_blank\">GitHub<\/a>. For a text editor, Adafruit suggests using the simple <a rel=\"noreferrer noopener\" aria-label=\"Mu editor (opens in a new tab)\" href=\"https:\/\/codewith.mu\/en\/\" target=\"_blank\">Mu editor<\/a>, which I also installed. It simplifies iterative development, since changes are automatically saved to the PyBadge.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"code\">My CircuitPython code<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Now that the scavenger hunt for all of the software is complete, on to the code&#8230; The code below is basically composed of example snippets that I gathered to do the things that I wanted to learn how to do: sound, text, images, buttons,  neopixels, accelerometer, and ambient light sensor. To run this code, you will need my 160&#215;128 8-bit .bmp format images (0.bmp &#8211; 10.bmp) in an \/images folder, a sound file (tink.wav), a bitmap font <a href=\"https:\/\/github.com\/adafruit\/Adafruit_Learning_System_Guides\/blob\/master\/PyBadge_Conference_Badge\/fonts\/Arial-12.bdf\">(Arial-12.bdf<\/a>) in a \/fonts folder, and additional libraries placed in the \/lib folder:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>neopixel<\/li><li>adafruit_bitmap_font<\/li><li>adafruit_busdevice<\/li><li>adafruit_display_text<\/li><li>adafruit_imageload<\/li><li>adafruit_lis3dh<\/li><\/ul>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"download\">Download code, image and audio files<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Download the <a href=\"https:\/\/drive.google.com\/open?id=1fZeXYsJtiVcAgixVU13JylXUZpdwDPy7\">CircuitPython code, images and audio<\/a><\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: python; title: ; notranslate\" title=\"\">\n#\n# This is a CircuitPython example file for the Adafruit PyBadge\n# Lucina 2019-06-06\n#\n# -- play sounds\n# -- set display brightness\n# -- fill screen\n# -- write text\n# -- load and display an image\n# -- turn on, set brightness of neopixels\n# -- read buttons\n# -- read accelerometer\n# -- read ambient light sensor\n#\nimport analogio\n#import array\nimport audioio\nimport board\nimport busio\nimport digitalio\nimport displayio\nimport math\nimport neopixel\nimport time\nimport neopixel\nimport adafruit_imageload\nfrom adafruit_bitmap_font import bitmap_font\nfrom adafruit_display_text.label import Label\nimport adafruit_lis3dh  # accelerometer\nfrom gamepadshift import GamePadShift\n\n# Button Constants\nBUTTON_LEFT = 128\nBUTTON_UP = 64\nBUTTON_DOWN = 32\nBUTTON_RIGHT = 16\nBUTTON_SEL = 8\nBUTTON_START = 4\nBUTTON_A = 2\nBUTTON_B = 1\n\nNUM_IMAGES = 11\nBKG_COLOR = 0xCC44FF\nMY_NAME = &quot;@lucina__m&quot;\nNAME_FONTNAME = &quot;fonts\/Arial-12.bdf&quot;\nNAME_COLOR = 0xFFFFFF\nNUM_NEOPIXELS = 5\nNEO_COLOR = 0x000088\nNEO_BRIGHTNESS = .1\nBACKLIGHT = .9\n\nwhichNeo = 0\nneoBrightness = NEO_BRIGHTNESS\nbrightness = BACKLIGHT\n\ndef fadeIn():\n    for b in range(20, brightness*100, 1):\n        board.DISPLAY.brightness = b\/100   # 0.0 --&gt; 1.0\n        time.sleep(.02)\n    \ndef fadeOut():\n    for b in range(brightness*100, 20, -1):\n        board.DISPLAY.brightness = b\/100   # 0.0 --&gt; 1.0\n        time.sleep(.02)\n\ndef loadImage(index):\n    # load image into bitmap and palette\n    #message(&quot;loading...&quot;)\n    fadeOut()\n    (bitmap, palette) = adafruit_imageload.load(&quot;images\/&quot;+str(index)+&quot;.bmp&quot;,\n                       bitmap=displayio.Bitmap,\n                       palette=displayio.Palette)\n    # create sprite\n    sprite = displayio.TileGrid(bitmap,\n                               pixel_shader=palette,\n                               x=0, y=0)\n    # remove loading message\n    #group.pop()\n    # remove previous layer\n    group.pop()\n    # add new layer\n    group.append(sprite)\n    updateNeopixels()\n    fadeIn()\n    \ndef updateNeopixels():\n    global whichNeo\n    global neoBrightness\n    for n in range(0, NUM_NEOPIXELS):\n        if n == whichNeo:\n            neopixels&#x5B;n] = NEO_COLOR\n        else:\n            neopixels&#x5B;n] = 0\n    neopixels.brightness = neoBrightness\n    neopixels.show()\n    if whichNeo == NUM_NEOPIXELS-1:\n        whichNeo = 0\n    else:\n        whichNeo = whichNeo + 1\n    print(neoBrightness)\n\ndef message(text):\n    label = Label(nameFont, text=text)\n    label.color = NAME_COLOR\n    (x, y, w, h) = label.bounding_box\n    label.x = (80 - w \/\/ 2)\n    label.y = (64 - h \/\/ 2)\n    group.append(label)\n    \ndef splashScreen(color):\n    splashBitmap = displayio.Bitmap(160, 128, 1)\n    splashPalette = displayio.Palette(1)\n    splashPalette&#x5B;0] = color\n    splashSprite = displayio.TileGrid(splashBitmap,\n                               pixel_shader=splashPalette,\n                               x=0, y=0)\n    group.append(splashSprite)\n    \n# make the image display\ngroup = displayio.Group(max_size=10)\nboard.DISPLAY.show(group)\nboard.DISPLAY.brightness = BACKLIGHT   # 0.0 --&gt; 1.0\n\n# make a splash screen background\nsplashScreen(BKG_COLOR)\n\n# display my name while image loads\nnameFont = bitmap_font.load_font(NAME_FONTNAME)\nmessage(MY_NAME)\n\n# required for PyBadge audio\nspeakerEnable = digitalio.DigitalInOut(board.SPEAKER_ENABLE)\nspeakerEnable.switch_to_output(value=True)\ndac = audioio.AudioOut(board.SPEAKER)\n\n# Generate one period of sine wave\n#length = 8000 \/\/ 440\n#sineWave = array.array(&quot;H&quot;, &#x5B;0] * length)\n#for i in range(length):\n#    sineWave&#x5B;i] = int(math.sin(math.pi * 2 * i \/ 18) * (2 ** 15) + 2 ** 15)\n\n# audio output\n#rawSine = audioio.RawSample(sineWave, sample_rate=8000)\n#dac.play(rawSine, loop=True)\n#time.sleep(1)\n#dac.stop()\n#rawSine.deinit()\n\n# play wav file\ndata = open(&quot;tink.wav&quot;, &quot;rb&quot;)\nwav = audioio.WaveFile(data)\ndac.play(wav)\nwhile dac.playing:\n    pass\nwav.deinit()\ndac.deinit()\n\n# prepare for neopixels\nneopixels = neopixel.NeoPixel(board.NEOPIXEL, NUM_NEOPIXELS,\n                            brightness=NEO_BRIGHTNESS, auto_write=False,\n                            pixel_order=neopixel.GRB)\nfor n in range(0, NUM_NEOPIXELS):\n    neopixels&#x5B;n] = 0\nneopixels.show()\n\n# prepare for gamepad buttons\npad = GamePadShift(digitalio.DigitalInOut(board.BUTTON_CLOCK),\n                   digitalio.DigitalInOut(board.BUTTON_OUT),\n                   digitalio.DigitalInOut(board.BUTTON_LATCH))\n\n# prepare accelerometer\ni2c = busio.I2C(board.SCL, board.SDA)\nint1 = digitalio.DigitalInOut(board.ACCELEROMETER_INTERRUPT)  # Set this to the correct pin for the interrupt!\nlis3dh = adafruit_lis3dh.LIS3DH_I2C(i2c, int1=int1)\n\n# prepare light sensor\nlight = analogio.AnalogIn(board.LIGHT)  # dinit() when done\n        \ngroup.pop()     # remove name\nindex = 0\nloadImage(index)\n\n# main loop\ncurrent_buttons = pad.get_pressed()\nlast_read = 0\nspeed = 5\n\nwhile True:\n    # Reading buttons too fast returns 0\n    if (last_read + 0.1) &lt; time.monotonic():\n        buttons = pad.get_pressed()\n        last_read = time.monotonic()\n    if current_buttons != buttons:\n        # Respond to the buttons\n        if (buttons &amp; BUTTON_RIGHT) &gt; 0:\n            if index &lt; NUM_IMAGES-1:\n                index = index + 1\n            else:\n                index = 0;\n            loadImage(index)\n        elif (buttons &amp; BUTTON_LEFT) &gt; 0:\n            if index &gt; 0:\n                index = index - 1\n            else:\n                index = NUM_IMAGES - 1;\n            loadImage(index)\n        elif (buttons &amp; BUTTON_UP) &gt; 0 and brightness &lt; .9:\n            brightness += .1\n            board.DISPLAY.brightness = brightness   # 0.0 --&gt; 1.0\n        elif (buttons &amp; BUTTON_DOWN) &gt; 0 and brightness &gt; .1 :\n            brightness -= .1\n            board.DISPLAY.brightness = brightness   # 0.0 --&gt; 1.0\n        elif (buttons &amp; BUTTON_A) &gt; 0 and neoBrightness &lt; 0.5:\n            neoBrightness += 0.05\n            updateNeopixels()\n        elif (buttons &amp; BUTTON_B) &gt; 0 and neoBrightness &gt; 0.05:\n            neoBrightness -= 0.05\n            updateNeopixels()\n        elif (buttons &amp; BUTTON_SEL) == BUTTON_SEL:\n            pass\n        elif (buttons &amp; BUTTON_START) == BUTTON_START:\n            pass\n    current_buttons = buttons\n    # accelerometer\n    x, y, z = lis3dh.acceleration\n    print(x, y, z)\n    if lis3dh.shake(shake_threshold=15):\n        print(&quot;Shaken!&quot;)\n    # light sensor\n    print(light.value)\n<\/pre><\/div>\n\n\n<h4 class=\"wp-block-heading\" id=\"program\">Program instructions<br><\/h4>\n\n\n\n<ul class=\"wp-block-list\"><li>up, down buttons: change the screen brightness<\/li><li>left, right buttons: change the image (this may crash because of memory allocation errors)<\/li><li>a, b buttons: change neopixel brightness, change which neopixel is lit<\/li><\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">To customize the code, you can create your own 8-bit (256) 160&#215;128 pixel images. I used Windows 10 Paint to convert .jpg files. Name the images by number, starting with <em>0.bmp<\/em>. Set the image count using the constant NUM_IMAGES. The name displayed on the startup splash screen is defined in the MY_NAME constant. The name of the sound file, <em>tink.wav<\/em>, is set in the code.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"case\">3D  printed case<\/h4>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><img loading=\"lazy\" decoding=\"async\" width=\"300\" height=\"300\" src=\"http:\/\/lucina.mastroid.com\/wordpress\/wp-content\/uploads\/2019\/06\/IMG_5583-300x300.jpg\" alt=\"\" class=\"wp-image-480\" srcset=\"http:\/\/lucina.mastroid.com\/wordpress\/wp-content\/uploads\/2019\/06\/IMG_5583-300x300.jpg 300w, http:\/\/lucina.mastroid.com\/wordpress\/wp-content\/uploads\/2019\/06\/IMG_5583-150x150.jpg 150w, http:\/\/lucina.mastroid.com\/wordpress\/wp-content\/uploads\/2019\/06\/IMG_5583-768x768.jpg 768w, http:\/\/lucina.mastroid.com\/wordpress\/wp-content\/uploads\/2019\/06\/IMG_5583-1024x1024.jpg 1024w, http:\/\/lucina.mastroid.com\/wordpress\/wp-content\/uploads\/2019\/06\/IMG_5583-45x45.jpg 45w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><figcaption>modified 3D printed snap-fit case for Adafruit PyBadge<\/figcaption><\/figure><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Since I\u2019m a 3D printing aficionado, I\u2019ll bring up the case I\u2019m using. I downloaded  <a rel=\"noreferrer noopener\" aria-label=\"a s (opens in a new tab)\" href=\"https:\/\/www.thingiverse.com\/thing:3627820\" target=\"_blank\">a snap-fit case<\/a> from Thingiverse, and modified the  model to include the speaker grill from the screw-together model. You may download <a rel=\"noreferrer noopener\" aria-label=\" (opens in a new tab)\" href=\"https:\/\/drive.google.com\/open?id=1mkG9OTA6mqTjO81c-qRnFZbKF7cZSXQM\" target=\"_blank\">the modification<\/a>.<br><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Introduction Installing CircuitPython My CircuitPython Code Download code, image and audio files Program instructions 3D printed case Introduction After seeing this new Adafruit product on Instagram (@adafruit, @ecken, and @videopixil) I was very anxious to get my hands on an Adafruit PyBadge, part handheld game console, part micro-controller board. It has a 1.8 inch 160&#215;128 pixel built-in color display, video game-style buttons, built-in sound, neopixels&hellip; <\/p>\n","protected":false},"author":1,"featured_media":456,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[6,83],"tags":[84,85,89,88,95,87,94,92],"class_list":["post-455","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-3d","category-programming-tech","tag-adafruit-pybadge","tag-circuitpython","tag-code-snippets","tag-example-code","tag-programming-pybadge","tag-pybadge","tag-pybadge-3d-printed-case","tag-pybadge-images","clearfix"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.3 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Programming an Adafruit PyBadge using CircuitPython - Lucina<\/title>\n<meta name=\"description\" content=\"example CircuitPython code that demonstrates how to program Adafruit PyBadge handheld console micro-controller board\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"http:\/\/lucina.mastroid.com\/wordpress\/2019\/06\/06\/circuitpython-adafruit-pybadge-example-code\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Programming an Adafruit PyBadge using CircuitPython - Lucina\" \/>\n<meta property=\"og:description\" content=\"example CircuitPython code that demonstrates how to program Adafruit PyBadge handheld console micro-controller board\" \/>\n<meta property=\"og:url\" content=\"http:\/\/lucina.mastroid.com\/wordpress\/2019\/06\/06\/circuitpython-adafruit-pybadge-example-code\/\" \/>\n<meta property=\"og:site_name\" content=\"Lucina\" \/>\n<meta property=\"article:published_time\" content=\"2019-06-07T03:59:25+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2019-06-07T16:55:13+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/lucina.mastroid.com\/wordpress\/wp-content\/uploads\/2019\/06\/WIN_20190606_15_52_11_Pro-2.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1541\" \/>\n\t<meta property=\"og:image:height\" content=\"1156\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Lucina\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@anucul\" \/>\n<meta name=\"twitter:site\" content=\"@anucul\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Lucina\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"http:\\\/\\\/lucina.mastroid.com\\\/wordpress\\\/2019\\\/06\\\/06\\\/circuitpython-adafruit-pybadge-example-code\\\/#article\",\"isPartOf\":{\"@id\":\"http:\\\/\\\/lucina.mastroid.com\\\/wordpress\\\/2019\\\/06\\\/06\\\/circuitpython-adafruit-pybadge-example-code\\\/\"},\"author\":{\"name\":\"Lucina\",\"@id\":\"http:\\\/\\\/lucina.mastroid.com\\\/wordpress\\\/#\\\/schema\\\/person\\\/71747c452c56e1a6cc738b3dd2621aa8\"},\"headline\":\"Programming an Adafruit PyBadge using CircuitPython\",\"datePublished\":\"2019-06-07T03:59:25+00:00\",\"dateModified\":\"2019-06-07T16:55:13+00:00\",\"mainEntityOfPage\":{\"@id\":\"http:\\\/\\\/lucina.mastroid.com\\\/wordpress\\\/2019\\\/06\\\/06\\\/circuitpython-adafruit-pybadge-example-code\\\/\"},\"wordCount\":588,\"publisher\":{\"@id\":\"http:\\\/\\\/lucina.mastroid.com\\\/wordpress\\\/#\\\/schema\\\/person\\\/71747c452c56e1a6cc738b3dd2621aa8\"},\"image\":{\"@id\":\"http:\\\/\\\/lucina.mastroid.com\\\/wordpress\\\/2019\\\/06\\\/06\\\/circuitpython-adafruit-pybadge-example-code\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/lucina.mastroid.com\\\/wordpress\\\/wp-content\\\/uploads\\\/2019\\\/06\\\/WIN_20190606_15_52_11_Pro-2.jpg\",\"keywords\":[\"adafruit pybadge\",\"CircuitPython\",\"code snippets\",\"example code\",\"programming pybadge\",\"Pybadge\",\"pybadge 3d printed case\",\"pybadge images\"],\"articleSection\":[\"3D Printing\",\"programming\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"http:\\\/\\\/lucina.mastroid.com\\\/wordpress\\\/2019\\\/06\\\/06\\\/circuitpython-adafruit-pybadge-example-code\\\/\",\"url\":\"http:\\\/\\\/lucina.mastroid.com\\\/wordpress\\\/2019\\\/06\\\/06\\\/circuitpython-adafruit-pybadge-example-code\\\/\",\"name\":\"Programming an Adafruit PyBadge using CircuitPython - Lucina\",\"isPartOf\":{\"@id\":\"http:\\\/\\\/lucina.mastroid.com\\\/wordpress\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"http:\\\/\\\/lucina.mastroid.com\\\/wordpress\\\/2019\\\/06\\\/06\\\/circuitpython-adafruit-pybadge-example-code\\\/#primaryimage\"},\"image\":{\"@id\":\"http:\\\/\\\/lucina.mastroid.com\\\/wordpress\\\/2019\\\/06\\\/06\\\/circuitpython-adafruit-pybadge-example-code\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/lucina.mastroid.com\\\/wordpress\\\/wp-content\\\/uploads\\\/2019\\\/06\\\/WIN_20190606_15_52_11_Pro-2.jpg\",\"datePublished\":\"2019-06-07T03:59:25+00:00\",\"dateModified\":\"2019-06-07T16:55:13+00:00\",\"description\":\"example CircuitPython code that demonstrates how to program Adafruit PyBadge handheld console micro-controller board\",\"breadcrumb\":{\"@id\":\"http:\\\/\\\/lucina.mastroid.com\\\/wordpress\\\/2019\\\/06\\\/06\\\/circuitpython-adafruit-pybadge-example-code\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"http:\\\/\\\/lucina.mastroid.com\\\/wordpress\\\/2019\\\/06\\\/06\\\/circuitpython-adafruit-pybadge-example-code\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"http:\\\/\\\/lucina.mastroid.com\\\/wordpress\\\/2019\\\/06\\\/06\\\/circuitpython-adafruit-pybadge-example-code\\\/#primaryimage\",\"url\":\"http:\\\/\\\/lucina.mastroid.com\\\/wordpress\\\/wp-content\\\/uploads\\\/2019\\\/06\\\/WIN_20190606_15_52_11_Pro-2.jpg\",\"contentUrl\":\"http:\\\/\\\/lucina.mastroid.com\\\/wordpress\\\/wp-content\\\/uploads\\\/2019\\\/06\\\/WIN_20190606_15_52_11_Pro-2.jpg\",\"width\":1541,\"height\":1156,\"caption\":\"Adafruit PyBadge in 3D printed case\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"http:\\\/\\\/lucina.mastroid.com\\\/wordpress\\\/2019\\\/06\\\/06\\\/circuitpython-adafruit-pybadge-example-code\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"http:\\\/\\\/lucina.mastroid.com\\\/wordpress\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Programming an Adafruit PyBadge using CircuitPython\"}]},{\"@type\":\"WebSite\",\"@id\":\"http:\\\/\\\/lucina.mastroid.com\\\/wordpress\\\/#website\",\"url\":\"http:\\\/\\\/lucina.mastroid.com\\\/wordpress\\\/\",\"name\":\"Lucina\",\"description\":\"interests\",\"publisher\":{\"@id\":\"http:\\\/\\\/lucina.mastroid.com\\\/wordpress\\\/#\\\/schema\\\/person\\\/71747c452c56e1a6cc738b3dd2621aa8\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"http:\\\/\\\/lucina.mastroid.com\\\/wordpress\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"http:\\\/\\\/lucina.mastroid.com\\\/wordpress\\\/#\\\/schema\\\/person\\\/71747c452c56e1a6cc738b3dd2621aa8\",\"name\":\"Lucina\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"http:\\\/\\\/lucina.mastroid.com\\\/wordpress\\\/wp-content\\\/uploads\\\/2017\\\/10\\\/hibiscus-2-1.jpg\",\"url\":\"http:\\\/\\\/lucina.mastroid.com\\\/wordpress\\\/wp-content\\\/uploads\\\/2017\\\/10\\\/hibiscus-2-1.jpg\",\"contentUrl\":\"http:\\\/\\\/lucina.mastroid.com\\\/wordpress\\\/wp-content\\\/uploads\\\/2017\\\/10\\\/hibiscus-2-1.jpg\",\"width\":955,\"height\":955,\"caption\":\"Lucina\"},\"logo\":{\"@id\":\"http:\\\/\\\/lucina.mastroid.com\\\/wordpress\\\/wp-content\\\/uploads\\\/2017\\\/10\\\/hibiscus-2-1.jpg\"},\"sameAs\":[\"https:\\\/\\\/www.instagram.com\\\/lucina__m\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Programming an Adafruit PyBadge using CircuitPython - Lucina","description":"example CircuitPython code that demonstrates how to program Adafruit PyBadge handheld console micro-controller board","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":"http:\/\/lucina.mastroid.com\/wordpress\/2019\/06\/06\/circuitpython-adafruit-pybadge-example-code\/","og_locale":"en_US","og_type":"article","og_title":"Programming an Adafruit PyBadge using CircuitPython - Lucina","og_description":"example CircuitPython code that demonstrates how to program Adafruit PyBadge handheld console micro-controller board","og_url":"http:\/\/lucina.mastroid.com\/wordpress\/2019\/06\/06\/circuitpython-adafruit-pybadge-example-code\/","og_site_name":"Lucina","article_published_time":"2019-06-07T03:59:25+00:00","article_modified_time":"2019-06-07T16:55:13+00:00","og_image":[{"width":1541,"height":1156,"url":"http:\/\/lucina.mastroid.com\/wordpress\/wp-content\/uploads\/2019\/06\/WIN_20190606_15_52_11_Pro-2.jpg","type":"image\/jpeg"}],"author":"Lucina","twitter_card":"summary_large_image","twitter_creator":"@anucul","twitter_site":"@anucul","twitter_misc":{"Written by":"Lucina","Est. reading time":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"http:\/\/lucina.mastroid.com\/wordpress\/2019\/06\/06\/circuitpython-adafruit-pybadge-example-code\/#article","isPartOf":{"@id":"http:\/\/lucina.mastroid.com\/wordpress\/2019\/06\/06\/circuitpython-adafruit-pybadge-example-code\/"},"author":{"name":"Lucina","@id":"http:\/\/lucina.mastroid.com\/wordpress\/#\/schema\/person\/71747c452c56e1a6cc738b3dd2621aa8"},"headline":"Programming an Adafruit PyBadge using CircuitPython","datePublished":"2019-06-07T03:59:25+00:00","dateModified":"2019-06-07T16:55:13+00:00","mainEntityOfPage":{"@id":"http:\/\/lucina.mastroid.com\/wordpress\/2019\/06\/06\/circuitpython-adafruit-pybadge-example-code\/"},"wordCount":588,"publisher":{"@id":"http:\/\/lucina.mastroid.com\/wordpress\/#\/schema\/person\/71747c452c56e1a6cc738b3dd2621aa8"},"image":{"@id":"http:\/\/lucina.mastroid.com\/wordpress\/2019\/06\/06\/circuitpython-adafruit-pybadge-example-code\/#primaryimage"},"thumbnailUrl":"http:\/\/lucina.mastroid.com\/wordpress\/wp-content\/uploads\/2019\/06\/WIN_20190606_15_52_11_Pro-2.jpg","keywords":["adafruit pybadge","CircuitPython","code snippets","example code","programming pybadge","Pybadge","pybadge 3d printed case","pybadge images"],"articleSection":["3D Printing","programming"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"http:\/\/lucina.mastroid.com\/wordpress\/2019\/06\/06\/circuitpython-adafruit-pybadge-example-code\/","url":"http:\/\/lucina.mastroid.com\/wordpress\/2019\/06\/06\/circuitpython-adafruit-pybadge-example-code\/","name":"Programming an Adafruit PyBadge using CircuitPython - Lucina","isPartOf":{"@id":"http:\/\/lucina.mastroid.com\/wordpress\/#website"},"primaryImageOfPage":{"@id":"http:\/\/lucina.mastroid.com\/wordpress\/2019\/06\/06\/circuitpython-adafruit-pybadge-example-code\/#primaryimage"},"image":{"@id":"http:\/\/lucina.mastroid.com\/wordpress\/2019\/06\/06\/circuitpython-adafruit-pybadge-example-code\/#primaryimage"},"thumbnailUrl":"http:\/\/lucina.mastroid.com\/wordpress\/wp-content\/uploads\/2019\/06\/WIN_20190606_15_52_11_Pro-2.jpg","datePublished":"2019-06-07T03:59:25+00:00","dateModified":"2019-06-07T16:55:13+00:00","description":"example CircuitPython code that demonstrates how to program Adafruit PyBadge handheld console micro-controller board","breadcrumb":{"@id":"http:\/\/lucina.mastroid.com\/wordpress\/2019\/06\/06\/circuitpython-adafruit-pybadge-example-code\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["http:\/\/lucina.mastroid.com\/wordpress\/2019\/06\/06\/circuitpython-adafruit-pybadge-example-code\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"http:\/\/lucina.mastroid.com\/wordpress\/2019\/06\/06\/circuitpython-adafruit-pybadge-example-code\/#primaryimage","url":"http:\/\/lucina.mastroid.com\/wordpress\/wp-content\/uploads\/2019\/06\/WIN_20190606_15_52_11_Pro-2.jpg","contentUrl":"http:\/\/lucina.mastroid.com\/wordpress\/wp-content\/uploads\/2019\/06\/WIN_20190606_15_52_11_Pro-2.jpg","width":1541,"height":1156,"caption":"Adafruit PyBadge in 3D printed case"},{"@type":"BreadcrumbList","@id":"http:\/\/lucina.mastroid.com\/wordpress\/2019\/06\/06\/circuitpython-adafruit-pybadge-example-code\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"http:\/\/lucina.mastroid.com\/wordpress\/"},{"@type":"ListItem","position":2,"name":"Programming an Adafruit PyBadge using CircuitPython"}]},{"@type":"WebSite","@id":"http:\/\/lucina.mastroid.com\/wordpress\/#website","url":"http:\/\/lucina.mastroid.com\/wordpress\/","name":"Lucina","description":"interests","publisher":{"@id":"http:\/\/lucina.mastroid.com\/wordpress\/#\/schema\/person\/71747c452c56e1a6cc738b3dd2621aa8"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"http:\/\/lucina.mastroid.com\/wordpress\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"http:\/\/lucina.mastroid.com\/wordpress\/#\/schema\/person\/71747c452c56e1a6cc738b3dd2621aa8","name":"Lucina","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"http:\/\/lucina.mastroid.com\/wordpress\/wp-content\/uploads\/2017\/10\/hibiscus-2-1.jpg","url":"http:\/\/lucina.mastroid.com\/wordpress\/wp-content\/uploads\/2017\/10\/hibiscus-2-1.jpg","contentUrl":"http:\/\/lucina.mastroid.com\/wordpress\/wp-content\/uploads\/2017\/10\/hibiscus-2-1.jpg","width":955,"height":955,"caption":"Lucina"},"logo":{"@id":"http:\/\/lucina.mastroid.com\/wordpress\/wp-content\/uploads\/2017\/10\/hibiscus-2-1.jpg"},"sameAs":["https:\/\/www.instagram.com\/lucina__m"]}]}},"_links":{"self":[{"href":"http:\/\/lucina.mastroid.com\/wordpress\/wp-json\/wp\/v2\/posts\/455","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/lucina.mastroid.com\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/lucina.mastroid.com\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/lucina.mastroid.com\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/lucina.mastroid.com\/wordpress\/wp-json\/wp\/v2\/comments?post=455"}],"version-history":[{"count":9,"href":"http:\/\/lucina.mastroid.com\/wordpress\/wp-json\/wp\/v2\/posts\/455\/revisions"}],"predecessor-version":[{"id":497,"href":"http:\/\/lucina.mastroid.com\/wordpress\/wp-json\/wp\/v2\/posts\/455\/revisions\/497"}],"wp:featuredmedia":[{"embeddable":true,"href":"http:\/\/lucina.mastroid.com\/wordpress\/wp-json\/wp\/v2\/media\/456"}],"wp:attachment":[{"href":"http:\/\/lucina.mastroid.com\/wordpress\/wp-json\/wp\/v2\/media?parent=455"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/lucina.mastroid.com\/wordpress\/wp-json\/wp\/v2\/categories?post=455"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/lucina.mastroid.com\/wordpress\/wp-json\/wp\/v2\/tags?post=455"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}