<!DOCTYPE html><html xmlns:cc="http://creativecommons.org/ns#"><head prefix="og: http://ogp.me/ns# fb: http://ogp.me/ns/fb# medium-com: http://ogp.me/ns/fb/medium-com#"><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=contain"><title>Labs</title><link rel="canonical" href="https://labs.bsoares.com"><link id="feedLink" rel="alternate" type="application/rss+xml" title="RSS" href="https://labs.bsoares.com/feed"><meta name="robots" content="index,follow"><meta name="title" content="Labs"><meta name="referrer" content="unsafe-url"><meta name="description" content="Some experiments."><meta name="keywords" content="ARDUINO, PROCESSING, DEVELOPMENT, TECH, TECHNOLOGY"><meta name="theme-color" content="#000000"><meta property="og:title" content="Labs"><meta property="twitter:title" content="Labs"><meta property="og:url" content="https://labs.bsoares.com/"><meta property="og:image" content="https://cdn-images-1.medium.com/max/1200/1*AM0HY3_6WX9TBC3vWXuZmQ.jpeg"><meta property="fb:app_id" content="542599432471018"><meta property="og:description" content="Some experiments."><meta name="twitter:description" content="Some experiments."><meta name="twitter:image:src" content="https://cdn-images-1.medium.com/max/1200/1*AM0HY3_6WX9TBC3vWXuZmQ.jpeg"><meta property="og:type" content="medium-com:collection"><meta name="twitter:card" content="summary_large_image"><meta property="medium-com:creator" content="https://labs.bsoares.com/@bsoares"><meta name="twitter:creator" content="@bsoares"><meta name="twitter:site" content="@bsoares"><meta property="og:site_name" content="Labs"><meta name="twitter:app:name:iphone" content="Medium"><meta name="twitter:app:id:iphone" content="828256236"><meta name="twitter:app:url:iphone" content="medium://bsoares-labs"><meta property="al:ios:app_name" content="Medium"><meta property="al:ios:app_store_id" content="828256236"><meta property="al:android:package" content="com.medium.reader"><meta property="al:android:app_name" content="Medium"><meta property="al:ios:url" content="medium://bsoares-labs"><meta property="al:android:url" content="medium://bsoares-labs"><meta property="al:web:url" content="https://labs.bsoares.com/"><link rel="search" type="application/opensearchdescription+xml" title="Medium" href="/osd.xml" /><link rel="alternate" href="android-app://com.medium.reader/https/medium.com/bsoares-labs" /><script type="application/ld+json">{"@context": "http://schema.org", "@graph": [{"@type": "WebSite", "url": "https:\/\/labs.bsoares.com", "name": "Labs", "alternateName": "Some experiments."},{"@type": "Organization", "url": "https:\/\/labs.bsoares.com", "name": "Labs"}]}</script><link rel="stylesheet" href="https://cdn-static-1.medium.com/_/fp/css/main-branding-base.AvCEi0HU4Mc2jiHe-Qm5-A.12.css"><script>!function(n,e){var t,o,i,c=[],f={passive:!0,capture:!0},r=new Date,a="pointerup",u="pointercancel";function p(n,c){t||(t=c,o=n,i=new Date,w(e),s())}function s(){o>=0&&o<i-r&&(c.forEach(function(n){n(o,t)}),c=[])}function l(t){if(t.cancelable){var o=(t.timeStamp>1e12?new Date:performance.now())-t.timeStamp;"pointerdown"==t.type?function(t,o){function i(){p(t,o),r()}function c(){r()}function r(){e(a,i,f),e(u,c,f)}n(a,i,f),n(u,c,f)}(o,t):p(o,t)}}function w(n){["click","mousedown","keydown","touchstart","pointerdown"].forEach(function(e){n(e,l,f)})}w(n),self.perfMetrics=self.perfMetrics||{},self.perfMetrics.onFirstInputDelay=function(n){c.push(n),s()}}(addEventListener,removeEventListener);</script><script>document.domain = document.domain;</script><script>if (window.top !== window.self) window.location = 'about:blank';var OB_startTime = new Date().getTime(); var OB_loadErrors = []; function _onerror(e) { OB_loadErrors.push(e) }; if (document.addEventListener) document.addEventListener("error", _onerror, true); else if (document.attachEvent) document.attachEvent("onerror", _onerror); function _asyncScript(u) {var d = document, f = d.getElementsByTagName("script")[0], s = d.createElement("script"); s.type = "text/javascript"; s.async = true; s.src = u; f.parentNode.insertBefore(s, f);}function _asyncStyles(u) {var d = document, f = d.getElementsByTagName("script")[0], s = d.createElement("link"); s.rel = "stylesheet"; s.href = u; f.parentNode.insertBefore(s, f); return s}(new Image()).src = "/_/stat?event=pixel.load&origin=" + encodeURIComponent(location.origin);</script><script>window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new Date; ga("create", "G-7JY7T788PK", "auto", {"allowLinker": true, "legacyCookieDomain": window.location.hostname});ga("send", "pageview");ga("create", "UA-47684229-1", "auto", 'tracker0'); ga("tracker0.send", "pageview");</script><script async src="https://www.google-analytics.com/analytics.js"></script><script>(function () {var height = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight; var width = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth; document.write("<style>section.section-image--fullBleed.is-backgrounded {padding-top: " + Math.round(1.1 * height) + "px;}section.section-image--fullScreen.is-backgrounded, section.section-image--coverFade.is-backgrounded {min-height: " + height + "px; padding-top: " + Math.round(0.5 * height) + "px;}.u-height100vh {height: " + height + "px !important;}.u-height110vh {height: " + Math.round(1.1 * height) + "px !important;}.u-minHeight100vh {min-height: " + height + "px !important;}.u-maxHeight100vh {max-height: " + height + "px !important;}section.section-image--coverFade {height: " + height + "px;}.section-aspectRatioViewportPlaceholder, .section-aspectRatioViewportCropPlaceholder {max-height: " + height + "px;}.section-aspectRatioViewportBottomSpacer, .section-aspectRatioViewportBottomPlaceholder {max-height: " + Math.round(0.5 * height) + "px;}.zoomable:before {top: " + (-1 * height) + "px; left: " + (-1 * width) + "px; padding: " + height + "px " + width + "px;}</style>");})()</script><!--[if lt IE 9]><script charset="UTF-8" src="https://cdn-static-1.medium.com/_/fp/js/shiv.RI2ePTZ5gFmMgLzG5bEVAA.12.js"></script><![endif]--><link rel="icon" href="https://miro.medium.com/1*m-R_BkNf1Qjr1YbyOIJY2w.png" class="js-favicon"><link rel="apple-touch-icon" sizes="152x152" href="https://cdn-images-1.medium.com/fit/c/304/304/1*AM0HY3_6WX9TBC3vWXuZmQ.jpeg"><link rel="apple-touch-icon" sizes="120x120" href="https://cdn-images-1.medium.com/fit/c/240/240/1*AM0HY3_6WX9TBC3vWXuZmQ.jpeg"><link rel="apple-touch-icon" sizes="76x76" href="https://cdn-images-1.medium.com/fit/c/152/152/1*AM0HY3_6WX9TBC3vWXuZmQ.jpeg"><link rel="apple-touch-icon" sizes="60x60" href="https://cdn-images-1.medium.com/fit/c/120/120/1*AM0HY3_6WX9TBC3vWXuZmQ.jpeg"><link rel="mask-icon" href="https://cdn-static-1.medium.com/_/fp/icons/monogram-mask.KPLCSFEZviQN0jQ7veN2RQ.12.svg" color="#171717"></head><body itemscope class="  v-unbound v-glyph v-glyph--m2-unbound-source-serif-pro is-noJs"><script>document.body.className = document.body.className.replace(/(^|\s)is-noJs(\s|$)/, "$1is-js$2")</script><div class="site-main" id="container"><div class="butterBar butterBar--error"></div><div class="surface"><div id="prerendered" class="screenContent"><div class="metabar u-clearfix js-metabar"><div class="branch-journeys-top"></div><div class="js-metabarMiddle metabar-inner u-marginAuto u-maxWidth1032 u-flexCenter u-justifyContentSpaceBetween u-height65 u-xs-height56 u-paddingHorizontal20"><div class="metabar-block u-flex1 u-flexCenter"><div class="js-metabarLogoLeft"><a href="https://medium.com/" data-log-event="home" class="siteNav-logo u-fillBlack u-flex0 u-flexCenter u-paddingTop0"><span class="svgIcon svgIcon--logoWordmarkPride svgIcon--120x27px is-flushLeft u-flex0 u-flexCenter u-paddingTop0"><svg class="svgIcon-use" width="120" height="27" fill="none" ><mask id="mask0_238_6555" style="mask-type:alpha" maskUnits="userSpaceOnUse" x="1" y="0" width="119" height="27"><path d="M29.69 2.36l.035-.007v-.278h-7.27l-6.75 15.979-6.75-15.98H1.123v.279l.035.007c1.327.302 2 .752 2 2.374v18.994c0 1.622-.676 2.072-2.003 2.373l-.035.008v.279h5.315v-.278l-.035-.008c-1.327-.301-2-.751-2-2.374V5.836l8.67 20.552h.492l8.924-21.125v18.934c-.114 1.282-.781 1.678-1.983 1.95l-.035.01v.274h9.258v-.275l-.036-.008c-1.203-.273-1.886-.67-2-1.95l-.006-19.464h.006c0-1.622.674-2.072 2-2.374zm4.228 12.582c.152-3.412 1.368-5.875 3.41-5.918.63.01 1.158.219 1.569.62.872.852 1.282 2.635 1.22 5.298h-6.199zm-.091.962h10.851v-.046c-.03-2.61-.781-4.639-2.228-6.033-1.251-1.204-3.104-1.867-5.049-1.867h-.043c-1.01 0-2.248.247-3.13.693a7.315 7.315 0 00-2.623 2.086c-1.185 1.479-1.903 3.477-2.078 5.724l-.015.202a12.401 12.401 0 00-.024.554c-.004.194-.006.39-.002.586.117 5.087 2.846 9.153 7.692 9.153 4.254 0 6.73-3.132 7.349-7.336l-.313-.11c-1.085 2.259-3.034 3.628-5.252 3.461-3.028-.228-5.347-3.32-5.137-7.066M56.947 22.8c-.356.85-1.099 1.318-2.094 1.318-.995 0-1.905-.689-2.551-1.939-.695-1.342-1.06-3.24-1.06-5.487 0-4.678 1.444-7.703 3.68-7.703.936 0 1.673.467 2.025 1.284V22.8zm7.198 3.334c-1.327-.316-2-.787-2-2.491V.956l-8.062 2.392v.293l.05-.004c1.111-.09 1.866.065 2.304.472.343.32.51.809.51 1.498v3.11c-.795-.511-1.74-.76-2.887-.76-2.327 0-4.453.987-5.987 2.779-1.599 1.867-2.444 4.42-2.444 7.38 0 5.287 2.584 8.84 6.43 8.84 2.25 0 4.06-1.241 4.888-3.336v2.811h7.233v-.29l-.035-.008zM71.06 4.041c0-1.65-1.236-2.896-2.875-2.896-1.632 0-2.908 1.273-2.908 2.896 0 1.624 1.278 2.896 2.908 2.896 1.64 0 2.875-1.245 2.875-2.896zm1.903 22.092c-1.327-.316-2-.787-2-2.491h-.006V8.01l-7.234 2.092v.284l.043.004c1.566.14 1.994.683 1.994 2.526V26.43H73v-.29l-.037-.008zm18.536 0c-1.327-.316-2-.787-2-2.491V8.01l-6.888 2.023v.285l.041.004c1.28.136 1.65.71 1.65 2.56v9.88c-.427.85-1.228 1.356-2.197 1.39-1.573 0-2.439-1.07-2.439-3.012V8.01l-7.234 2.092v.284l.044.004c1.565.14 1.994.683 1.994 2.526v8.362a9.434 9.434 0 00.15 1.74l.13.57c.613 2.211 2.218 3.367 4.732 3.367 2.13 0 3.996-1.328 4.817-3.405v2.885h7.234v-.29l-.034-.013zm28.102.299v-.292l-.035-.008c-1.44-.335-2-.965-2-2.249V13.251c0-3.315-1.85-5.294-4.946-5.294-2.257 0-4.16 1.314-4.892 3.36-.583-2.168-2.258-3.36-4.735-3.36-2.175 0-3.88 1.157-4.612 3.11V8.012l-7.233 2.006v.286l.043.004c1.547.139 1.993.697 1.993 2.492v13.631h6.75v-.29l-.035-.01c-1.15-.271-1.52-.767-1.52-2.04V11.906c.305-.715.917-1.562 2.127-1.562 1.504 0 2.266 1.05 2.266 3.117V26.43h6.751v-.29l-.036-.01c-1.148-.271-1.519-.767-1.519-2.04V13.25a7.006 7.006 0 00-.095-1.21c.322-.777.969-1.697 2.23-1.697 1.525 0 2.266 1.02 2.266 3.117v12.97h7.232z" fill="#242424"/></mask><g filter="url(#filter0_f_238_6555)" mask="url(#mask0_238_6555)"><path d="M42.302-64.7l-15.52-6.736-51.395 118.44 15.521 6.735 51.394-118.44z" fill="#000"/><path d="M53.178-59.98L42.3-64.7-9.093 53.738l10.877 4.72 51.394-118.44z" fill="#603917"/><path d="M64.961-54.868L53.178-59.98 1.784 58.459l11.783 5.113 51.394-118.44z" fill="#71E2FD"/><path d="M75.84-50.148l-10.877-4.72-51.394 118.44 10.877 4.72L75.84-50.148z" fill="#FF9BC9"/><path d="M86.715-45.428l-10.877-4.72-51.394 118.44 10.877 4.72 51.394-118.44z" fill="#FF472F"/><path d="M97.592-40.708l-10.877-4.72L35.32 73.012l10.877 4.72 51.394-118.44z" fill="#FF8312"/><path d="M108.471-35.988l-10.877-4.72L46.2 77.732l10.877 4.72 51.394-118.44z" fill="#FFCE00"/><path d="M120.254-30.875l-11.783-5.113-51.395 118.44 11.784 5.113 51.394-118.44z" fill="#48E348"/><path d="M131.131-26.155l-10.877-4.72L68.86 87.565l10.877 4.72 51.394-118.44z" fill="#008EF0"/><path d="M148.477-18.63l-17.344-7.525-51.394 118.44 17.344 7.526 51.394-118.44z" fill="#9A50FC"/></g><defs><filter id="filter0_f_238_6555" x="-29.505" y="-76.327" width="182.873" height="181.029" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB"><feFlood flood-opacity="0" result="BackgroundImageFix"/><feBlend in="SourceGraphic" in2="BackgroundImageFix" result="shape"/><feGaussianBlur stdDeviation="2.446" result="effect1_foregroundBlur_238_6555"/></filter></defs></svg></span><span class="u-textScreenReader">Homepage</span></a></div><div class="u-paddingLeft10 u-sm-show r-paddingRight10"><a href="https://rsci.app.link/?%24canonical_url=https%3A%2F%2Fmedium.com/bsoares-labs%3F~feature=LoMobileNavBar&~channel=ShowCollectionHome&~stage=m2">Open in app</a></div></div><div class="metabar-block u-flex0 u-flexCenter"><div class="u-flexCenter u-height65 u-xs-height56"><div class="buttonSet buttonSet--wide u-lineHeightInherit"><a class="button button--primary button--chromeless u-accentColor--buttonNormal is-inSiteNavBar u-xs-hide js-signInButton"   href="https://medium.com/m/signin?redirect=https%3A%2F%2Flabs.bsoares.com%2F&amp;source=--------------------------nav_reg&amp;operation=login" data-action="sign-in-prompt" data-redirect="https://labs.bsoares.com/" data-action-source="--------------------------nav_reg">Sign in</a><a class="button button--primary button--withChrome u-accentColor--buttonNormal is-inSiteNavBar js-signUpButton"   href="https://medium.com/m/signin?redirect=https%3A%2F%2Flabs.bsoares.com%2F&amp;source=--------------------------nav_reg&amp;operation=register" data-action="sign-up-prompt" data-redirect="https://labs.bsoares.com/" data-action-source="--------------------------nav_reg">Get started</a></div></div></div></div></div><div class="metabar metabar--spacer js-metabarSpacer u-height65 u-xs-height56"></div><div class="collectionHeader js-collectionHeaderContainer u-relative collectionHeader--layoutMedium collectionHeader--alignmentLeft collectionHeader--withoutLogo collectionHeader--withoutBackground collectionHeader--colorBehaviorSubtle collectionHeader--withoutNavigation collectionHeader--editorLayoutTitle is-modeView is-whiteLabel"><div class="collectionHeader-aspectRatioTable"><div class="collectionHeader-aspectRatioContent u-backgroundSizeCover js-collectionHeaderBackground"><div class="collectionHeader-overlayBackground u-height100vh"></div><header class="collectionHeader-heroAndInlineNav u-borderBox u-maxWidth1072 u-paddingLeft20 u-paddingRight20 u-marginAuto u-foreground js-collectionHeader"><div class="collectionHeader-hero js-collectionHeaderHero u-clearfix"><div class="collectionHeader-heroInner"><div class="collectionHeader-logo js-collectionHeaderLogo" style=""><a class="link u-baseColor--link"   href="https://labs.bsoares.com" title="Go to Labs" aria-label="Go to Labs" data-collection-slug="bsoares-labs"><div class="u-relative u-marginAuto"><div style="padding-bottom: 75%"></div><img class="collectionHeader-logoImage js-collectionHeaderLogoImage"  /></div></a></div><div class="collectionHeader-nameAndDescription"><a class="link link--noUnderline u-baseColor--link"   href="https://labs.bsoares.com" title="Go to Labs" aria-label="Go to Labs" data-collection-slug="bsoares-labs"><h1 class="collectionHeader-name js-collectionName u-foreground u-baseColor--textDark u-paddingBottom4 u-lineHeightTightest u-contentSansBold u-fontSize40 u-xs-fontSize32">Labs</h1></a><h2 class="collectionHeader-description js-collectionDescription u-foreground u-baseColor--textNormal u-contentSansRegular u-fontSize24 u-xs-fontSize18">Alguns experimentos com eletrônica e programação :-)</h2></div></div></div></header></div><div class="collectionHeader-aspectRatioCell"><div class="collectionHeader-aspectRatioFullWidth"></div></div></div><div class="collectionHeader-blockNav"><div class="u-borderBox u-maxWidth1072 u-paddingLeft20 u-paddingRight20 u-marginAuto"><nav class="collectionHeader-nav u-clearfix js-collectionHeaderNav u-lineHeight40 u-overflowHiddenY"><div class="buttonSet u-flex1 u-noWrap u-overflowX u-paddingBottom100 u-xs-marginRight15"><label class="button button--small button--chromeless button--withIcon button--withSvgIcon inputGroup u-sm-hide metabar-predictiveSearch u-baseColor--buttonNormal u-baseColor--placeholderNormal" title="Search Labs"><span class="svgIcon svgIcon--search svgIcon--25px u-baseColor--iconLight"><svg class="svgIcon-use" width="25" height="25" ><path d="M20.067 18.933l-4.157-4.157a6 6 0 10-.884.884l4.157 4.157a.624.624 0 10.884-.884zM6.5 11c0-2.62 2.13-4.75 4.75-4.75S16 8.38 16 11s-2.13 4.75-4.75 4.75S6.5 13.62 6.5 11z"/></svg></span><input class="js-predictiveSearchInput textInput textInput--rounded textInput--darkText u-baseColor--textNormal textInput--transparent" type="search" placeholder="Search Labs" required="true" data-collection-id="5fa59f8779b5" /></label><a class="button button--chromeless is-touchIconBlackPulse u-baseColor--buttonNormal button--withIcon button--withSvgIcon button--chromeless u-verticalAlignMiddle"   href="https://twitter.com/bsoares" title="Visit “Labs” on Twitter" aria-label="Visit “Labs” on Twitter" rel="me" target="_blank"><span class="button-defaultState"><span class="svgIcon svgIcon--twitter svgIcon--25px"><svg class="svgIcon-use" width="25" height="25" fill="none" ><path d="M14.215 11.3l5.764-6.7h-1.366l-5.005 5.818L9.611 4.6H5l6.045 8.798L5 20.424h1.366l5.286-6.144 4.221 6.144h4.61L14.216 11.3zm-1.871 2.175l-.612-.876-4.874-6.97h2.098l3.933 5.625.613.876 5.112 7.312h-2.098l-4.172-5.966z" fill="#242424"/></svg></span></span></a><a class="button button--chromeless is-touchIconBlackPulse u-baseColor--buttonNormal button--withIcon button--withSvgIcon button--chromeless u-verticalAlignMiddle"   href="//facebook.com/brusoab" title="Visit “Labs” on Facebook" aria-label="Visit “Labs” on Facebook" rel="me" target="_blank"><span class="button-defaultState"><span class="svgIcon svgIcon--facebookFilled svgIcon--25px"><svg class="svgIcon-use" width="25" height="25" ><path d="M21 12.646C21 7.65 16.97 3.6 12 3.6s-9 4.05-9 9.046a9.026 9.026 0 007.59 8.924v-6.376H8.395V12.64h2.193v-1.88c0-2.186 1.328-3.375 3.267-3.375.93 0 1.728.07 1.96.1V9.77H14.47c-1.055 0-1.26.503-1.26 1.242v1.63h2.517l-.33 2.554H13.21V21.6c4.398-.597 7.79-4.373 7.79-8.954"/></svg></span></span></a></div><div class="buttonSet u-textAlignRight u-marginLeft18 u-flex0 u-noWrap"><button class="button button--primary button--smallest u-noUserSelect button--withChrome u-accentColor--buttonNormal button--followCollection js-followCollectionButton"  data-action="sign-up-prompt" data-sign-in-action="toggle-subscribe-collection" data-requires-token="true" data-redirect="https://medium.com/_/subscribe/collection/bsoares-labs" data-action-source="header----5fa59f8779b5----------------------follow_pub"><span class="button-label  button-defaultState js-buttonLabel">Follow</span><span class="button-label button-activeState">Following</span></button></div></nav></div></div></div><div class="u-marginBottom40 js-collectionStream"><div class="streamItem streamItem--section js-streamItem"><section class="u-marginTop30 u-xs-margin0 u-marginBottom15 u-maxWidth1032 u-sm-paddingLeft20 u-sm-paddingRight20 u-borderBox u-marginAuto"><div class="row u-marginTop30 u-marginLeftNegative12 u-marginRightNegative12"><div class="col u-xs-size12of12 js-trackPostPresentation u-paddingLeft12 u-marginBottom15 u-paddingRight12 u-size6of12" data-source="collection_home---4------0-----------------------" data-post-id="ee13cce39007" data-index="0"><div class="u-lineHeightBase postItem"><a href="https://labs.bsoares.com/ping-pong-com-matriz-de-leds-8x8-ee13cce39007?source=collection_home---4------0-----------------------" data-action="open-post" data-action-value="https://labs.bsoares.com/ping-pong-com-matriz-de-leds-8x8-ee13cce39007?source=collection_home---4------0-----------------------" class="u-block u-xs-height170 u-width600 u-height272  u-backgroundSizeCover u-backgroundOriginBorderBox u-backgroundColorGrayLight u-borderLighter" style="background-image: url(&quot;https://cdn-images-1.medium.com/max/1200/1*kEX5-8QrMQ41AwuhcsDNpA.jpeg&quot;); background-position: 50% 50% !important;"><span class="u-textScreenReader">Ping Pong com Matriz de Leds 8x8</span></a></div><div class="col u-xs-marginBottom10 u-paddingLeft0 u-paddingRight0 u-paddingTop15 u-marginBottom30"><a class=""   href="https://labs.bsoares.com/ping-pong-com-matriz-de-leds-8x8-ee13cce39007?source=collection_home---4------0-----------------------" data-action-source="collection_home---4------0-----------------------" data-post-id="ee13cce39007"><h3 class="u-contentSansBold u-lineHeightTightest u-xs-fontSize24 u-paddingBottom2 u-paddingTop5 u-fontSize32"><div class="u-letterSpacingTight u-lineHeightTighter u-breakWord u-textOverflowEllipsis u-lineClamp3 u-fontSize24">Ping Pong com Matriz de Leds 8x8</div></h3></a><div class="u-clearfix u-marginTop20"><div class="u-flexCenter"><div class="postMetaInline-avatar u-flex0"><a class="link u-baseColor--link avatar"   href="https://labs.bsoares.com/@bsoares" data-action="show-user-card" data-action-value="a1da27ad3cf9" data-action-type="hover" data-user-id="a1da27ad3cf9" data-collection-slug="bsoares-labs" dir="auto"><img  src="https://cdn-images-1.medium.com/fit/c/72/72/1*YoHcBCKu7vfqalnvm5OOmA@2x.jpeg" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of Bruno Soares"></a></div><div class="postMetaInline postMetaInline-authorLockup ui-captionStrong u-flex1 u-noWrapWithEllipsis"><a class="ds-link ds-link--styleSubtle link link--darken link--accent u-accentColor--textNormal u-accentColor--textDarken"   href="https://labs.bsoares.com/@bsoares" data-action="show-user-card" data-action-value="a1da27ad3cf9" data-action-type="hover" data-user-id="a1da27ad3cf9" data-collection-slug="bsoares-labs" dir="auto">Bruno Soares</a><div class="ui-caption u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><time datetime="2009-07-06T22:41:57.000Z">Jul 6, 2009</time><span class="middotDivider u-fontSize12"></span><span class="readingTime" title="1 min read"></span></div></div></div></div></div></div><div class="col u-xs-size12of12 js-trackPostPresentation u-paddingLeft12 u-marginBottom15 u-paddingRight12 u-size6of12" data-source="collection_home---4------1-----------------------" data-post-id="bfbe97068dd8" data-index="1"><div class="u-lineHeightBase postItem"><a href="https://labs.bsoares.com/pianoduino-arduino-processing-soundcipher-bfbe97068dd8?source=collection_home---4------1-----------------------" data-action="open-post" data-action-value="https://labs.bsoares.com/pianoduino-arduino-processing-soundcipher-bfbe97068dd8?source=collection_home---4------1-----------------------" class="u-block u-xs-height170 u-width600 u-height272  u-backgroundSizeCover u-backgroundOriginBorderBox u-backgroundColorGrayLight u-borderLighter" style="background-image: url(&quot;https://cdn-images-1.medium.com/max/1200/1*lpvR3cJBVLD-SmWyaY5eaA.jpeg&quot;); background-position: 50% 50% !important;"><span class="u-textScreenReader">PianoDuino (Arduino + Processing + SoundCipher)</span></a></div><div class="col u-xs-marginBottom10 u-paddingLeft0 u-paddingRight0 u-paddingTop15 u-marginBottom30"><a class=""   href="https://labs.bsoares.com/pianoduino-arduino-processing-soundcipher-bfbe97068dd8?source=collection_home---4------1-----------------------" data-action-source="collection_home---4------1-----------------------" data-post-id="bfbe97068dd8"><h3 class="u-contentSansBold u-lineHeightTightest u-xs-fontSize24 u-paddingBottom2 u-paddingTop5 u-fontSize32"><div class="u-letterSpacingTight u-lineHeightTighter u-breakWord u-textOverflowEllipsis u-lineClamp3 u-fontSize24">PianoDuino (Arduino + Processing + SoundCipher)</div></h3></a><div class="u-clearfix u-marginTop20"><div class="u-flexCenter"><div class="postMetaInline-avatar u-flex0"><a class="link u-baseColor--link avatar"   href="https://labs.bsoares.com/@bsoares" data-action="show-user-card" data-action-value="a1da27ad3cf9" data-action-type="hover" data-user-id="a1da27ad3cf9" data-collection-slug="bsoares-labs" dir="auto"><img  src="https://cdn-images-1.medium.com/fit/c/72/72/1*YoHcBCKu7vfqalnvm5OOmA@2x.jpeg" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of Bruno Soares"></a></div><div class="postMetaInline postMetaInline-authorLockup ui-captionStrong u-flex1 u-noWrapWithEllipsis"><a class="ds-link ds-link--styleSubtle link link--darken link--accent u-accentColor--textNormal u-accentColor--textDarken"   href="https://labs.bsoares.com/@bsoares" data-action="show-user-card" data-action-value="a1da27ad3cf9" data-action-type="hover" data-user-id="a1da27ad3cf9" data-collection-slug="bsoares-labs" dir="auto">Bruno Soares</a><div class="ui-caption u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><time datetime="2009-05-30T18:17:48.000Z">May 30, 2009</time><span class="middotDivider u-fontSize12"></span><span class="readingTime" title="1 min read"></span></div></div></div></div></div></div></div><div class="row u-marginTop30 u-marginLeftNegative12 u-marginRightNegative12"><div class="col u-xs-size12of12 js-trackPostPresentation u-paddingLeft12 u-marginBottom15 u-paddingRight12 u-size4of12" data-source="collection_home---4------2-----------------------" data-post-id="18db76af53b7" data-index="2"><div class="u-lineHeightBase postItem"><a href="https://labs.bsoares.com/opera%C3%A7%C3%B5es-bin%C3%A1rias-18db76af53b7?source=collection_home---4------2-----------------------" data-action="open-post" data-action-value="https://labs.bsoares.com/opera%C3%A7%C3%B5es-bin%C3%A1rias-18db76af53b7?source=collection_home---4------2-----------------------" class="u-block u-xs-height170 u-height172 u-backgroundSizeCover u-backgroundOriginBorderBox u-backgroundColorGrayLight u-borderLighter" style="background-image: url(&quot;https://cdn-images-1.medium.com/max/800/1*6Uh1D9BgflLd7zLnBoYyuQ.jpeg&quot;); background-position: 50% 50% !important;"><span class="u-textScreenReader">Operações binárias</span></a></div><div class="col u-xs-marginBottom10 u-paddingLeft0 u-paddingRight0 u-paddingTop15 u-marginBottom30"><a class=""   href="https://labs.bsoares.com/opera%C3%A7%C3%B5es-bin%C3%A1rias-18db76af53b7?source=collection_home---4------2-----------------------" data-action-source="collection_home---4------2-----------------------" data-post-id="18db76af53b7"><h3 class="u-contentSansBold u-lineHeightTightest u-xs-fontSize24 u-paddingBottom2 u-paddingTop5 u-fontSize32"><div class="u-letterSpacingTight u-lineHeightTighter u-breakWord u-textOverflowEllipsis u-lineClamp3 u-fontSize24">Operações binárias</div></h3></a><div class="u-clearfix u-marginTop20"><div class="u-flexCenter"><div class="postMetaInline-avatar u-flex0"><a class="link u-baseColor--link avatar"   href="https://labs.bsoares.com/@bsoares" data-action="show-user-card" data-action-value="a1da27ad3cf9" data-action-type="hover" data-user-id="a1da27ad3cf9" data-collection-slug="bsoares-labs" dir="auto"><img  src="https://cdn-images-1.medium.com/fit/c/72/72/1*YoHcBCKu7vfqalnvm5OOmA@2x.jpeg" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of Bruno Soares"></a></div><div class="postMetaInline postMetaInline-authorLockup ui-captionStrong u-flex1 u-noWrapWithEllipsis"><a class="ds-link ds-link--styleSubtle link link--darken link--accent u-accentColor--textNormal u-accentColor--textDarken"   href="https://labs.bsoares.com/@bsoares" data-action="show-user-card" data-action-value="a1da27ad3cf9" data-action-type="hover" data-user-id="a1da27ad3cf9" data-collection-slug="bsoares-labs" dir="auto">Bruno Soares</a><div class="ui-caption u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><time datetime="2009-05-26T02:28:09.000Z">May 25, 2009</time><span class="middotDivider u-fontSize12"></span><span class="readingTime" title="7 min read"></span></div></div></div></div></div></div><div class="col u-xs-size12of12 js-trackPostPresentation u-paddingLeft12 u-marginBottom15 u-paddingRight12 u-size4of12" data-source="collection_home---4------3-----------------------" data-post-id="c8f253dbf26d" data-index="3"><div class="u-lineHeightBase postItem"><a href="https://labs.bsoares.com/controlando-led-rgb-com-arduino-e-processing-c8f253dbf26d?source=collection_home---4------3-----------------------" data-action="open-post" data-action-value="https://labs.bsoares.com/controlando-led-rgb-com-arduino-e-processing-c8f253dbf26d?source=collection_home---4------3-----------------------" class="u-block u-xs-height170 u-height172 u-backgroundSizeCover u-backgroundOriginBorderBox u-backgroundColorGrayLight u-borderLighter" style="background-image: url(&quot;https://cdn-images-1.medium.com/max/800/1*Mcs38G5_Y_9xOmuLUmQJrA.jpeg&quot;); background-position: 50% 50% !important;"><span class="u-textScreenReader">Controlando Led RGB com Arduino e Processing</span></a></div><div class="col u-xs-marginBottom10 u-paddingLeft0 u-paddingRight0 u-paddingTop15 u-marginBottom30"><a class=""   href="https://labs.bsoares.com/controlando-led-rgb-com-arduino-e-processing-c8f253dbf26d?source=collection_home---4------3-----------------------" data-action-source="collection_home---4------3-----------------------" data-post-id="c8f253dbf26d"><h3 class="u-contentSansBold u-lineHeightTightest u-xs-fontSize24 u-paddingBottom2 u-paddingTop5 u-fontSize32"><div class="u-letterSpacingTight u-lineHeightTighter u-breakWord u-textOverflowEllipsis u-lineClamp3 u-fontSize24">Controlando Led RGB com Arduino e Processing</div></h3></a><div class="u-clearfix u-marginTop20"><div class="u-flexCenter"><div class="postMetaInline-avatar u-flex0"><a class="link u-baseColor--link avatar"   href="https://labs.bsoares.com/@bsoares" data-action="show-user-card" data-action-value="a1da27ad3cf9" data-action-type="hover" data-user-id="a1da27ad3cf9" data-collection-slug="bsoares-labs" dir="auto"><img  src="https://cdn-images-1.medium.com/fit/c/72/72/1*YoHcBCKu7vfqalnvm5OOmA@2x.jpeg" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of Bruno Soares"></a></div><div class="postMetaInline postMetaInline-authorLockup ui-captionStrong u-flex1 u-noWrapWithEllipsis"><a class="ds-link ds-link--styleSubtle link link--darken link--accent u-accentColor--textNormal u-accentColor--textDarken"   href="https://labs.bsoares.com/@bsoares" data-action="show-user-card" data-action-value="a1da27ad3cf9" data-action-type="hover" data-user-id="a1da27ad3cf9" data-collection-slug="bsoares-labs" dir="auto">Bruno Soares</a><div class="ui-caption u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><time datetime="2009-04-27T02:10:31.000Z">Apr 26, 2009</time><span class="middotDivider u-fontSize12"></span><span class="readingTime" title="2 min read"></span></div></div></div></div></div></div><div class="col u-xs-size12of12 js-trackPostPresentation u-paddingLeft12 u-marginBottom15 u-paddingRight12 u-size4of12" data-source="collection_home---4------4-----------------------" data-post-id="b72b5b3fe472" data-index="4"><div class="u-lineHeightBase postItem"><a href="https://labs.bsoares.com/twitter-hardware-b72b5b3fe472?source=collection_home---4------4-----------------------" data-action="open-post" data-action-value="https://labs.bsoares.com/twitter-hardware-b72b5b3fe472?source=collection_home---4------4-----------------------" class="u-block u-xs-height170 u-height172 u-backgroundSizeCover u-backgroundOriginBorderBox u-backgroundColorGrayLight u-borderLighter" style="background-image: url(&quot;https://cdn-images-1.medium.com/max/800/1*D4eDprTuYAWiuSvnbCF5bA.png&quot;); background-position: 50% 50% !important;"><span class="u-textScreenReader">Twitter Hardware</span></a></div><div class="col u-xs-marginBottom10 u-paddingLeft0 u-paddingRight0 u-paddingTop15 u-marginBottom30"><a class=""   href="https://labs.bsoares.com/twitter-hardware-b72b5b3fe472?source=collection_home---4------4-----------------------" data-action-source="collection_home---4------4-----------------------" data-post-id="b72b5b3fe472"><h3 class="u-contentSansBold u-lineHeightTightest u-xs-fontSize24 u-paddingBottom2 u-paddingTop5 u-fontSize32"><div class="u-letterSpacingTight u-lineHeightTighter u-breakWord u-textOverflowEllipsis u-lineClamp3 u-fontSize24">Twitter Hardware</div></h3></a><div class="u-clearfix u-marginTop20"><div class="u-flexCenter"><div class="postMetaInline-avatar u-flex0"><a class="link u-baseColor--link avatar"   href="https://labs.bsoares.com/@bsoares" data-action="show-user-card" data-action-value="a1da27ad3cf9" data-action-type="hover" data-user-id="a1da27ad3cf9" data-collection-slug="bsoares-labs" dir="auto"><img  src="https://cdn-images-1.medium.com/fit/c/72/72/1*YoHcBCKu7vfqalnvm5OOmA@2x.jpeg" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of Bruno Soares"></a></div><div class="postMetaInline postMetaInline-authorLockup ui-captionStrong u-flex1 u-noWrapWithEllipsis"><a class="ds-link ds-link--styleSubtle link link--darken link--accent u-accentColor--textNormal u-accentColor--textDarken"   href="https://labs.bsoares.com/@bsoares" data-action="show-user-card" data-action-value="a1da27ad3cf9" data-action-type="hover" data-user-id="a1da27ad3cf9" data-collection-slug="bsoares-labs" dir="auto">Bruno Soares</a><div class="ui-caption u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><time datetime="2009-04-18T22:08:13.000Z">Apr 18, 2009</time><span class="middotDivider u-fontSize12"></span><span class="readingTime" title="1 min read"></span></div></div></div></div></div></div></div></section></div></div><style class="js-collectionStyle">
.u-accentColor--borderLight {border-color: #1A8917 !important;}
.u-accentColor--borderNormal {border-color: #1A8917 !important;}
.u-accentColor--borderDark {border-color: #0F730C !important;}
.u-accentColor--iconLight .svgIcon,.u-accentColor--iconLight.svgIcon {fill: #1A8917 !important;}
.u-accentColor--iconNormal .svgIcon,.u-accentColor--iconNormal.svgIcon {fill: #1A8917 !important;}
.u-accentColor--iconDark .svgIcon,.u-accentColor--iconDark.svgIcon {fill: #0F730C !important;}
.u-accentColor--textNormal {color: #0F730C !important;}
.u-accentColor--hoverTextNormal:hover {color: #0F730C !important;}
.u-accentColor--textNormal.u-accentColor--textDarken:hover {color: #0F730C !important;}
.u-accentColor--textDark {color: #0F730C !important;}
.u-accentColor--backgroundLight {background-color: #1A8917 !important;}
.u-accentColor--backgroundNormal {background-color: #1A8917 !important;}
.u-accentColor--backgroundDark {background-color: #0F730C !important;}
.u-accentColor--buttonDark {border-color: #0F730C !important; color: #0F730C !important;}
.u-accentColor--buttonDark:hover {border-color: #0F730C !important;}
.u-accentColor--buttonDark .icon:before,.u-accentColor--buttonDark .svgIcon{color: #0F730C !important; fill: #0F730C !important;}
.u-accentColor--buttonNormal:not(.clapButton--largePill) {border-color: #1A8917 !important; color: #0F730C !important;}
.u-accentColor--buttonNormal:hover {border-color: #0F730C !important;}
.u-accentColor--buttonNormal .icon:before,.u-accentColor--buttonNormal .svgIcon{color: #1A8917 !important; fill: #1A8917 !important;}
.u-accentColor--buttonNormal.button--filled .icon:before,.u-accentColor--buttonNormal.button--filled .svgIcon{color: rgba(255, 255, 255, 1) !important; fill: rgba(255, 255, 255, 1) !important;}
.u-accentColor--buttonDark.button--filled,.u-accentColor--buttonDark.button--withChrome.is-active,.u-accentColor--fillWhenActive.is-active {background-color: #0F730C !important; border-color: #0F730C !important; color: rgba(255, 255, 255, 1) !important; fill: rgba(255, 255, 255, 1) !important;}
.u-accentColor--buttonNormal.button--filled:not(.clapButton--largePill),.u-accentColor--buttonNormal.button--withChrome.is-active:not(.clapButton--largePill) {background-color: #1A8917 !important; border-color: #1A8917 !important; color: rgba(255, 255, 255, 1) !important; fill: rgba(255, 255, 255, 1) !important;}
.postArticle.is-withAccentColors .markup--user,.postArticle.is-withAccentColors .markup--query {color: #0F730C !important;}
.u-accentColor--highlightFaint {background-color: rgba(232, 243, 232, 1) !important;}
.u-accentColor--highlightStrong.is-active .svgIcon {fill: rgba(163, 208, 162, 1) !important;}
.postArticle.is-withAccentColors .markup--quote.is-other {background-color: rgba(232, 243, 232, 1) !important;}
body.is-withMagicUnderlines .postArticle.is-withAccentColors .markup--quote.is-other {background-color: transparent !important; background-image: linear-gradient(to bottom, rgba(232, 243, 232, 1), rgba(232, 243, 232, 1));}
.postArticle.is-withAccentColors .markup--quote.is-me {background-color: rgba(209, 231, 209, 1) !important;}
body.is-withMagicUnderlines .postArticle.is-withAccentColors .markup--quote.is-me {background-color: transparent !important; background-image: linear-gradient(to bottom, rgba(209, 231, 209, 1), rgba(209, 231, 209, 1));}
.postArticle.is-withAccentColors .markup--quote.is-targeted {background-color: rgba(163, 208, 162, 1) !important;}
body.is-withMagicUnderlines .postArticle.is-withAccentColors .markup--quote.is-targeted {background-color: transparent !important; background-image: linear-gradient(to bottom, rgba(163, 208, 162, 1), rgba(163, 208, 162, 1));}
.postArticle.is-withAccentColors .markup--quote.is-selected {background-color: rgba(163, 208, 162, 1) !important;}
body.is-withMagicUnderlines .postArticle.is-withAccentColors .markup--quote.is-selected {background-color: transparent !important; background-image: linear-gradient(to bottom, rgba(163, 208, 162, 1), rgba(163, 208, 162, 1));}
.postArticle.is-withAccentColors .markup--highlight {background-color: rgba(163, 208, 162, 1) !important;}
body.is-withMagicUnderlines .postArticle.is-withAccentColors .markup--highlight {background-color: transparent !important; background-image: linear-gradient(to bottom, rgba(163, 208, 162, 1), rgba(163, 208, 162, 1));}</style><style class="js-collectionStyleConstant">.u-imageBgColor {background-color: rgba(0, 0, 0, 0.24705882352941178);}
.u-imageSpectrum .u-baseColor--borderLight {border-color: rgba(255, 255, 255, 0.6980392156862745) !important;}
.u-imageSpectrum .u-baseColor--borderNormal {border-color: rgba(255, 255, 255, 0.8980392156862745) !important;}
.u-imageSpectrum .u-baseColor--borderDark {border-color: rgba(255, 255, 255, 0.9490196078431372) !important;}
.u-imageSpectrum .u-baseColor--iconLight .svgIcon,.u-imageSpectrum .u-baseColor--iconLight.svgIcon {fill: rgba(255, 255, 255, 0.8) !important;}
.u-imageSpectrum .u-baseColor--iconNormal .svgIcon,.u-imageSpectrum .u-baseColor--iconNormal.svgIcon {fill: rgba(255, 255, 255, 0.9490196078431372) !important;}
.u-imageSpectrum .u-baseColor--iconDark .svgIcon,.u-imageSpectrum .u-baseColor--iconDark.svgIcon {fill: rgba(255, 255, 255, 1) !important;}
.u-imageSpectrum .u-baseColor--textNormal {color: rgba(255, 255, 255, 0.9490196078431372) !important;}
.u-imageSpectrum .u-baseColor--textNormal.u-baseColor--textDarken:hover {color: rgba(255, 255, 255, 1) !important;}
.u-imageSpectrum .u-baseColor--textDark {color: rgba(255, 255, 255, 1) !important;}
.u-imageSpectrum .u-baseColor--textDarker {color: rgba(255, 255, 255, 1) !important;}
.u-imageSpectrum .u-baseColor--backgroundLight {background-color: rgba(255, 255, 255, 0.8980392156862745) !important;}
.u-imageSpectrum .u-baseColor--backgroundNormal {background-color: rgba(255, 255, 255, 0.9490196078431372) !important;}
.u-imageSpectrum .u-baseColor--backgroundDark {background-color: rgba(255, 255, 255, 1) !important;}
.u-imageSpectrum .u-baseColor--buttonLight {border-color: rgba(255, 255, 255, 0.6980392156862745) !important; color: rgba(255, 255, 255, 0.8) !important;}
.u-imageSpectrum .u-baseColor--buttonLight:hover {border-color: rgba(255, 255, 255, 0.6980392156862745) !important;}
.u-imageSpectrum .u-baseColor--buttonLight .icon:before,.u-imageSpectrum .u-baseColor--buttonLight .svgIcon {color: rgba(255, 255, 255, 0.8) !important; fill: rgba(255, 255, 255, 0.8) !important;}
.u-imageSpectrum .u-baseColor--buttonDark {border-color: rgba(255, 255, 255, 0.9490196078431372) !important; color: rgba(255, 255, 255, 1) !important;}
.u-imageSpectrum .u-baseColor--buttonDark:hover {border-color: rgba(255, 255, 255, 1) !important;}
.u-imageSpectrum .u-baseColor--buttonDark .icon:before,.u-imageSpectrum .u-baseColor--buttonDark .svgIcon {color: rgba(255, 255, 255, 1) !important; fill: rgba(255, 255, 255, 1) !important;}
.u-imageSpectrum .u-baseColor--buttonNormal {border-color: rgba(255, 255, 255, 0.8980392156862745) !important; color: rgba(255, 255, 255, 0.9490196078431372) !important;}
.u-imageSpectrum .u-baseColor--buttonNormal:hover {border-color: rgba(255, 255, 255, 0.9490196078431372) !important;}
.u-imageSpectrum .u-baseColor--buttonNormal .icon:before,.u-imageSpectrum .u-baseColor--buttonNormal .svgIcon {color: rgba(255, 255, 255, 0.9490196078431372) !important; fill: rgba(255, 255, 255, 0.9490196078431372) !important;}
.u-imageSpectrum .u-baseColor--buttonDark.button--filled,.u-imageSpectrum .u-baseColor--buttonDark.button--withChrome.is-active {background-color: rgba(255, 255, 255, 1) !important; border-color: rgba(255, 255, 255, 1) !important; color: rgba(0, 0, 0, 0.24705882352941178) !important; fill: rgba(0, 0, 0, 0.24705882352941178) !important;}
.u-imageSpectrum .u-baseColor--buttonNormal.button--filled,.u-imageSpectrum .u-baseColor--buttonNormal.button--withChrome.is-active {background-color: rgba(255, 255, 255, 0.9490196078431372) !important; border-color: rgba(255, 255, 255, 0.9490196078431372) !important; color: rgba(0, 0, 0, 0.24705882352941178) !important; fill: rgba(0, 0, 0, 0.24705882352941178) !important;}
.u-imageSpectrum .u-baseColor--link {color: rgba(255, 255, 255, 0.9490196078431372) !important;}
.u-imageSpectrum .u-baseColor--link.link--darkenOnHover:hover {color: rgba(255, 255, 255, 1) !important;}
.u-imageSpectrum .u-baseColor--link.link--darken:hover,.u-imageSpectrum .u-baseColor--link.link--darken:focus,.u-imageSpectrum .u-baseColor--link.link--darken:active {color: rgba(255, 255, 255, 1) !important;}
.u-imageSpectrum .u-baseColor--link.link--dark {color: rgba(255, 255, 255, 1) !important;}
.u-imageSpectrum .u-baseColor--link.link--dark.link--darken:hover,.u-imageSpectrum .u-baseColor--link.link--dark.link--darken:focus,.u-imageSpectrum .u-baseColor--link.link--dark.link--darken:active {color: rgba(255, 255, 255, 1) !important;}
.u-imageSpectrum .u-baseColor--link.link--darker {color: rgba(255, 255, 255, 1) !important;}
.u-imageSpectrum .u-baseColor--placeholderNormal ::-webkit-input-placeholder {color: rgba(255, 255, 255, 0.8);}
.u-imageSpectrum .u-baseColor--placeholderNormal ::-moz-placeholder {color: rgba(255, 255, 255, 0.8);}
.u-imageSpectrum .u-baseColor--placeholderNormal :-ms-input-placeholder {color: rgba(255, 255, 255, 0.8);}
.u-imageSpectrum .svgIcon--logoWordmark {stroke: none !important; fill: rgba(255, 255, 255, 1) !important;}
.u-imageSpectrum .svgIcon--logoMonogram {stroke: none !important; fill: rgba(255, 255, 255, 1) !important;}
.u-imageSpectrum  .ui-h1,.u-imageSpectrum  .ui-h2,.u-imageSpectrum  .ui-h3,.u-imageSpectrum  .ui-h4,.u-imageSpectrum  .ui-brand1,.u-imageSpectrum  .ui-brand2,.u-imageSpectrum  .ui-captionStrong {color: rgba(255, 255, 255, 1) !important; fill: rgba(255, 255, 255, 1) !important;}
.u-imageSpectrum  .ui-body,.u-imageSpectrum  .ui-caps {color: rgba(255, 255, 255, 1) !important; fill: rgba(255, 255, 255, 1) !important;}
.u-imageSpectrum  .ui-summary,.u-imageSpectrum  .ui-caption {color: rgba(255, 255, 255, 0.8) !important; fill: rgba(255, 255, 255, 0.8) !important;}
.u-imageSpectrum .u-accentColor--borderLight {border-color: rgba(255, 255, 255, 0.6980392156862745) !important;}
.u-imageSpectrum .u-accentColor--borderNormal {border-color: rgba(255, 255, 255, 0.8980392156862745) !important;}
.u-imageSpectrum .u-accentColor--borderDark {border-color: rgba(255, 255, 255, 0.9490196078431372) !important;}
.u-imageSpectrum .u-accentColor--iconLight .svgIcon,.u-imageSpectrum .u-accentColor--iconLight.svgIcon {fill: rgba(255, 255, 255, 0.8) !important;}
.u-imageSpectrum .u-accentColor--iconNormal .svgIcon,.u-imageSpectrum .u-accentColor--iconNormal.svgIcon {fill: rgba(255, 255, 255, 0.9490196078431372) !important;}
.u-imageSpectrum .u-accentColor--iconDark .svgIcon,.u-imageSpectrum .u-accentColor--iconDark.svgIcon {fill: rgba(255, 255, 255, 1) !important;}
.u-imageSpectrum .u-accentColor--textNormal {color: rgba(255, 255, 255, 0.9490196078431372) !important;}
.u-imageSpectrum .u-accentColor--hoverTextNormal:hover {color: rgba(255, 255, 255, 0.9490196078431372) !important;}
.u-imageSpectrum .u-accentColor--textNormal.u-accentColor--textDarken:hover {color: rgba(255, 255, 255, 1) !important;}
.u-imageSpectrum .u-accentColor--textDark {color: rgba(255, 255, 255, 1) !important;}
.u-imageSpectrum .u-accentColor--backgroundLight {background-color: rgba(255, 255, 255, 0.8980392156862745) !important;}
.u-imageSpectrum .u-accentColor--backgroundNormal {background-color: rgba(255, 255, 255, 0.9490196078431372) !important;}
.u-imageSpectrum .u-accentColor--backgroundDark {background-color: rgba(255, 255, 255, 1) !important;}
.u-imageSpectrum .u-accentColor--buttonDark {border-color: rgba(255, 255, 255, 0.9490196078431372) !important; color: rgba(255, 255, 255, 1) !important;}
.u-imageSpectrum .u-accentColor--buttonDark:hover {border-color: rgba(255, 255, 255, 1) !important;}
.u-imageSpectrum .u-accentColor--buttonDark .icon:before,.u-imageSpectrum .u-accentColor--buttonDark .svgIcon{color: rgba(255, 255, 255, 1) !important; fill: rgba(255, 255, 255, 1) !important;}
.u-imageSpectrum .u-accentColor--buttonNormal:not(.clapButton--largePill) {border-color: rgba(255, 255, 255, 0.8980392156862745) !important; color: rgba(255, 255, 255, 0.9490196078431372) !important;}
.u-imageSpectrum .u-accentColor--buttonNormal:hover {border-color: rgba(255, 255, 255, 0.9490196078431372) !important;}
.u-imageSpectrum .u-accentColor--buttonNormal .icon:before,.u-imageSpectrum .u-accentColor--buttonNormal .svgIcon{color: rgba(255, 255, 255, 0.9490196078431372) !important; fill: rgba(255, 255, 255, 0.9490196078431372) !important;}
.u-imageSpectrum .u-accentColor--buttonNormal.button--filled .icon:before,.u-imageSpectrum .u-accentColor--buttonNormal.button--filled .svgIcon{color: rgba(0, 0, 0, 0.24705882352941178) !important; fill: rgba(0, 0, 0, 0.24705882352941178) !important;}
.u-imageSpectrum .u-accentColor--buttonDark.button--filled,.u-imageSpectrum .u-accentColor--buttonDark.button--withChrome.is-active,.u-imageSpectrum .u-accentColor--fillWhenActive.is-active {background-color: rgba(255, 255, 255, 1) !important; border-color: rgba(255, 255, 255, 1) !important; color: rgba(0, 0, 0, 0.24705882352941178) !important; fill: rgba(0, 0, 0, 0.24705882352941178) !important;}
.u-imageSpectrum .u-accentColor--buttonNormal.button--filled:not(.clapButton--largePill),.u-imageSpectrum .u-accentColor--buttonNormal.button--withChrome.is-active:not(.clapButton--largePill) {background-color: rgba(255, 255, 255, 0.9490196078431372) !important; border-color: rgba(255, 255, 255, 0.9490196078431372) !important; color: rgba(0, 0, 0, 0.24705882352941178) !important; fill: rgba(0, 0, 0, 0.24705882352941178) !important;}
.u-imageSpectrum .postArticle.is-withAccentColors .markup--user,.u-imageSpectrum .postArticle.is-withAccentColors .markup--query {color: rgba(255, 255, 255, 0.9490196078431372) !important;}
.u-imageSpectrum .u-accentColor--highlightFaint {background-color: rgba(255, 255, 255, 0.2) !important;}
.u-imageSpectrum .u-accentColor--highlightStrong.is-active .svgIcon {fill: rgba(255, 255, 255, 0.6) !important;}
.postArticle.is-withAccentColors .u-imageSpectrum .markup--quote.is-other {background-color: rgba(255, 255, 255, 0.2) !important;}
body.is-withMagicUnderlines .postArticle.is-withAccentColors .u-imageSpectrum .markup--quote.is-other {background-color: transparent !important; background-image: linear-gradient(to bottom, rgba(255, 255, 255, 0.2), rgba(255, 255, 255, 0.2));}
.postArticle.is-withAccentColors .u-imageSpectrum .markup--quote.is-me {background-color: rgba(255, 255, 255, 0.4) !important;}
body.is-withMagicUnderlines .postArticle.is-withAccentColors .u-imageSpectrum .markup--quote.is-me {background-color: transparent !important; background-image: linear-gradient(to bottom, rgba(255, 255, 255, 0.4), rgba(255, 255, 255, 0.4));}
.postArticle.is-withAccentColors .u-imageSpectrum .markup--quote.is-targeted {background-color: rgba(255, 255, 255, 0.6) !important;}
body.is-withMagicUnderlines .postArticle.is-withAccentColors .u-imageSpectrum .markup--quote.is-targeted {background-color: transparent !important; background-image: linear-gradient(to bottom, rgba(255, 255, 255, 0.6), rgba(255, 255, 255, 0.6));}
.postArticle.is-withAccentColors .u-imageSpectrum .markup--quote.is-selected {background-color: rgba(255, 255, 255, 0.6) !important;}
body.is-withMagicUnderlines .postArticle.is-withAccentColors .u-imageSpectrum .markup--quote.is-selected {background-color: transparent !important; background-image: linear-gradient(to bottom, rgba(255, 255, 255, 0.6), rgba(255, 255, 255, 0.6));}
.postArticle.is-withAccentColors .u-imageSpectrum .markup--highlight {background-color: rgba(255, 255, 255, 0.6) !important;}
body.is-withMagicUnderlines .postArticle.is-withAccentColors .u-imageSpectrum .markup--highlight {background-color: transparent !important; background-image: linear-gradient(to bottom, rgba(255, 255, 255, 0.6), rgba(255, 255, 255, 0.6));}.u-resetSpectrum .u-tintBgColor {background-color: rgba(255, 255, 255, 1) !important;}.u-resetSpectrum .u-tintBgColor .u-fadeLeft:before {background-image: linear-gradient(to right, rgba(255, 255, 255, 1) 0%, rgba(255, 255, 255, 0) 100%) !important;}.u-resetSpectrum .u-tintBgColor .u-fadeRight:after {background-image: linear-gradient(to right, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 1) 100%) !important;}
.u-resetSpectrum .u-baseColor--borderLight {border-color: rgba(0, 0, 0, 0.2980392156862745) !important;}
.u-resetSpectrum .u-baseColor--borderNormal {border-color: rgba(0, 0, 0, 0.4980392156862745) !important;}
.u-resetSpectrum .u-baseColor--borderDark {border-color: rgba(0, 0, 0, 0.6) !important;}
.u-resetSpectrum .u-baseColor--iconLight .svgIcon,.u-resetSpectrum .u-baseColor--iconLight.svgIcon {fill: rgba(0, 0, 0, 0.2980392156862745) !important;}
.u-resetSpectrum .u-baseColor--iconNormal .svgIcon,.u-resetSpectrum .u-baseColor--iconNormal.svgIcon {fill: rgba(0, 0, 0, 0.4980392156862745) !important;}
.u-resetSpectrum .u-baseColor--iconDark .svgIcon,.u-resetSpectrum .u-baseColor--iconDark.svgIcon {fill: rgba(0, 0, 0, 0.6) !important;}
.u-resetSpectrum .u-baseColor--textNormal {color: rgba(0, 0, 0, 0.4980392156862745) !important;}
.u-resetSpectrum .u-baseColor--textNormal.u-baseColor--textDarken:hover {color: rgba(0, 0, 0, 0.6) !important;}
.u-resetSpectrum .u-baseColor--textDark {color: rgba(0, 0, 0, 0.6) !important;}
.u-resetSpectrum .u-baseColor--textDarker {color: rgba(0, 0, 0, 0.8) !important;}
.u-resetSpectrum .u-baseColor--backgroundLight {background-color: rgba(0, 0, 0, 0.09803921568627451) !important;}
.u-resetSpectrum .u-baseColor--backgroundNormal {background-color: rgba(0, 0, 0, 0.2) !important;}
.u-resetSpectrum .u-baseColor--backgroundDark {background-color: rgba(0, 0, 0, 0.2980392156862745) !important;}
.u-resetSpectrum .u-baseColor--buttonLight {border-color: rgba(0, 0, 0, 0.2980392156862745) !important; color: rgba(0, 0, 0, 0.2980392156862745) !important;}
.u-resetSpectrum .u-baseColor--buttonLight:hover {border-color: rgba(0, 0, 0, 0.2980392156862745) !important;}
.u-resetSpectrum .u-baseColor--buttonLight .icon:before,.u-resetSpectrum .u-baseColor--buttonLight .svgIcon {color: rgba(0, 0, 0, 0.2980392156862745) !important; fill: rgba(0, 0, 0, 0.2980392156862745) !important;}
.u-resetSpectrum .u-baseColor--buttonDark {border-color: rgba(0, 0, 0, 0.6) !important; color: rgba(0, 0, 0, 0.6) !important;}
.u-resetSpectrum .u-baseColor--buttonDark:hover {border-color: rgba(0, 0, 0, 0.8) !important;}
.u-resetSpectrum .u-baseColor--buttonDark .icon:before,.u-resetSpectrum .u-baseColor--buttonDark .svgIcon {color: rgba(0, 0, 0, 0.6) !important; fill: rgba(0, 0, 0, 0.6) !important;}
.u-resetSpectrum .u-baseColor--buttonNormal {border-color: rgba(0, 0, 0, 0.4980392156862745) !important; color: rgba(0, 0, 0, 0.4980392156862745) !important;}
.u-resetSpectrum .u-baseColor--buttonNormal:hover {border-color: rgba(0, 0, 0, 0.6) !important;}
.u-resetSpectrum .u-baseColor--buttonNormal .icon:before,.u-resetSpectrum .u-baseColor--buttonNormal .svgIcon {color: rgba(0, 0, 0, 0.4980392156862745) !important; fill: rgba(0, 0, 0, 0.4980392156862745) !important;}
.u-resetSpectrum .u-baseColor--buttonDark.button--filled,.u-resetSpectrum .u-baseColor--buttonDark.button--withChrome.is-active {background-color: rgba(0, 0, 0, 0.2980392156862745) !important; border-color: rgba(0, 0, 0, 0.2980392156862745) !important; color: rgba(255, 255, 255, 1) !important; fill: rgba(255, 255, 255, 1) !important;}
.u-resetSpectrum .u-baseColor--buttonNormal.button--filled,.u-resetSpectrum .u-baseColor--buttonNormal.button--withChrome.is-active {background-color: rgba(0, 0, 0, 0.2) !important; border-color: rgba(0, 0, 0, 0.2) !important; color: rgba(255, 255, 255, 1) !important; fill: rgba(255, 255, 255, 1) !important;}
.u-resetSpectrum .u-baseColor--link {color: rgba(0, 0, 0, 0.4980392156862745) !important;}
.u-resetSpectrum .u-baseColor--link.link--darkenOnHover:hover {color: rgba(0, 0, 0, 0.6) !important;}
.u-resetSpectrum .u-baseColor--link.link--darken:hover,.u-resetSpectrum .u-baseColor--link.link--darken:focus,.u-resetSpectrum .u-baseColor--link.link--darken:active {color: rgba(0, 0, 0, 0.6) !important;}
.u-resetSpectrum .u-baseColor--link.link--dark {color: rgba(0, 0, 0, 0.6) !important;}
.u-resetSpectrum .u-baseColor--link.link--dark.link--darken:hover,.u-resetSpectrum .u-baseColor--link.link--dark.link--darken:focus,.u-resetSpectrum .u-baseColor--link.link--dark.link--darken:active {color: rgba(0, 0, 0, 0.8) !important;}
.u-resetSpectrum .u-baseColor--link.link--darker {color: rgba(0, 0, 0, 0.8) !important;}
.u-resetSpectrum .u-baseColor--placeholderNormal ::-webkit-input-placeholder {color: rgba(0, 0, 0, 0.2980392156862745);}
.u-resetSpectrum .u-baseColor--placeholderNormal ::-moz-placeholder {color: rgba(0, 0, 0, 0.2980392156862745);}
.u-resetSpectrum .u-baseColor--placeholderNormal :-ms-input-placeholder {color: rgba(0, 0, 0, 0.2980392156862745);}
.u-resetSpectrum .svgIcon--logoWordmark {stroke: none !important; fill: rgba(0, 0, 0, 0.6) !important;}
.u-resetSpectrum .svgIcon--logoMonogram {stroke: none !important; fill: rgba(0, 0, 0, 0.6) !important;}
.u-resetSpectrum  .ui-h1,.u-resetSpectrum  .ui-h2,.u-resetSpectrum  .ui-h3,.u-resetSpectrum  .ui-h4,.u-resetSpectrum  .ui-brand1,.u-resetSpectrum  .ui-brand2,.u-resetSpectrum  .ui-captionStrong {color: rgba(0, 0, 0, 0.8) !important; fill: rgba(0, 0, 0, 0.8) !important;}
.u-resetSpectrum  .ui-body,.u-resetSpectrum  .ui-caps {color: rgba(0, 0, 0, 0.6) !important; fill: rgba(0, 0, 0, 0.6) !important;}
.u-resetSpectrum  .ui-summary,.u-resetSpectrum  .ui-caption {color: rgba(0, 0, 0, 0.2980392156862745) !important; fill: rgba(0, 0, 0, 0.2980392156862745) !important;}
.u-resetSpectrum .u-accentColor--borderLight {border-color: rgba(26, 137, 23, 1) !important;}
.u-resetSpectrum .u-accentColor--borderNormal {border-color: rgba(26, 137, 23, 1) !important;}
.u-resetSpectrum .u-accentColor--borderDark {border-color: rgba(17, 128, 14, 1) !important;}
.u-resetSpectrum .u-accentColor--iconLight .svgIcon,.u-resetSpectrum .u-accentColor--iconLight.svgIcon {fill: rgba(26, 137, 23, 1) !important;}
.u-resetSpectrum .u-accentColor--iconNormal .svgIcon,.u-resetSpectrum .u-accentColor--iconNormal.svgIcon {fill: rgba(17, 128, 14, 1) !important;}
.u-resetSpectrum .u-accentColor--iconDark .svgIcon,.u-resetSpectrum .u-accentColor--iconDark.svgIcon {fill: rgba(15, 115, 12, 1) !important;}
.u-resetSpectrum .u-accentColor--textNormal {color: rgba(17, 128, 14, 1) !important;}
.u-resetSpectrum .u-accentColor--hoverTextNormal:hover {color: rgba(17, 128, 14, 1) !important;}
.u-resetSpectrum .u-accentColor--textNormal.u-accentColor--textDarken:hover {color: rgba(15, 115, 12, 1) !important;}
.u-resetSpectrum .u-accentColor--textDark {color: rgba(15, 115, 12, 1) !important;}
.u-resetSpectrum .u-accentColor--backgroundLight {background-color: rgba(26, 137, 23, 1) !important;}
.u-resetSpectrum .u-accentColor--backgroundNormal {background-color: rgba(17, 128, 14, 1) !important;}
.u-resetSpectrum .u-accentColor--backgroundDark {background-color: rgba(15, 115, 12, 1) !important;}
.u-resetSpectrum .u-accentColor--buttonDark {border-color: rgba(17, 128, 14, 1) !important; color: rgba(15, 115, 12, 1) !important;}
.u-resetSpectrum .u-accentColor--buttonDark:hover {border-color: rgba(15, 115, 12, 1) !important;}
.u-resetSpectrum .u-accentColor--buttonDark .icon:before,.u-resetSpectrum .u-accentColor--buttonDark .svgIcon{color: rgba(15, 115, 12, 1) !important; fill: rgba(15, 115, 12, 1) !important;}
.u-resetSpectrum .u-accentColor--buttonNormal:not(.clapButton--largePill) {border-color: rgba(26, 137, 23, 1) !important; color: rgba(17, 128, 14, 1) !important;}
.u-resetSpectrum .u-accentColor--buttonNormal:hover {border-color: rgba(17, 128, 14, 1) !important;}
.u-resetSpectrum .u-accentColor--buttonNormal .icon:before,.u-resetSpectrum .u-accentColor--buttonNormal .svgIcon{color: rgba(17, 128, 14, 1) !important; fill: rgba(17, 128, 14, 1) !important;}
.u-resetSpectrum .u-accentColor--buttonNormal.button--filled .icon:before,.u-resetSpectrum .u-accentColor--buttonNormal.button--filled .svgIcon{color: rgba(255, 255, 255, 1) !important; fill: rgba(255, 255, 255, 1) !important;}
.u-resetSpectrum .u-accentColor--buttonDark.button--filled,.u-resetSpectrum .u-accentColor--buttonDark.button--withChrome.is-active,.u-resetSpectrum .u-accentColor--fillWhenActive.is-active {background-color: rgba(15, 115, 12, 1) !important; border-color: rgba(15, 115, 12, 1) !important; color: rgba(255, 255, 255, 1) !important; fill: rgba(255, 255, 255, 1) !important;}
.u-resetSpectrum .u-accentColor--buttonNormal.button--filled:not(.clapButton--largePill),.u-resetSpectrum .u-accentColor--buttonNormal.button--withChrome.is-active:not(.clapButton--largePill) {background-color: rgba(17, 128, 14, 1) !important; border-color: rgba(17, 128, 14, 1) !important; color: rgba(255, 255, 255, 1) !important; fill: rgba(255, 255, 255, 1) !important;}
.u-resetSpectrum .postArticle.is-withAccentColors .markup--user,.u-resetSpectrum .postArticle.is-withAccentColors .markup--query {color: rgba(17, 128, 14, 1) !important;}</style><div class="js-collectionFooter u-hide"><div class="container u-maxWidth1040"><div class="u-marginTop10 u-paddingTop10 u-paddingBottom30 u-borderTopLighter"><div class="linkSet u-clearfix"><div class="u-floatRight u-textColorNormal u-baseColor--textNormal u-xs-floatLeft"><a class="button button--chromeless u-baseColor--buttonNormal u-marginLeft15 u-lineHeight35 u-xs-block u-xs-marginLeft0"   href="https://labs.bsoares.com/about" title="About Labs" aria-label="About Labs" data-collection-slug="bsoares-labs">About Labs</a><span class="middotDivider u-xs-hide"></span><a class="button button--chromeless u-baseColor--buttonNormal u-lineHeight35 u-xs-block"   href="https://labs.bsoares.com/latest" title="Latest Stories for Labs" aria-label="Latest Stories for Labs" data-collection-slug="bsoares-labs">Latest Stories</a><span class="middotDivider u-xs-hide"></span><a class="button button--chromeless u-baseColor--buttonNormal u-lineHeight35 u-xs-block"   href="https://labs.bsoares.com/archive" title="Archive for Labs" aria-label="Archive for Labs" data-collection-slug="bsoares-labs">Archive</a><span class="middotDivider u-xs-hide"></span><a class="button button--chromeless u-baseColor--buttonNormal u-lineHeight35 u-xs-block"   href="https://medium.com/about">About Medium</a><span class="middotDivider u-xs-hide"></span><a class="button button--chromeless u-baseColor--buttonNormal u-lineHeight35 u-xs-block"   href="https://policy.medium.com/medium-terms-of-service-9db0094a1e0f">Terms</a><span class="middotDivider u-xs-hide"></span><a class="button button--chromeless u-baseColor--buttonNormal u-lineHeight35 u-xs-block"   href="https://policy.medium.com/medium-privacy-policy-f03bf92035c9">Privacy</a><span class="middotDivider u-xs-hide"></span><a class="button button--chromeless u-baseColor--buttonNormal u-lineHeight35 u-xs-block"   href="https://medium.com/business">Teams</a></div></div></div></div></div></div></div></div><div class="loadingBar"></div><script>// <![CDATA[
window["obvInit"] = function (opt_embedded) {window["obvInit"]["embedded"] = opt_embedded; window["obvInit"]["ready"] = true;}
// ]]></script><script>// <![CDATA[
var GLOBALS = {"audioUrl":"https://d1fcbxp97j4nb2.cloudfront.net","baseUrl":"https://labs.bsoares.com","buildLabel":"20240628-1323-root","currentUser":{"userId":"lo_18b990228ec1","isVerified":false,"subscriberEmail":"","hasPastMemberships":false,"isEnrolledInHightower":false,"isEligibleForHightower":true,"hightowerLastLockedAt":0,"isWriterProgramEnrolled":true,"isWriterProgramInvited":false,"isWriterProgramOptedOut":false,"writerProgramVersion":0,"writerProgramEnrolledAt":0,"friendLinkOnboarding":0,"hasAdditionalUnlocks":false,"hasApiAccess":false,"writerProgramDistributionSettingOptedIn":false,"isSuspended":false,"collectionOnboardingSeen":0,"atsQualifiedAt":0},"currentUserHasUnverifiedEmail":false,"isAuthenticated":false,"isCurrentUserVerified":false,"miroUrl":"https://cdn-images-1.medium.com","moduleUrls":{"base":"https://cdn-static-1.medium.com/_/fp/gen-js/main-base.bundle.b9nTwjCZIAG38sOTI78KlA.12.js","common-async":"https://cdn-static-1.medium.com/_/fp/gen-js/main-common-async.bundle.JpAy7cOAZMmWnG1DvbgeBQ.12.js","hightower":"https://cdn-static-1.medium.com/_/fp/gen-js/main-hightower.bundle.q9Y1CtEkeBn0Hou6ALXDeg.12.js","home-screens":"https://cdn-static-1.medium.com/_/fp/gen-js/main-home-screens.bundle.YVxaTzlW4fLLGze0SCS6dQ.12.js","misc-screens":"https://cdn-static-1.medium.com/_/fp/gen-js/main-misc-screens.bundle.3RtO0MN0M-BykWr9MQBnhg.12.js","notes":"https://cdn-static-1.medium.com/_/fp/gen-js/main-notes.bundle.UEfXyH8v5XdoMzbXqBhkng.12.js","payments":"https://cdn-static-1.medium.com/_/fp/gen-js/main-payments.bundle.56lUCbCFbuz_Ww3q3fwi-w.12.js","posters":"https://cdn-static-1.medium.com/_/fp/gen-js/main-posters.bundle.rbAaSLcd4eqTrsFqvFgRAg.12.js","power-readers":"https://cdn-static-1.medium.com/_/fp/gen-js/main-power-readers.bundle.T2YmVFAakv7oHwJfaMOx6A.12.js","pubs":"https://cdn-static-1.medium.com/_/fp/gen-js/main-pubs.bundle.FvBRKUCnFWpydSUjRTY_6Q.12.js","stats":"https://cdn-static-1.medium.com/_/fp/gen-js/main-stats.bundle.1V4D58OhQh9oLC612M2M4Q.12.js"},"previewConfig":{"weightThreshold":1,"weightImageParagraph":0.51,"weightIframeParagraph":0.8,"weightTextParagraph":0.08,"weightEmptyParagraph":0,"weightP":0.003,"weightH":0.005,"weightBq":0.003,"minPTextLength":60,"truncateBoundaryChars":20,"detectTitle":true,"detectTitleLevThreshold":0.15},"productName":"Medium","supportsEdit":false,"termsUrl":"//policy.medium.com/medium-terms-of-service-9db0094a1e0f","textshotHost":"textshot.textshot-production.svc.cluster.local","transactionId":"1719708081233:4c09d06ddb5f","useragent":{"browser":"other","family":"","os":"","version":0,"supportsDesktopEdit":false,"supportsInteract":false,"supportsView":true,"isMobile":false,"isTablet":false,"isNative":false,"supportsFileAPI":false,"isTier1":false,"clientVersion":"","clientChannel":"","supportsRealScrollEvents":false,"supportsVhUnits":false,"ruinsViewportSections":false,"supportsHtml5Video":false,"supportsMagicUnderlines":false,"isWebView":false,"isFacebookWebView":false,"supportsProgressiveMedia":false,"supportsPromotedPosts":true,"isBot":false,"isNativeIphone":false,"supportsCssVariables":false,"supportsVideoSections":true,"emojiSupportLevel":1,"isSearchBot":false,"isSyndicationBot":false,"isNativeAndroid":false,"isNativeIos":false,"isSeoAuditBot":false,"isInternalApp":false,"supportsApplePay":false,"supportsScrollableMetabar":false},"variants":{"allow_access":true,"allow_signup":true,"allow_test_auth":"disallow","android_enable_editor_new_publishing_flow":true,"android_enable_friend_links_creation":true,"android_enable_friend_links_postpage_banners":true,"android_enable_image_sharer":true,"android_enable_lists_v2":true,"android_enable_syntax_highlight":true,"android_enable_topic_portals":true,"android_rating_prompt_stories_read_threshold":2,"android_two_hour_refresh":true,"available_annual_plan":"2c754bcc2995","available_annual_premium_plan":"4a442ace1476","available_monthly_plan":"60e220181034","available_monthly_premium_plan":"12a660186432","browsable_stream_config_bucket":"curated-topics","can_receive_tips_v0":true,"can_send_tips_v0":true,"coronavirus_topic_recirc":true,"crm_send_contact_to_sendgrid":true,"disable_partner_program_enrollment":true,"enable_android_dynamic_aspirational_paywall":true,"enable_android_dynamic_programming_paywall":true,"enable_android_miro_v2":true,"enable_android_offline_reading":true,"enable_android_verified_author":true,"enable_app_flirty_thirty":true,"enable_apple_sign_in":true,"enable_apple_webhook":true,"enable_aurora_pub_follower_page":true,"enable_author_cards":true,"enable_author_cards_byline":true,"enable_auto_follow_on_subscribe":true,"enable_automod":true,"enable_bg_post_post":true,"enable_braintree_apple_pay":true,"enable_braintree_client":true,"enable_braintree_google_pay":true,"enable_braintree_integration":true,"enable_braintree_paypal":true,"enable_braintree_trial_membership":true,"enable_braintree_webhook":true,"enable_branch_io":true,"enable_cache_less_following_feed":true,"enable_configure_pronouns":true,"enable_creator_welcome_email":true,"enable_deprecate_legacy_providers_v3":true,"enable_diversification_rex":true,"enable_entities_to_follow_v2":true,"enable_eventstats_event_processing":true,"enable_explicit_signals":true,"enable_explicit_signals_updated_post_previews":true,"enable_footer_app_buttons":true,"enable_google_one_tap":true,"enable_google_webhook":true,"enable_group_gifting":true,"enable_iceland_forced_android":true,"enable_import":true,"enable_ios_autorefresh":true,"enable_ios_dynamic_paywall_aspiriational":true,"enable_ios_dynamic_paywall_programming":true,"enable_ios_easy_resubscribe":true,"enable_ios_offline_reading":true,"enable_legacy_feed_in_iceland":true,"enable_lite_archive_page":true,"enable_lite_continue_this_thread":true,"enable_lite_homepage":true,"enable_lite_pub_stats":true,"enable_lite_response_markup":true,"enable_lite_server_upstream_deadlines":true,"enable_lo_homepage":"control","enable_maim_the_meter":true,"enable_marketing_emails":true,"enable_mastodon_avatar_upload":true,"enable_mastodon_for_members":true,"enable_mastodon_for_members_username_selection":true,"enable_medium2_kbfd":true,"enable_medium_forever_introductory_discount":true,"enable_members_only_audio":true,"enable_ml_rank_rex_anno":true,"enable_mobile_lohp_short_hero":"control","enable_moc_load_processor_all_recs_surfaces":true,"enable_moc_load_processor_c":true,"enable_moc_load_processor_first_story":true,"enable_mps_pp_writer_stats":true,"enable_new_stripe_customers":true,"enable_newsletter_lo_flow_custom_domains":true,"enable_pill_based_home_feed":true,"enable_pp_v4":true,"enable_pre_pp_v4":true,"enable_premium_tier":true,"enable_premium_tier_badge":true,"enable_pride_logo":true,"enable_recaptcha_enterprise":true,"enable_recirc_model":true,"enable_recommended_publishers_query":true,"enable_rex_aggregator_v2":true,"enable_rex_new_push_notification_endpoint":true,"enable_rex_reading_history":true,"enable_rito_upstream_deadlines":true,"enable_seamless_social_sharing":true,"enable_see_pronouns":true,"enable_sharer_create_post_share_key":true,"enable_sharer_validate_post_share_key":true,"enable_simplified_digest_v2_b":true,"enable_speechify_ios":true,"enable_speechify_widget":true,"enable_sprig":true,"enable_starspace":true,"enable_streamline_pub_newsletters":true,"enable_susi_redesign_android":true,"enable_susi_redesign_ios":true,"enable_switch_plan_premium_tier":true,"enable_tag_recs":true,"enable_tick_landing_page":true,"enable_tipping_v0_android":true,"enable_tipping_v0_ios":true,"enable_tribute_landing_page":true,"enable_updated_pub_recs_ui":true,"enable_verifications_service":true,"glyph_font_set":"m2-unbound-source-serif-pro","ios_display_paywall_after_onboarding":true,"ios_enable_friend_links_creation":true,"ios_enable_friend_links_postpage_banners":true,"ios_enable_home_post_menu":true,"ios_enable_lock_responses":true,"ios_enable_verified_book_author":true,"ios_iceland_nux":true,"ios_in_app_free_trial":true,"ios_remove_twitter_onboarding_step":true,"ios_social_share_sheet":true,"limit_post_referrers":true,"limit_user_follows":true,"mobile_custom_app_icon":true,"onboarding_tags_from_top_views":true,"reader_fair_distribution_non_qp":true,"redefined_top_posts":true,"reengagement_notification_duration":3,"rex_generator_max_candidates":1000,"signin_services":"twitter,facebook,google,email,google-fastidv,google-one-tap,apple","signup_services":"twitter,facebook,google,email,google-fastidv,google-one-tap,apple","skip_fs_cache_user_vals":true},"xsrfToken":"","iosAppId":"828256236","supportEmail":"yourfriends@medium.com","fp":{"/icons/monogram-mask.svg":"https://cdn-static-1.medium.com/_/fp/icons/monogram-mask.KPLCSFEZviQN0jQ7veN2RQ.12.svg","/icons/favicon-medium-editor.ico":"https://cdn-static-1.medium.com/_/fp/icons/favicon-medium-editor.PiakrZWB7Yb80quUVQWM6g.12.ico"},"authBaseUrl":"https://medium.com","imageUploadSizeMb":25,"isAuthDomainRequest":false,"domainCollectionSlug":"bsoares-labs","algoliaApiEndpoint":"https://MQ57UUUQZ2-dsn.algolia.net","algoliaAppId":"MQ57UUUQZ2","algoliaSearchOnlyApiKey":"394474ced050e3911ae2249ecc774921","iosAppStoreUrl":"https://itunes.apple.com/app/medium-everyones-stories/id828256236?pt=698524&mt=8","iosAppLinkBaseUrl":"medium:","algoliaIndexPrefix":"medium_","androidPlayStoreUrl":"https://play.google.com/store/apps/details?id=com.medium.reader","googleClientId":"216296035834-k1k6qe060s2tp2a2jam4ljdcms00sttg.apps.googleusercontent.com","androidPackage":"com.medium.reader","androidPlayStoreMarketScheme":"market://details?id=com.medium.reader","googleAuthUri":"https://accounts.google.com/o/oauth2/auth","androidScheme":"medium","layoutData":{"useDynamicScripts":false,"googleAnalyticsTrackingCode":"G-7JY7T788PK","jsShivUrl":"https://cdn-static-1.medium.com/_/fp/js/shiv.RI2ePTZ5gFmMgLzG5bEVAA.12.js","useDynamicCss":false,"faviconUrl":"https://miro.medium.com/1*m-R_BkNf1Qjr1YbyOIJY2w.png","faviconImageId":"1*m-R_BkNf1Qjr1YbyOIJY2w.png","fontSets":[{"id":8,"url":"https://glyph.medium.com/css/e/sr/latin/e/ssr/latin/e/ssb/latin/m2-unbound-source-serif-pro.css"},{"id":11,"url":"https://glyph.medium.com/css/m2-unbound-source-serif-pro.css"},{"id":9,"url":"https://glyph.medium.com/css/mkt.css"}],"editorFaviconUrl":"https://miro.medium.com/1*m-R_BkNf1Qjr1YbyOIJY2w.png","glyphUrl":"https://glyph.medium.com"},"authBaseUrlRev":"moc.muidem//:sptth","stripePublishableKey":"pk_live_7FReX44VnNIInZwrIIx6ghjl","archiveUploadSizeMb":100,"previewConfig2":{"weightThreshold":1,"weightImageParagraph":0.05,"raiseImage":true,"enforceHeaderHierarchy":true,"isImageInsetRight":true},"isAmp":false,"iosScheme":"medium","lightstep":{"accessToken":"ce5be895bef60919541332990ac9fef2","carrier":"{\"ot-tracer-spanid\":\"29c76140626ca413\",\"ot-tracer-traceid\":\"08c323ac41aac3d4\",\"ot-tracer-sampled\":\"true\"}","host":"lightstep.medium.systems"},"facebook":{"key":"542599432471018","namespace":"medium-com","scope":{"default":["public_profile","email"],"connect":["public_profile","email"],"login":["public_profile","email"],"share":["public_profile","email"]}},"memberContentTopicId":"13d7efd82fb2","audioContentTopicId":"3792abbd134","isDoNotAuth":false,"buggle":{"videoUrl":"https://cdn-videos-1.medium.com","audioUrl":"https://cdn-audio-1.medium.com"},"referrerType":5,"partnerProgramEmail":"partnerprogram@medium.com","recaptchaKey":"6Lfc37IUAAAAAKGGtC6rLS13R1Hrw_BqADfS1LRk","countryCode":"FR","bypassMeter":false,"branchKey":"key_live_ofxXr2qTrrU9NqURK8ZwEhknBxiI6KBm","paypal":{"clientMode":"production","oneYearGift":{"name":"Medium Membership (1 Year, Digital Gift Code)","description":"Unlimited access to the best and brightest stories on Medium. Gift codes can be redeemed at medium.com/redeem.","price":"50.00","currency":"USD","sku":"membership-gift-1-yr"}},"collectionConfig":{"mediumOwnedAndOperatedCollectionIds":["8a9336e5bb4","b7e45b22fec3","193b68bd4fba","8d6b8a439e32","54c98c43354d","3f6ecf56618","d944778ce714","92d2092dc598","ae2a65f35510","1285ba81cada","544c7006046e","fc8964313712","40187e704f1c","88d9857e584e","7b6769f2748b","bcc38c8f6edf","cef6983b292","cb8577c9149e","444d13b52878","713d7dbc99b0","ef8e90590e66","191186aaafa0","55760f21cdc5","9dc80918cc93","bdc4052bbdba","8ccfed20cbb2"]},"bypassMeterWithShareKey":false,"recaptcha3Key":"6Lf8R9wUAAAAABMI_85Wb8melS7Zj6ziuf99Yot5","braintreeClientKey":"production_zjkj96jm_m56f8fqpf7ngnrd4","cdcMessaging":[{"text":"For more information on the novel coronavirus and Covid-19, visit ","href":"","type":"text","start":0,"end":0},{"text":"cdc.gov","href":"https://www.cdc.gov/coronavirus/2019-nCoV","type":"link","start":66,"end":73},{"text":".","href":"","type":"text","start":0,"end":0}],"braintree":{"merchantId":"m56f8fqpf7ngnrd4"},"diagnostics":{},"domain":"medium.com"}
// ]]></script><script charset="UTF-8" src="https://cdn-static-1.medium.com/_/fp/gen-js/main-base.bundle.b9nTwjCZIAG38sOTI78KlA.12.js" async></script><script>// <![CDATA[
window["obvInit"]({"references":{"Collection":{"5fa59f8779b5":{"id":"5fa59f8779b5","name":"Labs","slug":"bsoares-labs","tags":["ARDUINO","PROCESSING","DEVELOPMENT","TECH","TECHNOLOGY"],"creatorId":"a1da27ad3cf9","description":"Some experiments.","shortDescription":"Some experiments.","image":{"imageId":"1*AM0HY3_6WX9TBC3vWXuZmQ.jpeg","filter":"","backgroundSize":"","originalWidth":600,"originalHeight":600,"strategy":"resample","height":0,"width":0},"metadata":{"followerCount":8,"activeAt":1467475049329},"virtuals":{"permissions":{"canPublish":false,"canPublishAll":false,"canRepublish":false,"canRemove":false,"canManageAll":false,"canSubmit":false,"canEditPosts":false,"canAddWriters":false,"canViewStats":false,"canSendNewsletter":false,"canViewLockedPosts":false,"canViewCloaked":false,"canEditOwnPosts":false,"canBeAssignedAuthor":false,"canEnrollInHightower":false,"canLockPostsForMediumMembers":false,"canLockOwnPostsForMediumMembers":false,"canViewNewsletterV2Stats":false,"canCreateNewsletterV3":false},"isSubscribed":false,"isEnrolledInHightower":false,"isEligibleForHightower":false,"isSubscribedToCollectionEmails":false,"isMuted":false,"canToggleEmail":false,"isWriter":false},"logo":{"imageId":"","filter":"","backgroundSize":"","originalWidth":0,"originalHeight":0,"strategy":"resample","height":0,"width":0},"twitterUsername":"bsoares","facebookPageName":"brusoab","publicEmail":"bruno@bsoares.com","domain":"labs.bsoares.com","sections":[{"type":2,"collectionHeaderMetadata":{"title":"Labs","description":"Alguns experimentos com eletrônica e programação :-)","backgroundImage":{},"logoImage":{},"alignment":2,"layout":5}},{"type":1,"postListMetadata":{"source":1,"layout":4,"number":7,"postIds":[]}}],"favicon":{"imageId":"","filter":"","backgroundSize":"","originalWidth":0,"originalHeight":0,"strategy":"resample","height":0,"width":0},"colorPalette":{"defaultBackgroundSpectrum":{"colorPoints":[{"color":"#FF1A8917","point":0},{"color":"#FF11800E","point":0.1},{"color":"#FF0F730C","point":0.2},{"color":"#FF095407","point":1}],"backgroundColor":"#FFFFFFFF"},"highlightSpectrum":{"colorPoints":[{"color":"#FFFFFFFF","point":0},{"color":"#FFE8F3E8","point":0.1},{"color":"#FFE8F3E8","point":0.2},{"color":"#FFD1E7D1","point":0.6},{"color":"#FFA3D0A2","point":1}],"backgroundColor":"#FFFFFFFF"},"darkBackgroundSpectrum":{"colorPoints":[{"color":"#FF095407","point":0},{"color":"#FF0F730C","point":0.1},{"color":"#FF11800E","point":0.2},{"color":"#FF1A8917","point":1}],"backgroundColor":"#FF000000"}},"navItems":[],"colorBehavior":1,"googleAnalyticsId":"UA-47684229-1","ampLogo":{"imageId":"","filter":"","backgroundSize":"","originalWidth":0,"originalHeight":0,"strategy":"resample","height":0,"width":0},"header":{"title":"Labs","description":"Alguns experimentos com eletrônica e programação :-)","backgroundImage":{},"logoImage":{},"alignment":2,"layout":5},"paidForDomainAt":1497211874135,"subscriberCount":8,"tagline":"Some experiments.","polarisCoverImage":{"imageId":"","filter":"","backgroundSize":"","originalWidth":0,"originalHeight":0,"strategy":"resample","height":0,"width":0},"type":"Collection"}},"User":{"a1da27ad3cf9":{"userId":"a1da27ad3cf9","name":"Bruno Soares","username":"bsoares","createdAt":1417528928518,"imageId":"1*YoHcBCKu7vfqalnvm5OOmA@2x.jpeg","backgroundImageId":"","bio":"","twitterScreenName":"bsoares","allowNotes":1,"mediumMemberAt":0,"isWriterProgramEnrolled":true,"isSuspended":false,"isMembershipTrialEligible":true,"facebookDisplayName":"Bruno Soares","optInToIceland":true,"hasCompletedProfile":false,"userDismissableFlags":[29,12,8,5,3,2,1,33],"hasSeenIcelandOnboarding":true,"postSubscribeMembershipUpsellShownAt":0,"languageCode":"pt","type":"User"}},"Post":{"ee13cce39007":{"id":"ee13cce39007","versionId":"c2a3f9988e8a","creatorId":"a1da27ad3cf9","homeCollectionId":"5fa59f8779b5","title":"Ping Pong com Matriz de Leds 8x8","detectedLanguage":"en","latestVersion":"c2a3f9988e8a","latestPublishedVersion":"c2a3f9988e8a","hasUnpublishedEdits":false,"latestRev":130,"createdAt":1467475000821,"updatedAt":1527626728716,"acceptedAt":0,"firstPublishedAt":1246920117000,"latestPublishedAt":1497223025166,"vote":false,"experimentalCss":"","displayAuthor":"","content":{"postDisplay":{"coverless":true}},"virtuals":{"statusForCollection":"APPROVED","allowNotes":true,"previewImage":{"imageId":"1*kEX5-8QrMQ41AwuhcsDNpA.jpeg","filter":"","backgroundSize":"","originalWidth":2048,"originalHeight":1536,"strategy":"resample","height":0,"width":0},"wordCount":153,"imageCount":2,"readingTime":0.9606918238993711,"subtitle":"","publishedInCount":1,"usersBySocialRecommends":[],"noIndex":false,"recommends":6,"isBookmarked":false,"tags":[{"slug":"hacking","name":"Hacking","postCount":47094,"metadata":{"postCount":47094,"coverImage":{"id":"1*7RcxbIN11uxHVEgv-V8I3A.png","originalWidth":931,"originalHeight":616,"isFeatured":true}},"type":"Tag"},{"slug":"tech","name":"Tech","postCount":281568,"metadata":{"postCount":281568,"coverImage":{"id":"1*wTultoqaZE8LMQDW6XkjJQ.png","originalWidth":1534,"originalHeight":861,"isFeatured":true}},"type":"Tag"},{"slug":"arduino","name":"Arduino","postCount":9420,"metadata":{"postCount":9420,"coverImage":{"id":"1*cGCh2BmDGeOmAzpo483WLg.jpeg","originalWidth":607,"originalHeight":341,"isFeatured":true}},"type":"Tag"},{"slug":"led-matrix","name":"Led Matrix","postCount":15,"metadata":{"postCount":15,"coverImage":{"id":"1*tVGzxRyKxeFDFC6unz24ZA.jpeg","originalWidth":2976,"originalHeight":3968,"isFeatured":true}},"type":"Tag"}],"socialRecommendsCount":0,"responsesCreatedCount":0,"links":{"entries":[{"url":"http://en.wikipedia.org/wiki/Dot_matrix","alts":[],"httpStatus":200},{"url":"http://www.instructables.com/id/Pong-with-8x8-Led-Matrix-on-Arduino","alts":[{"type":1,"url":"https://cdn.ampproject.org/c/www.instructables.com/id/Pong-with-8x8-Led-Matrix-on-Arduino/?amp_page=true"}],"httpStatus":200},{"url":"http://www.arduino.cc/playground/Code/Timer1","alts":[],"httpStatus":200},{"url":"http://pt.wikipedia.org/wiki/Circuito_digital","alts":[],"httpStatus":200},{"url":"http://pt.wikipedia.org/wiki/Pong","alts":[],"httpStatus":200},{"url":"http://www.arduino.cc/playground/","alts":[],"httpStatus":200},{"url":"http://www.arduino.cc/playground/Main/DirectDriveLEDMatrix","alts":[],"httpStatus":200},{"url":"http://www.youtube.com/watch?v=lvAlKH5SzYk","alts":[{"type":3,"url":"vnd.youtube://www.youtube.com/watch?v=lvAlKH5SzYk&feature=applinks"},{"type":2,"url":"vnd.youtube://www.youtube.com/watch?v=lvAlKH5SzYk&feature=applinks"}],"httpStatus":200},{"url":"http://www.flickr.com/photos/bsoares/sets/72157620919850875/","alts":[{"type":2,"url":"flickr://flickr.com/photos/bsoares/albums/72157620919850875"}],"httpStatus":200},{"url":"https://www.flickr.com/photos/bsoares/sets/72157620919850875/","alts":[{"type":2,"url":"flickr://flickr.com/photos/bsoares/albums/72157620919850875"}],"httpStatus":200}],"version":"0.3","generatedAt":1497223226141},"isLockedPreviewOnly":false,"metaDescription":"","totalClapCount":66,"sectionCount":2,"readingList":0,"topics":[]},"coverless":true,"slug":"ping-pong-com-matriz-de-leds-8x8","translationSourcePostId":"","translationSourceCreatorId":"","isApprovedTranslation":false,"inResponseToPostId":"","inResponseToRemovedAt":0,"isTitleSynthesized":false,"allowResponses":false,"importedUrl":"","importedPublishedAt":1246920117000,"visibility":0,"uniqueSlug":"ping-pong-com-matriz-de-leds-8x8-ee13cce39007","previewContent":{"bodyModel":{"paragraphs":[{"name":"920f","type":3,"text":"Ping Pong com Matriz de Leds 8x8","markups":[],"alignment":1},{"name":"092f","type":1,"text":"Há alguns dias consegui duas matrizes de leds 8x8 azuis e resolvi brincar com elas :)","markups":[],"alignment":1},{"name":"f460","type":11,"text":"","markups":[],"layout":9,"iframe":{"mediaResourceId":"1fcfbf0beb16691d2f7ff6111ecf3424","iframeWidth":640,"iframeHeight":480,"thumbnailUrl":"https://i.embed.ly/1/image?url=https%3A%2F%2Fi.ytimg.com%2Fvi%2FlvAlKH5SzYk%2Fhqdefault.jpg&key=a19fcc184b9711e1b4764040d3dc5c07"}}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":""},"license":0,"inResponseToMediaResourceId":"","canonicalUrl":"","approvedHomeCollectionId":"5fa59f8779b5","isNewsletter":false,"newsletterId":"","webCanonicalUrl":"http://blog.bsoares.com.br/arduino/ping-pong-with-8x8-led-matrix-on-arduino","mediumUrl":"","migrationId":"e5f2ab352b9d","notifyFollowers":false,"notifyTwitter":false,"notifyFacebook":false,"responseHiddenOnParentPostAt":0,"isSeries":false,"isSubscriptionLocked":false,"seriesLastAppendedAt":0,"audioVersionDurationSec":0,"sequenceId":"","isEligibleForRevenue":false,"isBlockedFromHightower":false,"deletedAt":0,"lockedPostSource":0,"hightowerMinimumGuaranteeStartsAt":0,"hightowerMinimumGuaranteeEndsAt":0,"featureLockRequestAcceptedAt":0,"mongerRequestType":1,"layerCake":0,"socialTitle":"","socialDek":"","editorialPreviewTitle":"","editorialPreviewDek":"","curationEligibleAt":0,"isProxyPost":false,"proxyPostFaviconUrl":"","proxyPostProviderName":"","proxyPostType":0,"isSuspended":false,"isLimitedState":false,"seoTitle":"","previewContent2":{"bodyModel":{"paragraphs":[{"name":"920f","type":3,"text":"Ping Pong com Matriz de Leds 8x8","markups":[]},{"name":"092f","type":1,"text":"Há alguns dias consegui duas matrizes de leds 8x8 azuis e resolvi brincar com elas :)","markups":[]},{"name":"f460","type":11,"text":"","markups":[],"layout":1,"iframe":{"mediaResourceId":"1fcfbf0beb16691d2f7ff6111ecf3424","iframeWidth":640,"iframeHeight":480,"thumbnailUrl":"https://i.embed.ly/1/image?url=https%3A%2F%2Fi.ytimg.com%2Fvi%2FlvAlKH5SzYk%2Fhqdefault.jpg&key=a19fcc184b9711e1b4764040d3dc5c07"}},{"name":"8177","type":4,"text":"https://www.flickr.com/photos/bsoares/sets/72157620919850875/","markups":[{"type":3,"start":0,"end":61,"href":"https://www.flickr.com/photos/bsoares/sets/72157620919850875/","title":"","rel":"nofollow","anchorType":0}],"layout":1,"metadata":{"id":"1*kEX5-8QrMQ41AwuhcsDNpA.jpeg","originalWidth":2048,"originalHeight":1536}},{"name":"2303","type":1,"text":"O resultado foi um jogo de Ping Pong, sim O primeiro videogame lucrativo da história. É de fato um joguinho bem interessante e facíl para quem pratica eletrônica digital por hobby.","markups":[{"type":3,"start":42,"end":84,"href":"http://pt.wikipedia.org/wiki/Pong","title":"","rel":"noopener","anchorType":0},{"type":3,"start":151,"end":169,"href":"http://pt.wikipedia.org/wiki/Circuito_digital","title":"","rel":"noopener","anchorType":0}]},{"name":"c127","type":1,"text":"Para ligar…","markups":[{"type":3,"start":89,"end":107,"href":"http://www.arduino.cc/playground/","title":"","rel":"noopener","anchorType":0},{"type":3,"start":109,"end":167,"href":"http://www.arduino.cc/playground/Main/DirectDriveLEDMatrix","title":"","rel":"noopener","anchorType":0}]}],"sections":[{"name":"8464","startIndex":0}]},"isFullContent":false,"subtitle":""},"cardType":0,"isDistributionAlertDismissed":false,"isShortform":false,"shortformType":0,"responsesLocked":false,"isLockedResponse":false,"isPublishToEmail":false,"responseDistribution":0,"isMarkedPaywallOnly":false,"type":"Post"},"bfbe97068dd8":{"id":"bfbe97068dd8","versionId":"f9c3aeb8f47c","creatorId":"a1da27ad3cf9","homeCollectionId":"5fa59f8779b5","title":"PianoDuino (Arduino + Processing + SoundCipher)","detectedLanguage":"en","latestVersion":"f9c3aeb8f47c","latestPublishedVersion":"f9c3aeb8f47c","hasUnpublishedEdits":false,"latestRev":121,"createdAt":1467474986613,"updatedAt":1518500166578,"acceptedAt":0,"firstPublishedAt":1243707468000,"latestPublishedAt":1497223085015,"vote":false,"experimentalCss":"","displayAuthor":"","content":{"postDisplay":{"coverless":true}},"virtuals":{"statusForCollection":"APPROVED","allowNotes":true,"previewImage":{"imageId":"1*lpvR3cJBVLD-SmWyaY5eaA.jpeg","filter":"","backgroundSize":"","originalWidth":1024,"originalHeight":768,"strategy":"resample","height":0,"width":0},"wordCount":46,"imageCount":1,"readingTime":0.3735849056603774,"subtitle":"","publishedInCount":1,"usersBySocialRecommends":[],"noIndex":false,"recommends":3,"isBookmarked":false,"tags":[{"slug":"arduino","name":"Arduino","postCount":9420,"metadata":{"postCount":9420,"coverImage":{"id":"1*cGCh2BmDGeOmAzpo483WLg.jpeg","originalWidth":607,"originalHeight":341,"isFeatured":true}},"type":"Tag"},{"slug":"processing","name":"Processing","postCount":1451,"metadata":{"postCount":1451,"coverImage":{"id":"1*jPFWhziPLs9d039rBfj9Uw.jpeg","originalWidth":3504,"originalHeight":2336,"isFeatured":true,"alt":"Gray metal hinged door with heart shape cut out of the middle with a lit candle showing."}},"type":"Tag"},{"slug":"tech","name":"Tech","postCount":281568,"metadata":{"postCount":281568,"coverImage":{"id":"1*wTultoqaZE8LMQDW6XkjJQ.png","originalWidth":1534,"originalHeight":861,"isFeatured":true}},"type":"Tag"},{"slug":"music","name":"Music","postCount":343719,"metadata":{"postCount":343719,"coverImage":{"id":"1*IiNmmcwgPtVI77r3VcrGjA.jpeg"}},"type":"Tag"},{"slug":"hacking","name":"Hacking","postCount":47094,"metadata":{"postCount":47094,"coverImage":{"id":"1*7RcxbIN11uxHVEgv-V8I3A.png","originalWidth":931,"originalHeight":616,"isFeatured":true}},"type":"Tag"}],"socialRecommendsCount":0,"responsesCreatedCount":0,"links":{"entries":[{"url":"http://processing.org","alts":[],"httpStatus":200},{"url":"https://www.flickr.com/photos/bsoares/sets/72157619009072330/","alts":[{"type":2,"url":"flickr://flickr.com/photos/bsoares/albums/72157619009072330"}],"httpStatus":200},{"url":"http://arduino.cc","alts":[],"httpStatus":200},{"url":"http://www.flickr.com/photos/bsoares/sets/72157619009072330/","alts":[{"type":2,"url":"flickr://flickr.com/photos/bsoares/albums/72157619009072330"}],"httpStatus":200},{"url":"http://www.arduino.cc/playground/Learning/4051","alts":[],"httpStatus":200},{"url":"http://soundcipher.org/","alts":[],"httpStatus":0}],"version":"0.3","generatedAt":1497223312365},"isLockedPreviewOnly":false,"metaDescription":"","totalClapCount":40,"sectionCount":1,"readingList":0,"topics":[]},"coverless":true,"slug":"pianoduino-arduino-processing-soundcipher","translationSourcePostId":"","translationSourceCreatorId":"","isApprovedTranslation":false,"inResponseToPostId":"","inResponseToRemovedAt":0,"isTitleSynthesized":false,"allowResponses":false,"importedUrl":"","importedPublishedAt":1243707468000,"visibility":0,"uniqueSlug":"pianoduino-arduino-processing-soundcipher-bfbe97068dd8","previewContent":{"bodyModel":{"paragraphs":[{"name":"7a27","type":3,"text":"PianoDuino Arduino + Processing + SoundCipher","markups":[],"alignment":1},{"name":"7152","type":11,"text":"","markups":[],"layout":9,"iframe":{"mediaResourceId":"66315145d870b89c0808ee3e9cb12e51","iframeWidth":480,"iframeHeight":368,"thumbnailUrl":"https://i.embed.ly/1/image?url=https%3A%2F%2Fi.vimeocdn.com%2Fvideo%2F13997086_295x166.jpg&key=4fce0568f2ce49e8b54624ef71a8a5bd"}}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":""},"license":0,"inResponseToMediaResourceId":"","canonicalUrl":"","approvedHomeCollectionId":"5fa59f8779b5","isNewsletter":false,"newsletterId":"","webCanonicalUrl":"http://blog.bsoares.com.br/processing/pianoduino-arduino-processing-soundcipher","mediumUrl":"","migrationId":"e5f2ab352b9d","notifyFollowers":false,"notifyTwitter":false,"notifyFacebook":false,"responseHiddenOnParentPostAt":0,"isSeries":false,"isSubscriptionLocked":false,"seriesLastAppendedAt":0,"audioVersionDurationSec":0,"sequenceId":"","isEligibleForRevenue":false,"isBlockedFromHightower":false,"deletedAt":0,"lockedPostSource":0,"hightowerMinimumGuaranteeStartsAt":0,"hightowerMinimumGuaranteeEndsAt":0,"featureLockRequestAcceptedAt":0,"mongerRequestType":1,"layerCake":0,"socialTitle":"","socialDek":"","editorialPreviewTitle":"","editorialPreviewDek":"","curationEligibleAt":0,"isProxyPost":false,"proxyPostFaviconUrl":"","proxyPostProviderName":"","proxyPostType":0,"isSuspended":false,"isLimitedState":false,"seoTitle":"","previewContent2":{"bodyModel":{"paragraphs":[{"name":"7a27","type":3,"text":"PianoDuino Arduino + Processing + SoundCipher","markups":[]},{"name":"7152","type":11,"text":"","markups":[],"layout":1,"iframe":{"mediaResourceId":"66315145d870b89c0808ee3e9cb12e51","iframeWidth":480,"iframeHeight":368,"thumbnailUrl":"https://i.embed.ly/1/image?url=https%3A%2F%2Fi.vimeocdn.com%2Fvideo%2F13997086_295x166.jpg&key=4fce0568f2ce49e8b54624ef71a8a5bd"}},{"name":"c13c","type":4,"text":"https://www.flickr.com/photos/bsoares/sets/72157619009072330/","markups":[{"type":3,"start":0,"end":61,"href":"https://www.flickr.com/photos/bsoares/sets/72157619009072330/","title":"","rel":"nofollow","anchorType":0}],"layout":1,"metadata":{"id":"1*lpvR3cJBVLD-SmWyaY5eaA.jpeg","originalWidth":1024,"originalHeight":768}},{"name":"37b2","type":1,"text":"PianoDuino é um experimento simples que integra Arduino, Processing e uma biblioteca para manipular sons, a SoundCipher. A ideia serviu para experimentar o Multiplexador / Demultiplexador 4051.","markups":[{"type":3,"start":48,"end":55,"href":"http://arduino.cc","title":"","rel":"noopener","anchorType":0},{"type":3,"start":57,"end":67,"href":"http://processing.org","title":"","rel":"noopener","anchorType":0},{"type":3,"start":108,"end":119,"href":"http://soundcipher.org/","title":"","rel":"noopener","anchorType":0},{"type":3,"start":156,"end":192,"href":"http://www.arduino.cc/playground/Learning/4051","title":"","rel":"noopener","anchorType":0}]},{"name":"2b35","type":11,"text":"","markups":[],"layout":1,"iframe":{"mediaResourceId":"824c41523fec4f7bf2a06340ca34e36e","thumbnailUrl":"https://i.embed.ly/1/image?url=https%3A%2F%2Favatars3.githubusercontent.com%2Fu%2F120248%3Fv%3D3%26s%3D400&key=4fce0568f2ce49e8b54624ef71a8a5bd"}},{"name":"f03d","type":13,"text":"Conteúdo relacionado","markups":[{"type":1,"start":0,"end":20}]},{"name":"87c3","type":1,"text":"Fotos no Flickr\nArduino\nProcessing\nSoundCipher\nAnalog multiplexer / demultiplexer 4051","markups":[{"type":3,"start":0,"end":15,"href":"http://www.flickr.com/photos/bsoares/sets/72157619009072330/","title":"","rel":"noopener","anchorType":0},{"type":3,"start":16,"end":23,"href":"http://arduino.cc","title":"","rel":"noopener","anchorType":0},{"type":3,"start":24,"end":34,"href":"http://processing.org","title":"","rel":"noopener","anchorType":0},{"type":3,"start":35,"end":46,"href":"http://soundcipher.org/","title":"","rel":"noopener","anchorType":0},{"type":3,"start":47,"end":86,"href":"http://www.arduino.cc/playground/Learning/4051","title":"","rel":"noopener","anchorType":0}]}],"sections":[{"name":"b71e","startIndex":0}]},"isFullContent":true,"subtitle":""},"cardType":0,"isDistributionAlertDismissed":false,"isShortform":false,"shortformType":0,"responsesLocked":false,"isLockedResponse":false,"isPublishToEmail":false,"responseDistribution":0,"isMarkedPaywallOnly":false,"type":"Post"},"18db76af53b7":{"id":"18db76af53b7","versionId":"add59c548495","creatorId":"a1da27ad3cf9","homeCollectionId":"5fa59f8779b5","title":"Operações binárias","detectedLanguage":"pt","latestVersion":"add59c548495","latestPublishedVersion":"add59c548495","hasUnpublishedEdits":false,"latestRev":182,"createdAt":1467474989353,"updatedAt":1629217902382,"acceptedAt":0,"firstPublishedAt":1243304889000,"latestPublishedAt":1497318099705,"vote":false,"experimentalCss":"","displayAuthor":"","content":{"postDisplay":{"coverless":true}},"virtuals":{"statusForCollection":"APPROVED","allowNotes":true,"previewImage":{"imageId":"1*6Uh1D9BgflLd7zLnBoYyuQ.jpeg","filter":"","backgroundSize":"","originalWidth":1280,"originalHeight":720,"strategy":"resample","height":0,"width":0},"wordCount":1569,"imageCount":1,"readingTime":6.120754716981132,"subtitle":"","publishedInCount":1,"usersBySocialRecommends":[],"noIndex":false,"recommends":5,"isBookmarked":false,"tags":[{"slug":"operações-binárias","name":"Operações Binárias","postCount":9,"metadata":{"postCount":9,"coverImage":{"id":"1*6Uh1D9BgflLd7zLnBoYyuQ.jpeg","originalWidth":1280,"originalHeight":720}},"type":"Tag"},{"slug":"binary","name":"Binary","postCount":1304,"metadata":{"postCount":1304,"coverImage":{"id":"1*-vMwce2UpZ_ChZtGKVI7Tg.jpeg","originalWidth":4240,"originalHeight":2832,"isFeatured":true}},"type":"Tag"},{"slug":"tech","name":"Tech","postCount":281568,"metadata":{"postCount":281568,"coverImage":{"id":"1*wTultoqaZE8LMQDW6XkjJQ.png","originalWidth":1534,"originalHeight":861,"isFeatured":true}},"type":"Tag"},{"slug":"bitwise","name":"Bitwise","postCount":228,"metadata":{"postCount":228,"coverImage":{"id":"1*dcBNV4dNzp1CUsRv17sgAQ.png","originalWidth":1412,"originalHeight":336}},"type":"Tag"},{"slug":"bitwise-operator","name":"Bitwise Operator","postCount":271,"metadata":{"postCount":271,"coverImage":{"id":"1*DbVq0VMJDZYKbYmNZMM0hg.jpeg","originalWidth":405,"originalHeight":402}},"type":"Tag"}],"socialRecommendsCount":0,"responsesCreatedCount":0,"links":{"entries":[{"url":"http://pt.wikipedia.org/wiki/RGB","alts":[],"httpStatus":200},{"url":"http://pt.wikipedia.org/wiki/Multiplexador","alts":[],"httpStatus":200},{"url":"http://en.wikipedia.org/wiki/Bitwise_operation","alts":[],"httpStatus":200},{"url":"http://pt.wikipedia.org/wiki/Sistema_hexadecimal","alts":[],"httpStatus":200},{"url":"http://pt.wikipedia.org/wiki/Sistema_bin%C3%A1rio_%28matem%C3%A1tica%29","alts":[],"httpStatus":200},{"url":"http://calculadoraonline.com.br/view/conversao-binario.php","alts":[],"httpStatus":200}],"version":"0.3","generatedAt":1497318112331},"isLockedPreviewOnly":false,"metaDescription":"","totalClapCount":38,"sectionCount":10,"readingList":0,"topics":[]},"coverless":true,"slug":"operações-binárias","translationSourcePostId":"","translationSourceCreatorId":"","isApprovedTranslation":false,"inResponseToPostId":"","inResponseToRemovedAt":0,"isTitleSynthesized":false,"allowResponses":false,"importedUrl":"","importedPublishedAt":1243304889000,"visibility":0,"uniqueSlug":"operações-binárias-18db76af53b7","previewContent":{"bodyModel":{"paragraphs":[{"name":"14fe","type":3,"text":"Operações binárias","markups":[],"alignment":1},{"name":"d72d","type":4,"text":"","markups":[],"layout":9,"metadata":{"id":"1*6Uh1D9BgflLd7zLnBoYyuQ.jpeg","originalWidth":1280,"originalHeight":720}},{"name":"37c2","type":1,"text":"Ultimamente tenho me deparado com muitos trechos de códigos que utilizam operações binárias, como chaveamento de…","markups":[{"type":3,"start":73,"end":91,"href":"http://en.wikipedia.org/wiki/Bitwise_operation","title":"","rel":"noopener","anchorType":0}],"alignment":1}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":""},"license":0,"inResponseToMediaResourceId":"","canonicalUrl":"","approvedHomeCollectionId":"5fa59f8779b5","isNewsletter":false,"newsletterId":"","webCanonicalUrl":"http://blog.bsoares.com.br/aspnet/operacoes-binarias","mediumUrl":"","migrationId":"e5f2ab352b9d","notifyFollowers":false,"notifyTwitter":false,"notifyFacebook":false,"responseHiddenOnParentPostAt":0,"isSeries":false,"isSubscriptionLocked":false,"seriesLastAppendedAt":0,"audioVersionDurationSec":0,"sequenceId":"","isEligibleForRevenue":false,"isBlockedFromHightower":false,"deletedAt":0,"lockedPostSource":0,"hightowerMinimumGuaranteeStartsAt":0,"hightowerMinimumGuaranteeEndsAt":0,"featureLockRequestAcceptedAt":0,"mongerRequestType":1,"layerCake":0,"socialTitle":"","socialDek":"","editorialPreviewTitle":"","editorialPreviewDek":"","curationEligibleAt":0,"isProxyPost":false,"proxyPostFaviconUrl":"","proxyPostProviderName":"","proxyPostType":0,"isSuspended":false,"isLimitedState":false,"seoTitle":"","previewContent2":{"bodyModel":{"paragraphs":[{"name":"14fe","type":3,"text":"Operações binárias","markups":[]},{"name":"d72d","type":4,"text":"","markups":[],"layout":1,"metadata":{"id":"1*6Uh1D9BgflLd7zLnBoYyuQ.jpeg","originalWidth":1280,"originalHeight":720}},{"name":"37c2","type":1,"text":"Ultimamente tenho me deparado com muitos trechos de códigos que utilizam operações binárias, como chaveamento de multiplexador, extração de RGB a partir de um inteiro ou hexadecimal, bitshift para controlar Matriz de Leds, etc… E finalmente dei aquela estuda, agora vai ai um post sobre o que resultou o estudo.","markups":[{"type":3,"start":73,"end":91,"href":"http://en.wikipedia.org/wiki/Bitwise_operation","title":"","rel":"noopener","anchorType":0},{"type":3,"start":113,"end":126,"href":"http://pt.wikipedia.org/wiki/Multiplexador","title":"","rel":"noopener","anchorType":0},{"type":3,"start":140,"end":143,"href":"http://pt.wikipedia.org/wiki/RGB","title":"","rel":"noopener","anchorType":0},{"type":3,"start":170,"end":181,"href":"http://pt.wikipedia.org/wiki/Sistema_hexadecimal","title":"","rel":"noopener","anchorType":0}]},{"name":"c0b4","type":1,"text":"…","markups":[]}],"sections":[{"name":"c39f","startIndex":0}]},"isFullContent":false,"subtitle":""},"cardType":0,"isDistributionAlertDismissed":false,"isShortform":false,"shortformType":0,"responsesLocked":false,"isLockedResponse":false,"isPublishToEmail":false,"responseDistribution":0,"isMarkedPaywallOnly":false,"type":"Post"},"c8f253dbf26d":{"id":"c8f253dbf26d","versionId":"cd519a2bb750","creatorId":"a1da27ad3cf9","homeCollectionId":"5fa59f8779b5","title":"Controlando Led RGB com Arduino e Processing","detectedLanguage":"en","latestVersion":"cd519a2bb750","latestPublishedVersion":"cd519a2bb750","hasUnpublishedEdits":false,"latestRev":110,"createdAt":1467474990954,"updatedAt":1523375081620,"acceptedAt":0,"firstPublishedAt":1240798231000,"latestPublishedAt":1497221996846,"vote":false,"experimentalCss":"","displayAuthor":"","content":{"postDisplay":{"coverless":true}},"virtuals":{"statusForCollection":"APPROVED","allowNotes":true,"previewImage":{"imageId":"1*Mcs38G5_Y_9xOmuLUmQJrA.jpeg","filter":"","backgroundSize":"","originalWidth":1024,"originalHeight":768,"strategy":"resample","height":0,"width":0},"wordCount":355,"imageCount":2,"readingTime":1.7229559748427672,"subtitle":"","publishedInCount":1,"usersBySocialRecommends":[],"noIndex":false,"recommends":3,"isBookmarked":false,"tags":[{"slug":"arduino","name":"Arduino","postCount":9420,"metadata":{"postCount":9420,"coverImage":{"id":"1*cGCh2BmDGeOmAzpo483WLg.jpeg","originalWidth":607,"originalHeight":341,"isFeatured":true}},"type":"Tag"},{"slug":"processing","name":"Processing","postCount":1451,"metadata":{"postCount":1451,"coverImage":{"id":"1*jPFWhziPLs9d039rBfj9Uw.jpeg","originalWidth":3504,"originalHeight":2336,"isFeatured":true,"alt":"Gray metal hinged door with heart shape cut out of the middle with a lit candle showing."}},"type":"Tag"},{"slug":"hacking","name":"Hacking","postCount":47094,"metadata":{"postCount":47094,"coverImage":{"id":"1*7RcxbIN11uxHVEgv-V8I3A.png","originalWidth":931,"originalHeight":616,"isFeatured":true}},"type":"Tag"},{"slug":"led","name":"Led","postCount":3815,"metadata":{"postCount":3815,"coverImage":{"id":"1*lRRKu1j4aRlBBfGZcfvlyg.png","originalWidth":740,"originalHeight":463,"isFeatured":true}},"type":"Tag"},{"slug":"tech","name":"Tech","postCount":281568,"metadata":{"postCount":281568,"coverImage":{"id":"1*wTultoqaZE8LMQDW6XkjJQ.png","originalWidth":1534,"originalHeight":861,"isFeatured":true}},"type":"Tag"}],"socialRecommendsCount":0,"responsesCreatedCount":0,"links":{"entries":[{"url":"http://www.flickr.com/photos/bsoares/sets/72157617326290410/","alts":[{"type":2,"url":"flickr://flickr.com/photos/bsoares/albums/72157617326290410"}],"httpStatus":200},{"url":"https://www.flickr.com/photos/bsoares/sets/72157617326290410/","alts":[{"type":2,"url":"flickr://flickr.com/photos/bsoares/albums/72157617326290410"}],"httpStatus":200},{"url":"http://en.wikipedia.org/wiki/LED#RGB_systems","alts":[],"httpStatus":200},{"url":"http://processing.org/","alts":[],"httpStatus":200},{"url":"http://pt.wikipedia.org/wiki/Modula%C3%A7%C3%A3o_por_largura_de_pulso","alts":[],"httpStatus":200},{"url":"http://www.arduino.cc/en/Tutorial/PWM","alts":[],"httpStatus":200},{"url":"http://www.processing.org","alts":[],"httpStatus":200},{"url":"http://www.arduino.cc","alts":[],"httpStatus":200},{"url":"http://pt.wikipedia.org/wiki/Terra_(eletricidade)","alts":[],"httpStatus":200}],"version":"0.3","generatedAt":1497221997559},"isLockedPreviewOnly":false,"metaDescription":"","totalClapCount":4,"sectionCount":1,"readingList":0,"topics":[]},"coverless":true,"slug":"controlando-led-rgb-com-arduino-e-processing","translationSourcePostId":"","translationSourceCreatorId":"","isApprovedTranslation":false,"inResponseToPostId":"","inResponseToRemovedAt":0,"isTitleSynthesized":false,"allowResponses":false,"importedUrl":"","importedPublishedAt":1240798231000,"visibility":0,"uniqueSlug":"controlando-led-rgb-com-arduino-e-processing-c8f253dbf26d","previewContent":{"bodyModel":{"paragraphs":[{"name":"0285","type":3,"text":"Controlando Led RGB com Arduino e Processing","markups":[],"alignment":1},{"name":"b2ba","type":11,"text":"","markups":[],"layout":9,"iframe":{"mediaResourceId":"0adf9006f4ee64d078eb0678c51211ab","iframeWidth":480,"iframeHeight":368,"thumbnailUrl":"https://i.embed.ly/1/image?url=https%3A%2F%2Fi.vimeocdn.com%2Fvideo%2F10098309_295x166.jpg&key=a19fcc184b9711e1b4764040d3dc5c07"}}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":""},"license":0,"inResponseToMediaResourceId":"","canonicalUrl":"","approvedHomeCollectionId":"5fa59f8779b5","isNewsletter":false,"newsletterId":"","webCanonicalUrl":"http://blog.bsoares.com.br/processing/controlling-rgb-led-with-arduino-and-processing","mediumUrl":"","migrationId":"e5f2ab352b9d","notifyFollowers":false,"notifyTwitter":false,"notifyFacebook":false,"responseHiddenOnParentPostAt":0,"isSeries":false,"isSubscriptionLocked":false,"seriesLastAppendedAt":0,"audioVersionDurationSec":0,"sequenceId":"","isEligibleForRevenue":false,"isBlockedFromHightower":false,"deletedAt":0,"lockedPostSource":0,"hightowerMinimumGuaranteeStartsAt":0,"hightowerMinimumGuaranteeEndsAt":0,"featureLockRequestAcceptedAt":0,"mongerRequestType":1,"layerCake":0,"socialTitle":"","socialDek":"","editorialPreviewTitle":"","editorialPreviewDek":"","curationEligibleAt":0,"isProxyPost":false,"proxyPostFaviconUrl":"","proxyPostProviderName":"","proxyPostType":0,"isSuspended":false,"isLimitedState":false,"seoTitle":"","previewContent2":{"bodyModel":{"paragraphs":[{"name":"0285","type":3,"text":"Controlando Led RGB com Arduino e Processing","markups":[]},{"name":"b2ba","type":11,"text":"","markups":[],"layout":1,"iframe":{"mediaResourceId":"0adf9006f4ee64d078eb0678c51211ab","iframeWidth":480,"iframeHeight":368,"thumbnailUrl":"https://i.embed.ly/1/image?url=https%3A%2F%2Fi.vimeocdn.com%2Fvideo%2F10098309_295x166.jpg&key=a19fcc184b9711e1b4764040d3dc5c07"}},{"name":"7acf","type":4,"text":"https://www.flickr.com/photos/bsoares/sets/72157617326290410/","markups":[{"type":3,"start":0,"end":61,"href":"https://www.flickr.com/photos/bsoares/sets/72157617326290410/","title":"","rel":"nofollow","anchorType":0}],"layout":1,"metadata":{"id":"1*Mcs38G5_Y_9xOmuLUmQJrA.jpeg","originalWidth":1024,"originalHeight":768}},{"name":"4651","type":1,"text":"Vamos a um exemplo de uso da Arduino onde controlo um Led RGB de quatro terminais através da porta serial.\nPara enviar as cores através da serial usaremos processing.","markups":[{"type":3,"start":29,"end":36,"href":"http://www.arduino.cc","title":"","rel":"noopener","anchorType":0},{"type":3,"start":54,"end":61,"href":"http://en.wikipedia.org/wiki/LED#RGB_systems","title":"","rel":"noopener","anchorType":0},{"type":3,"start":155,"end":165,"href":"http://processing.org/","title":"","rel":"noopener","anchorType":0}]},{"name":"5d7f","type":1,"text":"Para combinar as cores de um Led RGB é necessário variar a voltagem em cada terminal, e para isso a…","markups":[{"type":3,"start":131,"end":153,"href":"http://www.arduino.cc/en/Tutorial/PWM","title":"","rel":"","anchorType":0},{"type":3,"start":155,"end":185,"href":"http://pt.wikipedia.org/wiki/Modula%C3%A7%C3%A3o_por_largura_de_pulso","title":"","rel":"","anchorType":0},{"type":3,"start":259,"end":262,"href":"http://pt.wikipedia.org/wiki/Terra_(eletricidade)","title":"","rel":"","anchorType":0}]}],"sections":[{"name":"9ca5","startIndex":0}]},"isFullContent":false,"subtitle":""},"cardType":0,"isDistributionAlertDismissed":false,"isShortform":false,"shortformType":0,"responsesLocked":false,"isLockedResponse":false,"isPublishToEmail":false,"responseDistribution":0,"isMarkedPaywallOnly":false,"type":"Post"},"b72b5b3fe472":{"id":"b72b5b3fe472","versionId":"8d4c659a5239","creatorId":"a1da27ad3cf9","homeCollectionId":"5fa59f8779b5","title":"Twitter Hardware","detectedLanguage":"en","latestVersion":"8d4c659a5239","latestPublishedVersion":"8d4c659a5239","hasUnpublishedEdits":false,"latestRev":87,"createdAt":1467474993345,"updatedAt":1519371694102,"acceptedAt":0,"firstPublishedAt":1240092493000,"latestPublishedAt":1497223195625,"vote":false,"experimentalCss":"","displayAuthor":"","content":{"postDisplay":{"coverless":true}},"virtuals":{"statusForCollection":"APPROVED","allowNotes":true,"previewImage":{"imageId":"1*D4eDprTuYAWiuSvnbCF5bA.png","filter":"","backgroundSize":"","originalWidth":688,"originalHeight":478,"strategy":"resample","height":0,"width":0},"wordCount":69,"imageCount":1,"readingTime":0.46037735849056605,"subtitle":"","publishedInCount":1,"usersBySocialRecommends":[],"noIndex":false,"recommends":1,"isBookmarked":false,"tags":[{"slug":"hacking","name":"Hacking","postCount":47094,"metadata":{"postCount":47094,"coverImage":{"id":"1*7RcxbIN11uxHVEgv-V8I3A.png","originalWidth":931,"originalHeight":616,"isFeatured":true}},"type":"Tag"},{"slug":"tech","name":"Tech","postCount":281568,"metadata":{"postCount":281568,"coverImage":{"id":"1*wTultoqaZE8LMQDW6XkjJQ.png","originalWidth":1534,"originalHeight":861,"isFeatured":true}},"type":"Tag"},{"slug":"arduino","name":"Arduino","postCount":9420,"metadata":{"postCount":9420,"coverImage":{"id":"1*cGCh2BmDGeOmAzpo483WLg.jpeg","originalWidth":607,"originalHeight":341,"isFeatured":true}},"type":"Tag"},{"slug":"twitter","name":"Twitter","postCount":72773,"metadata":{"postCount":72773,"coverImage":{"id":"1*zT5Oh0Gu1ACd5y8XLYwTQg.jpeg","originalWidth":6720,"originalHeight":4480,"isFeatured":true}},"type":"Tag"},{"slug":"lcd-displays","name":"Display Lcd","postCount":1,"metadata":{"postCount":1,"coverImage":{"id":"1*D4eDprTuYAWiuSvnbCF5bA.png","originalWidth":688,"originalHeight":478}},"type":"Tag"}],"socialRecommendsCount":0,"responsesCreatedCount":0,"links":{"entries":[{"url":"http://www.arduino.cc/","alts":[],"httpStatus":200},{"url":"http://arduino.cc/","alts":[],"httpStatus":200},{"url":"http://arduino.cc/en/Reference/LiquidCrystal?from=Tutorial.LCDLibrary","alts":[],"httpStatus":200},{"url":"https://github.com/bsoares/twitter_hardware","alts":[],"httpStatus":200},{"url":"http://twitter.com/","alts":[],"httpStatus":200},{"url":"http://www.adobe.com/products/flex/","alts":[],"httpStatus":200},{"url":"http://www.adobe.com/products/air/","alts":[],"httpStatus":200},{"url":"http://fritzing.org/","alts":[],"httpStatus":200},{"url":"http://www.flickr.com/photos/bsoares/sets/72157616923436133/","alts":[{"type":2,"url":"flickr://flickr.com/photos/bsoares/albums/72157616923436133"}],"httpStatus":200}],"version":"0.3","generatedAt":1497223366964},"isLockedPreviewOnly":false,"metaDescription":"","totalClapCount":1,"sectionCount":1,"readingList":0,"topics":[]},"coverless":true,"slug":"twitter-hardware","translationSourcePostId":"","translationSourceCreatorId":"","isApprovedTranslation":false,"inResponseToPostId":"","inResponseToRemovedAt":0,"isTitleSynthesized":false,"allowResponses":false,"importedUrl":"","importedPublishedAt":1240092493000,"visibility":0,"uniqueSlug":"twitter-hardware-b72b5b3fe472","previewContent":{"bodyModel":{"paragraphs":[{"name":"13b1","type":3,"text":"Twitter Hardware","markups":[],"alignment":1},{"name":"ec80","type":11,"text":"","markups":[],"layout":9,"iframe":{"mediaResourceId":"adb5bcaa9fee71f3f2b558ee1b30d755","iframeWidth":320,"iframeHeight":240,"thumbnailUrl":"https://i.embed.ly/1/image?url=https%3A%2F%2Fi.vimeocdn.com%2Fvideo%2F9089596_295x166.jpg&key=a19fcc184b9711e1b4764040d3dc5c07"}}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":""},"license":0,"inResponseToMediaResourceId":"","canonicalUrl":"","approvedHomeCollectionId":"5fa59f8779b5","isNewsletter":false,"newsletterId":"","webCanonicalUrl":"http://blog.bsoares.com.br/arduino/twitter-hardware","mediumUrl":"","migrationId":"e5f2ab352b9d","notifyFollowers":false,"notifyTwitter":false,"notifyFacebook":false,"responseHiddenOnParentPostAt":0,"isSeries":false,"isSubscriptionLocked":false,"seriesLastAppendedAt":0,"audioVersionDurationSec":0,"sequenceId":"","isEligibleForRevenue":false,"isBlockedFromHightower":false,"deletedAt":0,"lockedPostSource":0,"hightowerMinimumGuaranteeStartsAt":0,"hightowerMinimumGuaranteeEndsAt":0,"featureLockRequestAcceptedAt":0,"mongerRequestType":1,"layerCake":0,"socialTitle":"","socialDek":"","editorialPreviewTitle":"","editorialPreviewDek":"","curationEligibleAt":0,"isProxyPost":false,"proxyPostFaviconUrl":"","proxyPostProviderName":"","proxyPostType":0,"isSuspended":false,"isLimitedState":false,"seoTitle":"","previewContent2":{"bodyModel":{"paragraphs":[{"name":"13b1","type":3,"text":"Twitter Hardware","markups":[]},{"name":"ec80","type":11,"text":"","markups":[],"layout":1,"iframe":{"mediaResourceId":"adb5bcaa9fee71f3f2b558ee1b30d755","iframeWidth":320,"iframeHeight":240,"thumbnailUrl":"https://i.embed.ly/1/image?url=https%3A%2F%2Fi.vimeocdn.com%2Fvideo%2F9089596_295x166.jpg&key=a19fcc184b9711e1b4764040d3dc5c07"}},{"name":"036c","type":1,"text":"Twitter Hardware é um projeto que utiliza a placa Arduino e um Display LCD para exibir as mensagens do Twitter. Para que a Arduino tenha as mensagens escrevi um software em Adobe AIR / Flex, que se conecta ao Serial Proxy enviando o conteúdo para a Arduino.","markups":[{"type":3,"start":50,"end":57,"href":"http://www.arduino.cc/","title":"","rel":"noopener","anchorType":0},{"type":3,"start":103,"end":110,"href":"http://twitter.com/","title":"","rel":"noopener","anchorType":0},{"type":3,"start":173,"end":182,"href":"http://www.adobe.com/products/air/","title":"","rel":"noopener","anchorType":0},{"type":3,"start":185,"end":189,"href":"http://www.adobe.com/products/flex/","title":"","rel":"noopener","anchorType":0}]},{"name":"041d","type":14,"text":"bsoares/twitter_hardware\ntwitter_hardware - https://medium.com/bsoares-labs/twitter-hardware-b72b5b3fe472github.com","markups":[{"type":3,"start":0,"end":115,"href":"https://github.com/bsoares/twitter_hardware","title":"https://github.com/bsoares/twitter_hardware","rel":"","anchorType":0},{"type":1,"start":0,"end":24},{"type":2,"start":25,"end":105}],"mixtapeMetadata":{"mediaResourceId":"4393e8b22eee6385ad143326983ec2e7","thumbnailImageId":"0*8OuQYD77jfE20Syt.","href":"https://github.com/bsoares/twitter_hardware"}},{"name":"fee1","type":3,"text":"Esquemático","markups":[{"type":1,"start":0,"end":11}]},{"name":"2ecd","type":4,"text":"","markups":[],"layout":1,"metadata":{"id":"1*D4eDprTuYAWiuSvnbCF5bA.png","originalWidth":688,"originalHeight":478}},{"name":"181c","type":1,"text":"Conteúdo relacionado:\nFotos…","markups":[{"type":3,"start":22,"end":37,"href":"http://www.flickr.com/photos/bsoares/sets/72157616923436133/","title":"","rel":"","anchorType":0},{"type":3,"start":38,"end":46,"href":"http://fritzing.org/","title":"","rel":"","anchorType":0},{"type":3,"start":47,"end":54,"href":"http://arduino.cc/","title":"","rel":"","anchorType":0},{"type":3,"start":55,"end":64,"href":"http://www.adobe.com/products/air/","title":"","rel":"","anchorType":0},{"type":3,"start":65,"end":75,"href":"http://www.adobe.com/products/flex/","title":"","rel":"","anchorType":0},{"type":3,"start":76,"end":97,"href":"http://arduino.cc/en/Reference/LiquidCrystal?from=Tutorial.LCDLibrary","title":"","rel":"","anchorType":0},{"type":1,"start":0,"end":21}]}],"sections":[{"name":"2818","startIndex":0}]},"isFullContent":false,"subtitle":""},"cardType":0,"isDistributionAlertDismissed":false,"isShortform":false,"shortformType":0,"responsesLocked":false,"isLockedResponse":false,"isPublishToEmail":false,"responseDistribution":0,"isMarkedPaywallOnly":false,"type":"Post"}}},"paging":{"path":"/_/api/collections/5fa59f8779b5/stream","next":{"to":"1240092493000","ignoredIds":[],"page":2}},"collection":{"id":"5fa59f8779b5","name":"Labs","slug":"bsoares-labs","tags":["ARDUINO","PROCESSING","DEVELOPMENT","TECH","TECHNOLOGY"],"creatorId":"a1da27ad3cf9","description":"Some experiments.","shortDescription":"Some experiments.","image":{"imageId":"1*AM0HY3_6WX9TBC3vWXuZmQ.jpeg","filter":"","backgroundSize":"","originalWidth":600,"originalHeight":600,"strategy":"resample","height":0,"width":0},"metadata":{"followerCount":8,"activeAt":1467475049329},"virtuals":{"permissions":{"canPublish":false,"canPublishAll":false,"canRepublish":false,"canRemove":false,"canManageAll":false,"canSubmit":false,"canEditPosts":false,"canAddWriters":false,"canViewStats":false,"canSendNewsletter":false,"canViewLockedPosts":false,"canViewCloaked":false,"canEditOwnPosts":false,"canBeAssignedAuthor":false,"canEnrollInHightower":false,"canLockPostsForMediumMembers":false,"canLockOwnPostsForMediumMembers":false,"canViewNewsletterV2Stats":false,"canCreateNewsletterV3":false},"isSubscribed":false,"isEnrolledInHightower":false,"isEligibleForHightower":false,"isSubscribedToCollectionEmails":false,"isMuted":false,"canToggleEmail":false,"isWriter":false},"logo":{"imageId":"","filter":"","backgroundSize":"","originalWidth":0,"originalHeight":0,"strategy":"resample","height":0,"width":0},"twitterUsername":"bsoares","facebookPageName":"brusoab","publicEmail":"bruno@bsoares.com","domain":"labs.bsoares.com","sections":[{"type":2,"collectionHeaderMetadata":{"title":"Labs","description":"Alguns experimentos com eletrônica e programação :-)","backgroundImage":{},"logoImage":{},"alignment":2,"layout":5}},{"type":1,"postListMetadata":{"source":1,"layout":4,"number":7,"postIds":["ee13cce39007","bfbe97068dd8","18db76af53b7","c8f253dbf26d","b72b5b3fe472"]}}],"favicon":{"imageId":"","filter":"","backgroundSize":"","originalWidth":0,"originalHeight":0,"strategy":"resample","height":0,"width":0},"colorPalette":{"defaultBackgroundSpectrum":{"colorPoints":[{"color":"#FF1A8917","point":0},{"color":"#FF11800E","point":0.1},{"color":"#FF0F730C","point":0.2},{"color":"#FF095407","point":1}],"backgroundColor":"#FFFFFFFF"},"highlightSpectrum":{"colorPoints":[{"color":"#FFFFFFFF","point":0},{"color":"#FFE8F3E8","point":0.1},{"color":"#FFE8F3E8","point":0.2},{"color":"#FFD1E7D1","point":0.6},{"color":"#FFA3D0A2","point":1}],"backgroundColor":"#FFFFFFFF"},"darkBackgroundSpectrum":{"colorPoints":[{"color":"#FF095407","point":0},{"color":"#FF0F730C","point":0.1},{"color":"#FF11800E","point":0.2},{"color":"#FF1A8917","point":1}],"backgroundColor":"#FF000000"}},"navItems":[],"colorBehavior":1,"googleAnalyticsId":"UA-47684229-1","ampLogo":{"imageId":"","filter":"","backgroundSize":"","originalWidth":0,"originalHeight":0,"strategy":"resample","height":0,"width":0},"header":{"title":"Labs","description":"Alguns experimentos com eletrônica e programação :-)","backgroundImage":{},"logoImage":{},"alignment":2,"layout":5},"paidForDomainAt":1497211874135,"subscriberCount":8,"tagline":"Some experiments.","polarisCoverImage":{"imageId":"","filter":"","backgroundSize":"","originalWidth":0,"originalHeight":0,"strategy":"resample","height":0,"width":0},"type":"Collection"},"header":{"title":"Labs","description":"Alguns experimentos com eletrônica e programação :-)","backgroundImage":{},"logoImage":{},"alignment":2,"layout":5},"streamItems":[{"createdAt":1719708079567,"randomId":"dad366a50ca4","section":{"items":[{"post":{"postId":"ee13cce39007"},"itemType":"post"},{"post":{"postId":"bfbe97068dd8"},"itemType":"post"},{"post":{"postId":"18db76af53b7"},"itemType":"post"},{"post":{"postId":"c8f253dbf26d"},"itemType":"post"},{"post":{"postId":"b72b5b3fe472"},"itemType":"post"}],"layout":4},"itemType":"section","type":"StreamItem"}]})
// ]]></script><script type="text/javascript">(function(b,r,a,n,c,h,_,s,d,k){if(!b[n]||!b[n]._q){for(;s<_.length;)c(h,_[s++]);d=r.createElement(a);d.async=1;d.src="https://cdn.branch.io/branch-latest.min.js";k=r.getElementsByTagName(a)[0];k.parentNode.insertBefore(d,k);b[n]=h}})(window,document,"script","branch",function(b,r){b[r]=function(){b._q.push([r,arguments])}},{_q:[],_v:1},"addListener applyCode autoAppIndex banner closeBanner closeJourney creditHistory credits data deepview deepviewCta first getCode init link logout redeem referrals removeListener sendSMS setBranchViewData setIdentity track validateCode trackCommerceEvent logEvent".split(" "), 0); branch.init('key_live_ofxXr2qTrrU9NqURK8ZwEhknBxiI6KBm', {'no_journeys': true, 'disable_exit_animation': true, 'disable_entry_animation': true, 'tracking_disabled':  false }, function(err, data) {});</script></body></html>