diff --git a/404.html b/404.html index 0600b50a9..29e98d5c2 100755 --- a/404.html +++ b/404.html @@ -5,8 +5,8 @@ Página não encontrada | Franzininho - - + +
Ir para o conteúdo principal

Página não encontrada

Não foi possível encontrar o que você estava procurando.

Entre em contato com o proprietário do site que vinculou a URL original e informe a ele que o link está quebrado.

diff --git a/assets/images/1-display-oled-328a4e4d47631c824499cbb3a4ce29f1.webp b/assets/images/1-display-oled-328a4e4d47631c824499cbb3a4ce29f1.webp new file mode 100755 index 000000000..af0911c2a Binary files /dev/null and b/assets/images/1-display-oled-328a4e4d47631c824499cbb3a4ce29f1.webp differ diff --git a/assets/images/3-display-text-083e3081e1bfea165e652fa266459976.webp b/assets/images/3-display-text-083e3081e1bfea165e652fa266459976.webp new file mode 100755 index 000000000..a2118d624 Binary files /dev/null and b/assets/images/3-display-text-083e3081e1bfea165e652fa266459976.webp differ diff --git a/assets/images/4-display-image-182f0620827b5137a39958ab3b40e3ec.webp b/assets/images/4-display-image-182f0620827b5137a39958ab3b40e3ec.webp new file mode 100755 index 000000000..b1afc8c71 Binary files /dev/null and b/assets/images/4-display-image-182f0620827b5137a39958ab3b40e3ec.webp differ diff --git a/assets/js/29b42639.bb3bb213.js b/assets/js/29b42639.bb3bb213.js new file mode 100755 index 000000000..08ed36097 --- /dev/null +++ b/assets/js/29b42639.bb3bb213.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkFranzininho=self.webpackChunkFranzininho||[]).push([[2096],{98776:(e,i,o)=>{o.r(i),o.d(i,{assets:()=>t,contentTitle:()=>a,default:()=>m,frontMatter:()=>s,metadata:()=>d,toc:()=>c});var r=o(17624),n=o(4552);const s={id:"micropython-timers",title:"Timers",slug:"/franzininho-wifi/exemplos-micropython/timers",description:"Descubra como os timers peri\xf3dicos e one-shot da Franzininho WiFi podem controlar e antecipar cen\xe1rios nos sistemas embarcados. Use-os para piscar LEDs, ler sensores etc.",author:"Sthefania Fernandes"},a=void 0,d={id:"FranzininhoWifi/exemplos-micropython/micropython-timers",title:"Timers",description:"Descubra como os timers peri\xf3dicos e one-shot da Franzininho WiFi podem controlar e antecipar cen\xe1rios nos sistemas embarcados. Use-os para piscar LEDs, ler sensores etc.",source:"@site/docs/FranzininhoWifi/exemplos-micropython/timers.md",sourceDirName:"FranzininhoWifi/exemplos-micropython",slug:"/franzininho-wifi/exemplos-micropython/timers",permalink:"/docs/franzininho-wifi/exemplos-micropython/timers",draft:!1,unlisted:!1,editUrl:"https://github.com/Franzininho/docs-franzininho-site/edit/main/docs/FranzininhoWifi/exemplos-micropython/timers.md",tags:[],version:"current",frontMatter:{id:"micropython-timers",title:"Timers",slug:"/franzininho-wifi/exemplos-micropython/timers",description:"Descubra como os timers peri\xf3dicos e one-shot da Franzininho WiFi podem controlar e antecipar cen\xe1rios nos sistemas embarcados. Use-os para piscar LEDs, ler sensores etc.",author:"Sthefania Fernandes"},sidebar:"docs",previous:{title:"Entradas e sa\xeddas digitais",permalink:"/docs/franzininho-wifi/exemplos-micropython/entradas-saidas-digitais"},next:{title:"Display OLED",permalink:"/docs/franzininho-wifi/exemplos-micropython/display-oled"}},t={},c=[{value:"Introdu\xe7\xe3o",id:"introdu\xe7\xe3o",level:2},{value:"Timer peri\xf3dico",id:"timer-peri\xf3dico",level:2},{value:"Timer one-shot",id:"timer-one-shot",level:2},{value:"Recursos necess\xe1rios",id:"recursos-necess\xe1rios",level:2},{value:"C\xf3digo",id:"c\xf3digo",level:2},{value:"Blink LED com Timer Peri\xf3dico",id:"blink-led-com-timer-peri\xf3dico",level:3},{value:"Desativar LED utilizando timer one-shot",id:"desativar-led-utilizando-timer-one-shot",level:3}];function l(e){const i={code:"code",h2:"h2",h3:"h3",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",...(0,n.M)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(i.h2,{id:"introdu\xe7\xe3o",children:"Introdu\xe7\xe3o"}),"\n",(0,r.jsx)(i.p,{children:"Em sistemas embarcados, a capacidade de controlar e antecipar uma variedade de cen\xe1rios \xe9 essencial. Nesse contexto, os temporizadores desempenham um papel fundamental, por oferecerem controle preciso sobre o tempo e a ordem de eventos em diversas aplica\xe7\xf5es."}),"\n",(0,r.jsx)(i.p,{children:"Neste artigo, abordaremos o controle de dois tipos distintos de temporizadores, o timer peri\xf3dico e o timer one-shot."}),"\n",(0,r.jsx)(i.h2,{id:"timer-peri\xf3dico",children:"Timer peri\xf3dico"}),"\n",(0,r.jsx)(i.p,{children:"O temporizador peri\xf3dico \xe9 um recurso utilizado para gerar interrup\xe7\xf5es ou eventos em intervalos pr\xe9-definidos de tempo. Seu funcionamento \xe9 simples, o temporizador ir\xe1 iniciar sua contagem de 0 at\xe9 o valor definido e, quando atinge o valor do per\xedodo configurado, ele gera uma interrup\xe7\xe3o ou dispara um evento. Ap\xf3s a interrup\xe7\xe3o ele reinicia automaticamente."}),"\n",(0,r.jsx)(i.p,{children:"Este timer pode ser utilizado para piscar LEDs, leitura de sensores, aquisi\xe7\xe3o de dados, dentre outras aplica\xe7\xf5es."}),"\n",(0,r.jsx)(i.h2,{id:"timer-one-shot",children:"Timer one-shot"}),"\n",(0,r.jsx)(i.p,{children:"O temporizador one-shot \xe9 um recurso utilizado para gerar uma \xfanica interrup\xe7\xe3o em um intervalo pr\xe9-definido de tempo. Diferente do timer peri\xf3dico, este ir\xe1 disparar apenas uma vez e, em seguida, parar at\xe9 que seja reiniciado no c\xf3digo."}),"\n",(0,r.jsx)(i.p,{children:"Este timer pode ser utilizado no debouncing de bot\xf5es, atrasos programados, temporizar tarefas \xfanicas, dentre outras aplica\xe7\xf5es."}),"\n",(0,r.jsx)(i.h2,{id:"recursos-necess\xe1rios",children:"Recursos necess\xe1rios"}),"\n",(0,r.jsx)(i.p,{children:"Para iniciar o trabalho com os GPIOs, \xe9 essencial possuir o diagrama de pinos da placa \xe0 disposi\xe7\xe3o, pois isso vai permitir que voc\xea identifique tanto os nomes quanto as fun\xe7\xf5es associadas a cada um deles."}),"\n",(0,r.jsxs)(i.table,{children:[(0,r.jsx)(i.thead,{children:(0,r.jsxs)(i.tr,{children:[(0,r.jsx)(i.th,{children:"Pino"}),(0,r.jsx)(i.th,{children:"Recurso"})]})}),(0,r.jsxs)(i.tbody,{children:[(0,r.jsxs)(i.tr,{children:[(0,r.jsx)(i.td,{children:"IO1"}),(0,r.jsx)(i.td,{children:"LDR"})]}),(0,r.jsxs)(i.tr,{children:[(0,r.jsx)(i.td,{children:"IO2"}),(0,r.jsx)(i.td,{children:"BT6"})]}),(0,r.jsxs)(i.tr,{children:[(0,r.jsx)(i.td,{children:"IO3"}),(0,r.jsx)(i.td,{children:"BT5"})]}),(0,r.jsxs)(i.tr,{children:[(0,r.jsx)(i.td,{children:"IO4"}),(0,r.jsx)(i.td,{children:"BT4"})]}),(0,r.jsxs)(i.tr,{children:[(0,r.jsx)(i.td,{children:"IO5"}),(0,r.jsx)(i.td,{children:"BT3"})]}),(0,r.jsxs)(i.tr,{children:[(0,r.jsx)(i.td,{children:"IO6"}),(0,r.jsx)(i.td,{children:"BT2"})]}),(0,r.jsxs)(i.tr,{children:[(0,r.jsx)(i.td,{children:"IO7"}),(0,r.jsx)(i.td,{children:"BT1"})]}),(0,r.jsxs)(i.tr,{children:[(0,r.jsx)(i.td,{children:"IO8"}),(0,r.jsx)(i.td,{children:"OLED_SDA"})]}),(0,r.jsxs)(i.tr,{children:[(0,r.jsx)(i.td,{children:"IO9"}),(0,r.jsx)(i.td,{children:"OLED_SCL"})]}),(0,r.jsxs)(i.tr,{children:[(0,r.jsx)(i.td,{children:"IO10"}),(0,r.jsx)(i.td,{children:"TFT_DC"})]}),(0,r.jsxs)(i.tr,{children:[(0,r.jsx)(i.td,{children:"IO11"}),(0,r.jsx)(i.td,{children:"TFT_RES"})]}),(0,r.jsxs)(i.tr,{children:[(0,r.jsx)(i.td,{children:"IO12"}),(0,r.jsx)(i.td,{children:"LED AZUL"})]}),(0,r.jsxs)(i.tr,{children:[(0,r.jsx)(i.td,{children:"IO13"}),(0,r.jsx)(i.td,{children:"LED VERDE"})]}),(0,r.jsxs)(i.tr,{children:[(0,r.jsx)(i.td,{children:"IO14"}),(0,r.jsx)(i.td,{children:"LED VERMELHO"})]}),(0,r.jsxs)(i.tr,{children:[(0,r.jsx)(i.td,{children:"IO15"}),(0,r.jsx)(i.td,{children:"DHT11"})]}),(0,r.jsxs)(i.tr,{children:[(0,r.jsx)(i.td,{children:"IO17"}),(0,r.jsx)(i.td,{children:"BUZZER"})]}),(0,r.jsxs)(i.tr,{children:[(0,r.jsx)(i.td,{children:"IO35"}),(0,r.jsx)(i.td,{children:"TFT_SDA"})]}),(0,r.jsxs)(i.tr,{children:[(0,r.jsx)(i.td,{children:"IO36"}),(0,r.jsx)(i.td,{children:"TFT_SCL"})]})]})]}),"\n",(0,r.jsx)(i.p,{children:"Tabela 1 \u2013 Franzininho WiFi Lab01 mapeamento de pinos"}),"\n",(0,r.jsx)(i.h2,{id:"c\xf3digo",children:"C\xf3digo"}),"\n",(0,r.jsx)(i.h3,{id:"blink-led-com-timer-peri\xf3dico",children:"Blink LED com Timer Peri\xf3dico"}),"\n",(0,r.jsx)(i.p,{children:"Com a Franzininho WiFi conectada ao seu computador, abra o Thonny e crie um novo arquivo contendo o c\xf3digo a seguir:"}),"\n",(0,r.jsx)(i.pre,{children:(0,r.jsx)(i.code,{className:"language-python",children:"from machine import Pin, Timer\nimport utime\n\nledR= Pin(14,Pin.OUT) #definindo o pino 14 (LED vermelho) como sa\xedda\ntemporizador = Timer(0) #definindo timer\n\nledState = False\n\ndef toogleLed ():\n global ledState\n ledState = not ledState\n ledR.value(ledState)\n\ndef tempo (timer): #definindo fun\xe7\xe3o callback\n global ledR\n toogleLed() # muda estado do led\n\ntemporizador.init(period = 1000, mode = Timer.PERIODIC, callback = tempo) \n#configurando timer com frequ\xeancia de 1Hz e no modo peri\xf3dico\n"})}),"\n",(0,r.jsxs)(i.p,{children:["Vamos come\xe7ar com ",(0,r.jsx)(i.code,{children:"from machine import Pin, Timer"}),". Para poder ser acessado os pinos da placa e trabalhar com os timers. O timer foi configurado utilizando a vari\xe1vel ",(0,r.jsx)(i.code,{children:"temporizador"}),", e o LED selecionado foi o de cor vermelha, que est\xe1 conectado ao pino 14 da Franzininho WiFi (como verificado na tabela de pinagem)."]}),"\n",(0,r.jsxs)(i.p,{children:["Para configurar o timer \xe9 preciso chamar a fun\xe7\xe3o ",(0,r.jsx)(i.code,{children:"init"})," e preencher alguns par\xe2metros:"]}),"\n",(0,r.jsxs)(i.ol,{children:["\n",(0,r.jsxs)(i.li,{children:[(0,r.jsx)(i.strong,{children:"period"}),": esse par\xe2metro define o tempo que levar\xe1 para o temporizador atingir zero e gerar uma interrup\xe7\xe3o. Vamos definir como 1000 (1Hz), isso far\xe1 com que o temporizador dure 1 segundo."]}),"\n",(0,r.jsxs)(i.li,{children:[(0,r.jsx)(i.strong,{children:"mode"}),": esse par\xe2metro define o modo de funcionamento do temporizador e pode ter um dos seguintes valores:","\n",(0,r.jsxs)(i.ol,{children:["\n",(0,r.jsxs)(i.li,{children:[(0,r.jsx)(i.code,{children:"Timer.PERIODIC"})," \u2013 modo que usaremos neste exemplo"]}),"\n",(0,r.jsx)(i.li,{children:(0,r.jsx)(i.code,{children:"Timer.ONE_SHOT"})}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(i.li,{children:[(0,r.jsx)(i.strong,{children:"callback"}),": esse par\xe2metro permite especificar a fun\xe7\xe3o de callback que ser\xe1 executada quando o temporizador atingir zero. Essa fun\xe7\xe3o de callback \xe9 chamada como uma interrup\xe7\xe3o, ent\xe3o ela deve ser projetada para ser curta e eficiente. A fun\xe7\xe3o de callback \xe9 \u201c",(0,r.jsx)(i.code,{children:"tempo"}),"\u201d."]}),"\n"]}),"\n",(0,r.jsx)(i.p,{children:"A fun\xe7\xe3o de callback, chamada de tempo, ser\xe1 chamada a cada segundo, pois essa foi a dura\xe7\xe3o definida para o temporizador. Seu papel \xe9 alterar o status do LED vermelho."}),"\n",(0,r.jsxs)(i.p,{children:["Para controlar o estado do LED vermelho foi criada a fun\xe7\xe3o ",(0,r.jsx)(i.code,{children:"toogle_led"}),". Inicialmente, a vari\xe1vel ",(0,r.jsx)(i.code,{children:"led_state"}),", que define o estado no LED (on ou off), \xe9 definida como ",(0,r.jsx)(i.code,{children:"false"})," e, a cada vez que a fun\xe7\xe3o ",(0,r.jsx)(i.code,{children:"toggle_led"})," \xe9 chamada, ela inverte o estado atual. A fun\xe7\xe3o \xe9 usada dentro da fun\xe7\xe3o callback ",(0,r.jsx)(i.code,{children:"tempo"}),", isso far\xe1 com que a cada segundo o LED vermelho seja alternado entre ligado e desligado. Assim, temos um blink LED."]}),"\n",(0,r.jsxs)(i.p,{children:["Note que dentro das fun\xe7\xf5es as vari\xe1veis s\xe3o alteradas para ",(0,r.jsx)(i.code,{children:"global"}),", isso \xe9 feito para garantir que as modifica\xe7\xf5es feitas dentro das fun\xe7\xf5es alterem o valor das vari\xe1veis fora delas."]}),"\n",(0,r.jsx)(i.h3,{id:"desativar-led-utilizando-timer-one-shot",children:"Desativar LED utilizando timer one-shot"}),"\n",(0,r.jsx)(i.p,{children:"Com a Franzininho WiFi conectada ao seu computador, abra o Thonny e crie um novo arquivo contendo o c\xf3digo a seguir:"}),"\n",(0,r.jsx)(i.pre,{children:(0,r.jsx)(i.code,{className:"language-python",children:'from machine import Pin, Timer\n\nledR= Pin(14,Pin.OUT) #definindo o pino 14 (LED vermelho) como sa\xedda\ntemporizador = Timer(0)\n\ndef desliga (timer): #definindo fun\xe7\xe3o callback\n global ledR\n ledR.off()\n print("led desligado")\n\nprint("Iniciando o timer")\ntemporizador.init(period = 3000, mode = Timer.ONE_SHOT, callback = desliga)\nledR.on()\n'})}),"\n",(0,r.jsxs)(i.p,{children:["Vamos come\xe7ar com ",(0,r.jsx)(i.code,{children:"from machine import Pin, Timer"}),". Para poder ser acessado os pinos da placa e trabalhar com os timers. O timer foi configurado utilizando a vari\xe1vel ",(0,r.jsx)(i.code,{children:"temporizador"}),", e o LED selecionado foi o de cor vermelha, que est\xe1 conectado ao pino 14 da Franzininho WiFi (como verificado na tabela de pinagem)."]}),"\n",(0,r.jsx)(i.p,{children:"Para configurar o novo timer foi preciso alterar os seguintes par\xe2metros:"}),"\n",(0,r.jsxs)(i.ol,{children:["\n",(0,r.jsxs)(i.li,{children:[(0,r.jsx)(i.strong,{children:"period"}),": vamos definir como 3000 (3Hz), isso far\xe1 com que o temporizador dure 3 segundos."]}),"\n",(0,r.jsxs)(i.li,{children:[(0,r.jsx)(i.strong,{children:"mode"}),": ",(0,r.jsx)(i.code,{children:"Timer.ONE_SHOT"})]}),"\n",(0,r.jsxs)(i.li,{children:[(0,r.jsx)(i.strong,{children:"callback"}),": a fun\xe7\xe3o de callback \xe9 \u201c",(0,r.jsx)(i.code,{children:"desliga"}),"\u201d."]}),"\n"]}),"\n",(0,r.jsx)(i.p,{children:"A fun\xe7\xe3o de callback, chamada de desliga, ser\xe1 chamada uma vez ap\xf3s passados 3 segundos, pois essa foi a dura\xe7\xe3o definida para o temporizador. Sua finalidade \xe9 desativar o LED vermelho, que inicialmente est\xe1 ligado."}),"\n",(0,r.jsxs)(i.p,{children:["Nesse caso, diferente do timer peri\xf3dico, o LED ir\xe1 desligar ap\xf3s o tempo definido e somente ser\xe1 aceso outra vez se a fun\xe7\xe3o ",(0,r.jsx)(i.code,{children:"temporizador.init"})," for chamada novamente."]}),"\n",(0,r.jsxs)(i.table,{children:[(0,r.jsx)(i.thead,{children:(0,r.jsxs)(i.tr,{children:[(0,r.jsx)(i.th,{children:"Autor"}),(0,r.jsx)(i.th,{children:"Sthefania Fernandes"})]})}),(0,r.jsx)(i.tbody,{children:(0,r.jsxs)(i.tr,{children:[(0,r.jsx)(i.td,{children:"Data:"}),(0,r.jsx)(i.td,{children:"15/12/2023"})]})})]})]})}function m(e={}){const{wrapper:i}={...(0,n.M)(),...e.components};return i?(0,r.jsx)(i,{...e,children:(0,r.jsx)(l,{...e})}):l(e)}},4552:(e,i,o)=>{o.d(i,{I:()=>d,M:()=>a});var r=o(11504);const n={},s=r.createContext(n);function a(e){const i=r.useContext(s);return r.useMemo((function(){return"function"==typeof e?e(i):{...i,...e}}),[i,e])}function d(e){let i;return i=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:a(e.components),r.createElement(s.Provider,{value:i},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/5f9a86e6.8ead8623.js b/assets/js/5f9a86e6.8ead8623.js deleted file mode 100755 index c8b63f2e9..000000000 --- a/assets/js/5f9a86e6.8ead8623.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkFranzininho=self.webpackChunkFranzininho||[]).push([[6280],{51032:(i,o,e)=>{e.r(o),e.d(o,{assets:()=>d,contentTitle:()=>r,default:()=>h,frontMatter:()=>a,metadata:()=>t,toc:()=>c});var s=e(17624),n=e(4552);const a={id:"micropython-entradas-saidas-digitais",title:"Explore as entradas e sa\xeddas digitais da Franzininho WiFi no MicroPython",slug:"/franzininho-wifi/exemplos-micropython/entradas-saidas-digitais",description:"Explore as entradas e sa\xeddas digitais da Franzininho WiFi com MicroPython. Controle LEDs e bot\xf5es na Franzininho WiFi LAB01.",author:"Sthefania Fernandes"},r=void 0,t={id:"FranzininhoWifi/exemplos-micropython/micropython-entradas-saidas-digitais",title:"Explore as entradas e sa\xeddas digitais da Franzininho WiFi no MicroPython",description:"Explore as entradas e sa\xeddas digitais da Franzininho WiFi com MicroPython. Controle LEDs e bot\xf5es na Franzininho WiFi LAB01.",source:"@site/docs/FranzininhoWifi/exemplos-micropython/entradas-saidas-digitais.md",sourceDirName:"FranzininhoWifi/exemplos-micropython",slug:"/franzininho-wifi/exemplos-micropython/entradas-saidas-digitais",permalink:"/docs/franzininho-wifi/exemplos-micropython/entradas-saidas-digitais",draft:!1,unlisted:!1,editUrl:"https://github.com/Franzininho/docs-franzininho-site/edit/main/docs/FranzininhoWifi/exemplos-micropython/entradas-saidas-digitais.md",tags:[],version:"current",frontMatter:{id:"micropython-entradas-saidas-digitais",title:"Explore as entradas e sa\xeddas digitais da Franzininho WiFi no MicroPython",slug:"/franzininho-wifi/exemplos-micropython/entradas-saidas-digitais",description:"Explore as entradas e sa\xeddas digitais da Franzininho WiFi com MicroPython. Controle LEDs e bot\xf5es na Franzininho WiFi LAB01.",author:"Sthefania Fernandes"},sidebar:"docs",previous:{title:"Primeiros Passos com MicroPython",permalink:"/docs/franzininho-wifi/exemplos-micropython/primeiros-passos"},next:{title:"Placa Franzininho WiFi dev Edition",permalink:"/docs/franzininho-wifi/franzininho-wifi-dev-edition"}},d={},c=[{value:"Introdu\xe7\xe3o",id:"introdu\xe7\xe3o",level:2},{value:"Recursos necess\xe1rios",id:"recursos-necess\xe1rios",level:2},{value:"M\xf3dulos do MicroPython",id:"m\xf3dulos-do-micropython",level:3},{value:"C\xf3digo",id:"c\xf3digo",level:2},{value:"Conclus\xe3o",id:"conclus\xe3o",level:2}];function l(i){const o={a:"a",code:"code",h2:"h2",h3:"h3",img:"img",p:"p",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",...(0,n.M)(),...i.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(o.h2,{id:"introdu\xe7\xe3o",children:"Introdu\xe7\xe3o"}),"\n",(0,s.jsx)(o.p,{children:"A Franzininho WiFi conta com pinos que podem operar em dois modos: OUTPUT e INPUT. Al\xe9m disso, \xe9 poss\xedvel usar resistores internos nos pinos configurados como Pull-Up ou Pull-Down para os pinos configurados como entradas."}),"\n",(0,s.jsx)(o.p,{children:"Neste artigo, vamos explorar como utilizar o MicroPython para controlar os pinos de I/O."}),"\n",(0,s.jsx)(o.p,{children:"Para isso vamos criar um c\xf3digo para manipular os LEDs e bot\xf5es da placa Franzininho WiFi LAB01, permitindo criar funcionalidades personalizadas e interativas."}),"\n",(0,s.jsx)(o.h2,{id:"recursos-necess\xe1rios",children:"Recursos necess\xe1rios"}),"\n",(0,s.jsx)(o.p,{children:"Para iniciar o trabalho com os GPIOs, \xe9 essencial possuir o diagrama de pinos da placa Franzininho WiFI LAB01 \xe0 disposi\xe7\xe3o, pois isso permitir\xe1 que voc\xea identifique tanto os nomes quanto as fun\xe7\xf5es associadas a cada um deles."}),"\n",(0,s.jsx)(o.p,{children:"Tabela 1 \u2013 Franzininho WiFi LAB01 mapeamento de pinos"}),"\n",(0,s.jsxs)(o.table,{children:[(0,s.jsx)(o.thead,{children:(0,s.jsxs)(o.tr,{children:[(0,s.jsx)(o.th,{children:"Pino"}),(0,s.jsx)(o.th,{children:"Recurso"})]})}),(0,s.jsxs)(o.tbody,{children:[(0,s.jsxs)(o.tr,{children:[(0,s.jsx)(o.td,{children:"IO1"}),(0,s.jsx)(o.td,{children:"LDR"})]}),(0,s.jsxs)(o.tr,{children:[(0,s.jsx)(o.td,{children:"IO2"}),(0,s.jsx)(o.td,{children:"BT6"})]}),(0,s.jsxs)(o.tr,{children:[(0,s.jsx)(o.td,{children:"IO3"}),(0,s.jsx)(o.td,{children:"BT5"})]}),(0,s.jsxs)(o.tr,{children:[(0,s.jsx)(o.td,{children:"IO4"}),(0,s.jsx)(o.td,{children:"BT4"})]}),(0,s.jsxs)(o.tr,{children:[(0,s.jsx)(o.td,{children:"IO5"}),(0,s.jsx)(o.td,{children:"BT3"})]}),(0,s.jsxs)(o.tr,{children:[(0,s.jsx)(o.td,{children:"IO6"}),(0,s.jsx)(o.td,{children:"BT2"})]}),(0,s.jsxs)(o.tr,{children:[(0,s.jsx)(o.td,{children:"IO7"}),(0,s.jsx)(o.td,{children:"BT1"})]}),(0,s.jsxs)(o.tr,{children:[(0,s.jsx)(o.td,{children:"IO8"}),(0,s.jsx)(o.td,{children:"OLED_SDA"})]}),(0,s.jsxs)(o.tr,{children:[(0,s.jsx)(o.td,{children:"IO9"}),(0,s.jsx)(o.td,{children:"OLED_SCL"})]}),(0,s.jsxs)(o.tr,{children:[(0,s.jsx)(o.td,{children:"IO10"}),(0,s.jsx)(o.td,{children:"TFT_DC"})]}),(0,s.jsxs)(o.tr,{children:[(0,s.jsx)(o.td,{children:"IO11"}),(0,s.jsx)(o.td,{children:"TFT_RES"})]}),(0,s.jsxs)(o.tr,{children:[(0,s.jsx)(o.td,{children:"IO12"}),(0,s.jsx)(o.td,{children:"LED AZUL"})]}),(0,s.jsxs)(o.tr,{children:[(0,s.jsx)(o.td,{children:"IO13"}),(0,s.jsx)(o.td,{children:"LED VERDE"})]}),(0,s.jsxs)(o.tr,{children:[(0,s.jsx)(o.td,{children:"IO14"}),(0,s.jsx)(o.td,{children:"LED VERMELHO"})]}),(0,s.jsxs)(o.tr,{children:[(0,s.jsx)(o.td,{children:"IO15"}),(0,s.jsx)(o.td,{children:"DHT11"})]}),(0,s.jsxs)(o.tr,{children:[(0,s.jsx)(o.td,{children:"IO17"}),(0,s.jsx)(o.td,{children:"BUZZER"})]}),(0,s.jsxs)(o.tr,{children:[(0,s.jsx)(o.td,{children:"IO35"}),(0,s.jsx)(o.td,{children:"TFT_SDA"})]}),(0,s.jsxs)(o.tr,{children:[(0,s.jsx)(o.td,{children:"IO36"}),(0,s.jsx)(o.td,{children:"TFT_SCL"})]})]})]}),"\n",(0,s.jsxs)(o.p,{children:["Nesta pr\xe1tica iremos utilizar o LED RGB e os bot\xf5es da ",(0,s.jsx)(o.a,{href:"https://docs.franzininho.com.br/docs/franzininho-wifi-lab01",children:"Franzininho WiFi LAB01"}),", conforme destacado na Figura abaixo:"]}),"\n",(0,s.jsxs)(o.p,{children:["Figura 1 \u2013 Resumo dos recursos da placa\n",(0,s.jsx)(o.img,{alt:"entradas e sa\xeddas digitais da Franzininho WiFi com MicroPython",src:e(1521).c+"",width:"800",height:"640"})]}),"\n",(0,s.jsx)(o.h3,{id:"m\xf3dulos-do-micropython",children:"M\xf3dulos do MicroPython"}),"\n",(0,s.jsxs)(o.p,{children:["O ",(0,s.jsx)(o.a,{href:"https://docs.micropython.org/en/latest/library/machine.html",children:"machine"})," cont\xe9m fun\xe7\xf5es espec\xedficas relacionadas ao hardware de uma placa em particular. A maioria das fun\xe7\xf5es neste m\xf3dulo permitem obter acesso direto e irrestrito aos blocos de hardware em um sistema, como: pinos, I2C, UART, SPI, ADC."]}),"\n",(0,s.jsx)(o.p,{children:"No MicroPython, como no Python, \xe9 poss\xedvel importar apenas parte de uma biblioteca, ao inv\xe9s de importar a biblioteca inteira. Um recurso \xfatil que utilizaremos bastante."}),"\n",(0,s.jsxs)(o.p,{children:["A biblioteca ",(0,s.jsx)(o.strong,{children:"\u2018utime\u2019"})," \xe9 uma vers\xe3o projetada para microcontroladores da biblioteca \u2018time\u2019. Essa biblioteca \xe9 \xfatil para inserir os atrasos necess\xe1rios em muitos projetos."]}),"\n",(0,s.jsxs)(o.p,{children:[(0,s.jsx)(o.strong,{children:"Obs"}),": se voc\xea esquecer e usar ",(0,s.jsx)(o.code,{children:"import time"})," , n\xe3o se preocupe: o MicroPython usar\xe1 automaticamente a biblioteca ",(0,s.jsx)(o.code,{children:"utime"})," em seu lugar."]}),"\n",(0,s.jsx)(o.h2,{id:"c\xf3digo",children:"C\xf3digo"}),"\n",(0,s.jsx)(o.p,{children:"Com a Franzininho WiFi conectada ao seu computador, abra o Thonny e crie um novo arquivo contendo o c\xf3digo a seguir:"}),"\n",(0,s.jsxs)(o.p,{children:["Para criar o programa que controla o LED RGB, come\xe7amos com a instru\xe7\xe3o ",(0,s.jsx)(o.code,{children:"from machine import Pin"}),". Isso instrui o MicroPython a importar apenas a fun\xe7\xe3o ",(0,s.jsx)(o.code,{children:"Pin"})," da biblioteca ",(0,s.jsx)(o.code,{children:"machine"}),", em vez de importar a biblioteca inteira. Dessa forma, teremos acesso apenas \xe0 funcionalidade necess\xe1ria para controlar os pinos da placa."]}),"\n",(0,s.jsxs)(o.p,{children:["\xc9 importante enfatizar que o Micropython \xe9 case-sensitive, isso significa que se voc\xea digitar ",(0,s.jsx)(o.code,{children:"pin"})," a biblioteca n\xe3o ser\xe1 reconhecida, ent\xe3o se atente no uso das letras mai\xfasculas e min\xfasculas."]}),"\n",(0,s.jsxs)(o.p,{children:["Em seguida, vamos nomear os LEDs e associ\xe1-los aos pinos da placa como sa\xedda (",(0,s.jsx)(o.code,{children:"Pin.OUT"}),"). Consultando a tabela de pinos da Franzininho WiFi LAB01, identificamos que o pino 12 \xe9 respons\xe1vel pela cor azul do LED RGB, o pino 13 pela cor verde e o pino 14 pela cor vermelha. Com isso fazemos a atribui\xe7\xe3o setando todos os pinos como sa\xedda."]}),"\n",(0,s.jsx)(o.p,{children:"De forma semelhante, realizamos o mesmo procedimento com os bot\xf5es. Ao consultar a tabela de pinos, identificamos que o pino 7 corresponde ao bot\xe3o 1, o pino 6 ao bot\xe3o 2 e o pino 5 ao bot\xe3o 3. \xc9 importante lembrar que esses dispositivos operam com a configura\xe7\xe3o pull-up, e essa informa\xe7\xe3o deve ser inclu\xedda no programa."}),"\n",(0,s.jsx)(o.p,{children:"Por \xfaltimo, o loop principal monitora constantemente o estado dos bot\xf5es para determinar se o LED deve ser ligado. H\xe1 uma pequena pausa de 100 milissegundos entre cada atualiza\xe7\xe3o do LED em resposta ao estado dos bot\xf5es. Esses atrasos s\xe3o usados para evitar que a leitura dos bot\xf5es e as altera\xe7\xf5es nos LEDs aconte\xe7am muito rapidamente e possam ser dif\xedceis de perceber."}),"\n",(0,s.jsx)(o.p,{children:"Se voc\xea n\xe3o possui a Franzininho WiFi LAB01 para testar o projeto, \xe9 poss\xedvel testar o programa utilizando a montagem do circuito em uma protoboard."}),"\n",(0,s.jsx)(o.p,{children:"Pressione as teclas e verifique que os leds acender\xe3o conforme a tecla pressionada:"}),"\n",(0,s.jsx)(o.p,{children:(0,s.jsx)(o.img,{alt:"Funcionamento",src:e(77792).c+"",width:"510",height:"306"})}),"\n",(0,s.jsx)(o.h2,{id:"conclus\xe3o",children:"Conclus\xe3o"}),"\n",(0,s.jsx)(o.p,{children:"Neste artigo, explicamos o funcionamento b\xe1sico dos pinos de I/O da Franzininho WiFi usando a placa de aplica\xe7\xe3o Franzininho WiFi LAB01. Exploramos as bibliotecas e fun\xe7\xf5es essenciais que nos permitem configurar esses pinos e acessar seus estados l\xf3gicos."}),"\n",(0,s.jsx)(o.p,{children:"Encorajamos que continue desenvolvendo suas habilidades de programa\xe7\xe3o e eletr\xf4nica, adaptando o c\xf3digo e criando projetos mais complexos. Isso permitir\xe1 explorar todo o potencial da Franzininho WiFi LAB01 com o MicroPython."}),"\n",(0,s.jsxs)(o.table,{children:[(0,s.jsx)(o.thead,{children:(0,s.jsxs)(o.tr,{children:[(0,s.jsx)(o.th,{children:"Autor"}),(0,s.jsx)(o.th,{children:"Sthefania Fernandes"})]})}),(0,s.jsx)(o.tbody,{children:(0,s.jsxs)(o.tr,{children:[(0,s.jsx)(o.td,{children:"Data:"}),(0,s.jsx)(o.td,{children:"17/11/2023"})]})})]})]})}function h(i={}){const{wrapper:o}={...(0,n.M)(),...i.components};return o?(0,s.jsx)(o,{...i,children:(0,s.jsx)(l,{...i})}):l(i)}},1521:(i,o,e)=>{e.d(o,{c:()=>s});const s=e.p+"assets/images/1-a73b02e1e67137518f241488c8367938.png"},77792:(i,o,e)=>{e.d(o,{c:()=>s});const s=e.p+"assets/images/2-7c035b6c259779caa74c5edd5e4d9c96.gif"},4552:(i,o,e)=>{e.d(o,{I:()=>t,M:()=>r});var s=e(11504);const n={},a=s.createContext(n);function r(i){const o=s.useContext(a);return s.useMemo((function(){return"function"==typeof i?i(o):{...o,...i}}),[o,i])}function t(i){let o;return o=i.disableParentContext?"function"==typeof i.components?i.components(n):i.components||n:r(i.components),s.createElement(a.Provider,{value:o},i.children)}}}]); \ No newline at end of file diff --git a/assets/js/5f9a86e6.a2a9f617.js b/assets/js/5f9a86e6.a2a9f617.js new file mode 100755 index 000000000..52a109e30 --- /dev/null +++ b/assets/js/5f9a86e6.a2a9f617.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkFranzininho=self.webpackChunkFranzininho||[]).push([[6280],{51032:(i,s,e)=>{e.r(s),e.d(s,{assets:()=>d,contentTitle:()=>r,default:()=>h,frontMatter:()=>a,metadata:()=>t,toc:()=>c});var o=e(17624),n=e(4552);const a={id:"micropython-entradas-saidas-digitais",title:"Entradas e sa\xeddas digitais",slug:"/franzininho-wifi/exemplos-micropython/entradas-saidas-digitais",description:"Explore as entradas e sa\xeddas digitais da Franzininho WiFi com MicroPython. Controle LEDs e bot\xf5es na Franzininho WiFi LAB01.",author:"Sthefania Fernandes"},r=void 0,t={id:"FranzininhoWifi/exemplos-micropython/micropython-entradas-saidas-digitais",title:"Entradas e sa\xeddas digitais",description:"Explore as entradas e sa\xeddas digitais da Franzininho WiFi com MicroPython. Controle LEDs e bot\xf5es na Franzininho WiFi LAB01.",source:"@site/docs/FranzininhoWifi/exemplos-micropython/entradas-saidas-digitais.md",sourceDirName:"FranzininhoWifi/exemplos-micropython",slug:"/franzininho-wifi/exemplos-micropython/entradas-saidas-digitais",permalink:"/docs/franzininho-wifi/exemplos-micropython/entradas-saidas-digitais",draft:!1,unlisted:!1,editUrl:"https://github.com/Franzininho/docs-franzininho-site/edit/main/docs/FranzininhoWifi/exemplos-micropython/entradas-saidas-digitais.md",tags:[],version:"current",frontMatter:{id:"micropython-entradas-saidas-digitais",title:"Entradas e sa\xeddas digitais",slug:"/franzininho-wifi/exemplos-micropython/entradas-saidas-digitais",description:"Explore as entradas e sa\xeddas digitais da Franzininho WiFi com MicroPython. Controle LEDs e bot\xf5es na Franzininho WiFi LAB01.",author:"Sthefania Fernandes"},sidebar:"docs",previous:{title:"Primeiros Passos com MicroPython",permalink:"/docs/franzininho-wifi/exemplos-micropython/primeiros-passos"},next:{title:"Timers",permalink:"/docs/franzininho-wifi/exemplos-micropython/timers"}},d={},c=[{value:"Introdu\xe7\xe3o",id:"introdu\xe7\xe3o",level:2},{value:"Recursos necess\xe1rios",id:"recursos-necess\xe1rios",level:2},{value:"M\xf3dulos do MicroPython",id:"m\xf3dulos-do-micropython",level:3},{value:"C\xf3digo",id:"c\xf3digo",level:2},{value:"Conclus\xe3o",id:"conclus\xe3o",level:2}];function l(i){const s={a:"a",code:"code",h2:"h2",h3:"h3",img:"img",p:"p",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",...(0,n.M)(),...i.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(s.h2,{id:"introdu\xe7\xe3o",children:"Introdu\xe7\xe3o"}),"\n",(0,o.jsx)(s.p,{children:"A Franzininho WiFi conta com pinos que podem operar em dois modos: OUTPUT e INPUT. Al\xe9m disso, \xe9 poss\xedvel usar resistores internos nos pinos configurados como Pull-Up ou Pull-Down para os pinos configurados como entradas."}),"\n",(0,o.jsx)(s.p,{children:"Neste artigo, vamos explorar como utilizar o MicroPython para controlar os pinos de I/O."}),"\n",(0,o.jsx)(s.p,{children:"Para isso vamos criar um c\xf3digo para manipular os LEDs e bot\xf5es da placa Franzininho WiFi LAB01, permitindo criar funcionalidades personalizadas e interativas."}),"\n",(0,o.jsx)(s.h2,{id:"recursos-necess\xe1rios",children:"Recursos necess\xe1rios"}),"\n",(0,o.jsx)(s.p,{children:"Para iniciar o trabalho com os GPIOs, \xe9 essencial possuir o diagrama de pinos da placa Franzininho WiFI LAB01 \xe0 disposi\xe7\xe3o, pois isso permitir\xe1 que voc\xea identifique tanto os nomes quanto as fun\xe7\xf5es associadas a cada um deles."}),"\n",(0,o.jsx)(s.p,{children:"Tabela 1 \u2013 Franzininho WiFi LAB01 mapeamento de pinos"}),"\n",(0,o.jsxs)(s.table,{children:[(0,o.jsx)(s.thead,{children:(0,o.jsxs)(s.tr,{children:[(0,o.jsx)(s.th,{children:"Pino"}),(0,o.jsx)(s.th,{children:"Recurso"})]})}),(0,o.jsxs)(s.tbody,{children:[(0,o.jsxs)(s.tr,{children:[(0,o.jsx)(s.td,{children:"IO1"}),(0,o.jsx)(s.td,{children:"LDR"})]}),(0,o.jsxs)(s.tr,{children:[(0,o.jsx)(s.td,{children:"IO2"}),(0,o.jsx)(s.td,{children:"BT6"})]}),(0,o.jsxs)(s.tr,{children:[(0,o.jsx)(s.td,{children:"IO3"}),(0,o.jsx)(s.td,{children:"BT5"})]}),(0,o.jsxs)(s.tr,{children:[(0,o.jsx)(s.td,{children:"IO4"}),(0,o.jsx)(s.td,{children:"BT4"})]}),(0,o.jsxs)(s.tr,{children:[(0,o.jsx)(s.td,{children:"IO5"}),(0,o.jsx)(s.td,{children:"BT3"})]}),(0,o.jsxs)(s.tr,{children:[(0,o.jsx)(s.td,{children:"IO6"}),(0,o.jsx)(s.td,{children:"BT2"})]}),(0,o.jsxs)(s.tr,{children:[(0,o.jsx)(s.td,{children:"IO7"}),(0,o.jsx)(s.td,{children:"BT1"})]}),(0,o.jsxs)(s.tr,{children:[(0,o.jsx)(s.td,{children:"IO8"}),(0,o.jsx)(s.td,{children:"OLED_SDA"})]}),(0,o.jsxs)(s.tr,{children:[(0,o.jsx)(s.td,{children:"IO9"}),(0,o.jsx)(s.td,{children:"OLED_SCL"})]}),(0,o.jsxs)(s.tr,{children:[(0,o.jsx)(s.td,{children:"IO10"}),(0,o.jsx)(s.td,{children:"TFT_DC"})]}),(0,o.jsxs)(s.tr,{children:[(0,o.jsx)(s.td,{children:"IO11"}),(0,o.jsx)(s.td,{children:"TFT_RES"})]}),(0,o.jsxs)(s.tr,{children:[(0,o.jsx)(s.td,{children:"IO12"}),(0,o.jsx)(s.td,{children:"LED AZUL"})]}),(0,o.jsxs)(s.tr,{children:[(0,o.jsx)(s.td,{children:"IO13"}),(0,o.jsx)(s.td,{children:"LED VERDE"})]}),(0,o.jsxs)(s.tr,{children:[(0,o.jsx)(s.td,{children:"IO14"}),(0,o.jsx)(s.td,{children:"LED VERMELHO"})]}),(0,o.jsxs)(s.tr,{children:[(0,o.jsx)(s.td,{children:"IO15"}),(0,o.jsx)(s.td,{children:"DHT11"})]}),(0,o.jsxs)(s.tr,{children:[(0,o.jsx)(s.td,{children:"IO17"}),(0,o.jsx)(s.td,{children:"BUZZER"})]}),(0,o.jsxs)(s.tr,{children:[(0,o.jsx)(s.td,{children:"IO35"}),(0,o.jsx)(s.td,{children:"TFT_SDA"})]}),(0,o.jsxs)(s.tr,{children:[(0,o.jsx)(s.td,{children:"IO36"}),(0,o.jsx)(s.td,{children:"TFT_SCL"})]})]})]}),"\n",(0,o.jsxs)(s.p,{children:["Nesta pr\xe1tica iremos utilizar o LED RGB e os bot\xf5es da ",(0,o.jsx)(s.a,{href:"https://docs.franzininho.com.br/docs/franzininho-wifi-lab01",children:"Franzininho WiFi LAB01"}),", conforme destacado na Figura abaixo:"]}),"\n",(0,o.jsxs)(s.p,{children:["Figura 1 \u2013 Resumo dos recursos da placa\n",(0,o.jsx)(s.img,{alt:"entradas e sa\xeddas digitais da Franzininho WiFi com MicroPython",src:e(1521).c+"",width:"800",height:"640"})]}),"\n",(0,o.jsx)(s.h3,{id:"m\xf3dulos-do-micropython",children:"M\xf3dulos do MicroPython"}),"\n",(0,o.jsxs)(s.p,{children:["O ",(0,o.jsx)(s.a,{href:"https://docs.micropython.org/en/latest/library/machine.html",children:"machine"})," cont\xe9m fun\xe7\xf5es espec\xedficas relacionadas ao hardware de uma placa em particular. A maioria das fun\xe7\xf5es neste m\xf3dulo permitem obter acesso direto e irrestrito aos blocos de hardware em um sistema, como: pinos, I2C, UART, SPI, ADC."]}),"\n",(0,o.jsx)(s.p,{children:"No MicroPython, como no Python, \xe9 poss\xedvel importar apenas parte de uma biblioteca, ao inv\xe9s de importar a biblioteca inteira. Um recurso \xfatil que utilizaremos bastante."}),"\n",(0,o.jsxs)(s.p,{children:["A biblioteca ",(0,o.jsx)(s.strong,{children:"\u2018utime\u2019"})," \xe9 uma vers\xe3o projetada para microcontroladores da biblioteca \u2018time\u2019. Essa biblioteca \xe9 \xfatil para inserir os atrasos necess\xe1rios em muitos projetos."]}),"\n",(0,o.jsxs)(s.p,{children:[(0,o.jsx)(s.strong,{children:"Obs"}),": se voc\xea esquecer e usar ",(0,o.jsx)(s.code,{children:"import time"})," , n\xe3o se preocupe: o MicroPython usar\xe1 automaticamente a biblioteca ",(0,o.jsx)(s.code,{children:"utime"})," em seu lugar."]}),"\n",(0,o.jsx)(s.h2,{id:"c\xf3digo",children:"C\xf3digo"}),"\n",(0,o.jsx)(s.p,{children:"Com a Franzininho WiFi conectada ao seu computador, abra o Thonny e crie um novo arquivo contendo o c\xf3digo a seguir:"}),"\n",(0,o.jsxs)(s.p,{children:["Para criar o programa que controla o LED RGB, come\xe7amos com a instru\xe7\xe3o ",(0,o.jsx)(s.code,{children:"from machine import Pin"}),". Isso instrui o MicroPython a importar apenas a fun\xe7\xe3o ",(0,o.jsx)(s.code,{children:"Pin"})," da biblioteca ",(0,o.jsx)(s.code,{children:"machine"}),", em vez de importar a biblioteca inteira. Dessa forma, teremos acesso apenas \xe0 funcionalidade necess\xe1ria para controlar os pinos da placa."]}),"\n",(0,o.jsxs)(s.p,{children:["\xc9 importante enfatizar que o Micropython \xe9 case-sensitive, isso significa que se voc\xea digitar ",(0,o.jsx)(s.code,{children:"pin"})," a biblioteca n\xe3o ser\xe1 reconhecida, ent\xe3o se atente no uso das letras mai\xfasculas e min\xfasculas."]}),"\n",(0,o.jsxs)(s.p,{children:["Em seguida, vamos nomear os LEDs e associ\xe1-los aos pinos da placa como sa\xedda (",(0,o.jsx)(s.code,{children:"Pin.OUT"}),"). Consultando a tabela de pinos da Franzininho WiFi LAB01, identificamos que o pino 12 \xe9 respons\xe1vel pela cor azul do LED RGB, o pino 13 pela cor verde e o pino 14 pela cor vermelha. Com isso fazemos a atribui\xe7\xe3o setando todos os pinos como sa\xedda."]}),"\n",(0,o.jsx)(s.p,{children:"De forma semelhante, realizamos o mesmo procedimento com os bot\xf5es. Ao consultar a tabela de pinos, identificamos que o pino 7 corresponde ao bot\xe3o 1, o pino 6 ao bot\xe3o 2 e o pino 5 ao bot\xe3o 3. \xc9 importante lembrar que esses dispositivos operam com a configura\xe7\xe3o pull-up, e essa informa\xe7\xe3o deve ser inclu\xedda no programa."}),"\n",(0,o.jsx)(s.p,{children:"Por \xfaltimo, o loop principal monitora constantemente o estado dos bot\xf5es para determinar se o LED deve ser ligado. H\xe1 uma pequena pausa de 100 milissegundos entre cada atualiza\xe7\xe3o do LED em resposta ao estado dos bot\xf5es. Esses atrasos s\xe3o usados para evitar que a leitura dos bot\xf5es e as altera\xe7\xf5es nos LEDs aconte\xe7am muito rapidamente e possam ser dif\xedceis de perceber."}),"\n",(0,o.jsx)(s.p,{children:"Se voc\xea n\xe3o possui a Franzininho WiFi LAB01 para testar o projeto, \xe9 poss\xedvel testar o programa utilizando a montagem do circuito em uma protoboard."}),"\n",(0,o.jsx)(s.p,{children:"Pressione as teclas e verifique que os leds acender\xe3o conforme a tecla pressionada:"}),"\n",(0,o.jsx)(s.p,{children:(0,o.jsx)(s.img,{alt:"Funcionamento",src:e(77792).c+"",width:"510",height:"306"})}),"\n",(0,o.jsx)(s.h2,{id:"conclus\xe3o",children:"Conclus\xe3o"}),"\n",(0,o.jsx)(s.p,{children:"Neste artigo, explicamos o funcionamento b\xe1sico dos pinos de I/O da Franzininho WiFi usando a placa de aplica\xe7\xe3o Franzininho WiFi LAB01. Exploramos as bibliotecas e fun\xe7\xf5es essenciais que nos permitem configurar esses pinos e acessar seus estados l\xf3gicos."}),"\n",(0,o.jsx)(s.p,{children:"Encorajamos que continue desenvolvendo suas habilidades de programa\xe7\xe3o e eletr\xf4nica, adaptando o c\xf3digo e criando projetos mais complexos. Isso permitir\xe1 explorar todo o potencial da Franzininho WiFi LAB01 com o MicroPython."}),"\n",(0,o.jsxs)(s.table,{children:[(0,o.jsx)(s.thead,{children:(0,o.jsxs)(s.tr,{children:[(0,o.jsx)(s.th,{children:"Autor"}),(0,o.jsx)(s.th,{children:"Sthefania Fernandes"})]})}),(0,o.jsx)(s.tbody,{children:(0,o.jsxs)(s.tr,{children:[(0,o.jsx)(s.td,{children:"Data:"}),(0,o.jsx)(s.td,{children:"17/11/2023"})]})})]})]})}function h(i={}){const{wrapper:s}={...(0,n.M)(),...i.components};return s?(0,o.jsx)(s,{...i,children:(0,o.jsx)(l,{...i})}):l(i)}},1521:(i,s,e)=>{e.d(s,{c:()=>o});const o=e.p+"assets/images/1-a73b02e1e67137518f241488c8367938.png"},77792:(i,s,e)=>{e.d(s,{c:()=>o});const o=e.p+"assets/images/2-7c035b6c259779caa74c5edd5e4d9c96.gif"},4552:(i,s,e)=>{e.d(s,{I:()=>t,M:()=>r});var o=e(11504);const n={},a=o.createContext(n);function r(i){const s=o.useContext(a);return o.useMemo((function(){return"function"==typeof i?i(s):{...s,...i}}),[s,i])}function t(i){let s;return s=i.disableParentContext?"function"==typeof i.components?i.components(n):i.components||n:r(i.components),o.createElement(a.Provider,{value:s},i.children)}}}]); \ No newline at end of file diff --git a/assets/js/6d6d470f.2546c9b6.js b/assets/js/6d6d470f.2546c9b6.js new file mode 100755 index 000000000..0e15bfee5 --- /dev/null +++ b/assets/js/6d6d470f.2546c9b6.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkFranzininho=self.webpackChunkFranzininho||[]).push([[8448],{2008:(i,n,e)=>{e.r(n),e.d(n,{assets:()=>d,contentTitle:()=>t,default:()=>h,frontMatter:()=>r,metadata:()=>s,toc:()=>c});var o=e(17624),a=e(4552);const r={id:"franzininho-wifi-dev-edition",title:"Placa Franzininho WiFi dev Edition",slug:"/franzininho-wifi/franzininho-wifi-dev-edition",description:"Detalhes da Franzininho WiFi Developer Edition"},t=void 0,s={id:"FranzininhoWifi/franzininho-wifi-dev-edition",title:"Placa Franzininho WiFi dev Edition",description:"Detalhes da Franzininho WiFi Developer Edition",source:"@site/docs/FranzininhoWifi/franzininho-wifi-dev-edition.md",sourceDirName:"FranzininhoWifi",slug:"/franzininho-wifi/franzininho-wifi-dev-edition",permalink:"/docs/franzininho-wifi/franzininho-wifi-dev-edition",draft:!1,unlisted:!1,editUrl:"https://github.com/Franzininho/docs-franzininho-site/edit/main/docs/FranzininhoWifi/franzininho-wifi-dev-edition.md",tags:[],version:"current",frontMatter:{id:"franzininho-wifi-dev-edition",title:"Placa Franzininho WiFi dev Edition",slug:"/franzininho-wifi/franzininho-wifi-dev-edition",description:"Detalhes da Franzininho WiFi Developer Edition"},sidebar:"docs",previous:{title:"Display OLED",permalink:"/docs/franzininho-wifi/exemplos-micropython/display-oled"},next:{title:"Franzininho WiFi LAB01",permalink:"/docs/franzininho-wifi-lab01"}},d={},c=[{value:"Caracter\xedsticas",id:"caracter\xedsticas",level:2},{value:"Pinout",id:"pinout",level:2},{value:"Licen\xe7a",id:"licen\xe7a",level:2}];function l(i){const n={a:"a",admonition:"admonition",h2:"h2",img:"img",li:"li",p:"p",ul:"ul",...(0,a.M)(),...i.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(n.admonition,{title:"Aten\xe7\xe3o",type:"caution",children:(0,o.jsx)(n.p,{children:"Essa placa foi feita apenas como prot\xf3tipo. N\xe3o est\xe1 em produ\xe7\xe3o"})}),"\n",(0,o.jsx)(n.p,{children:"A Franzininho WiFi Developer Edition \xe9 uma placa de desenvolvimento para avaliar os m\xf3dulos ESP32-S2 (Wroom e Wrover) e desenvolver a nova gera\xe7\xe3o de placas Franzininho. O projeto Franzininho foi criado para desenvolver habilidades em pessoas nas \xe1reas de eletr\xf4nica e programa\xe7\xe3o, por meio de atividades no formato DIY e em conjunto com a cultura maker, no Brasil."}),"\n",(0,o.jsx)(n.p,{children:(0,o.jsx)(n.img,{alt:"Placa Franzininho WiFi Developer Edition Front",src:e(75820).c+"",width:"852",height:"449"})}),"\n",(0,o.jsx)(n.p,{children:"Como n\xe3o existem muitas placas no mercado brasileiro com ESP32-S2, desenvolvemos o Franzininho WiFi Developer Edition (em 2020) para servir como plataforma de desenvolvimento ESP32-S2 e nos ajudar a avaliar e validar aplica\xe7\xf5es com este SoC."}),"\n",(0,o.jsx)(n.p,{children:(0,o.jsx)(n.img,{alt:"Placa Franzininho WiFi Developer Edition",src:e(89160).c+"",width:"792",height:"517"})}),"\n",(0,o.jsx)(n.h2,{id:"caracter\xedsticas",children:"Caracter\xedsticas"}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsxs)(n.li,{children:["ESP32-S2 module( Wrover ou Wroom):","\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsx)(n.li,{children:"Xtensa\xaesingle-core32-bit LX7 microprocessor, up to 240 MHz"}),"\n",(0,o.jsx)(n.li,{children:"128 KB ROM"}),"\n",(0,o.jsx)(n.li,{children:"320 KB SRAM"}),"\n",(0,o.jsx)(n.li,{children:"16 KB SRAM in RTC"}),"\n",(0,o.jsx)(n.li,{children:"2 MB (8 Mbit) PSRAM ( Only with Wrover Module)"}),"\n",(0,o.jsx)(n.li,{children:"WiFi 802.11 b/g/n"}),"\n"]}),"\n"]}),"\n",(0,o.jsx)(n.li,{children:"Interfaces: GPIO, SPI, LCD, UART, I2C, I2S, Camera interface, IR, pulse counter, LED PWM, TWAI(compatible with ISO 11898-1), USB 1.1OTG, ADC, DAC, touch sensor, temperature sensor."}),"\n",(0,o.jsx)(n.li,{children:"USB Type-A Male"}),"\n",(0,o.jsx)(n.li,{children:"RGB LED (WS2812) (GPIO 18)"}),"\n",(0,o.jsx)(n.li,{children:"40 pin broken out to 2x20 2.54mm header pins(36 GPIO) - Breadboard Friendly"}),"\n",(0,o.jsx)(n.li,{children:"Reset and DFU (BOOT0) buttons to get into the ROM bootloader (which is a USB serial port so you don\u2019t need a separate cable!)"}),"\n",(0,o.jsx)(n.li,{children:"Serial debug pins ( TX and RX, for checking the hardware serial debug console)\nJTAG pads for advanced debugging access."}),"\n",(0,o.jsx)(n.li,{children:"3.3 V Power On LED"}),"\n",(0,o.jsx)(n.li,{children:"3.3 V Regulator"}),"\n",(0,o.jsxs)(n.li,{children:["Power:","\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsx)(n.li,{children:"Micro USB port (default power supply)"}),"\n",(0,o.jsx)(n.li,{children:"5V and GND header pins"}),"\n",(0,o.jsx)(n.li,{children:"3V3 and GND header pins"}),"\n"]}),"\n"]}),"\n",(0,o.jsx)(n.li,{children:"Dimensions: 72 mm x 30 mm"}),"\n",(0,o.jsxs)(n.li,{children:["Works with ",(0,o.jsx)(n.a,{href:"https://docs.espressif.com/projects/esp-idf/en/latest/esp32s2/get-started/index.html",children:"ESP-IDF"})," or ",(0,o.jsx)(n.a,{href:"https://circuitpython.org/",children:"CircuitPython"})]}),"\n"]}),"\n",(0,o.jsx)(n.p,{children:(0,o.jsx)(n.img,{alt:"Placa Franzininho WiFi Developer Edition back",src:e(32080).c+"",width:"784",height:"492"})}),"\n",(0,o.jsx)(n.h2,{id:"pinout",children:"Pinout"}),"\n",(0,o.jsx)(n.p,{children:(0,o.jsx)(n.img,{alt:"Pinout placa Franzininho WiFi Developer Edition",src:e(55380).c+"",width:"2138",height:"1417"})}),"\n",(0,o.jsx)(n.h2,{id:"licen\xe7a",children:"Licen\xe7a"}),"\n",(0,o.jsx)(n.p,{children:"O projeto \xe9 um hardware de c\xf3digo aberto e est\xe1 dispon\xedvel na licen\xe7a de hardware aberto do CERN."}),"\n",(0,o.jsxs)(n.p,{children:["A placa Franzininho WiFi Developer Edition \xe9 certificada na OSHWA:\n",(0,o.jsx)(n.a,{href:"https://certification.oshwa.org/br000006.html",children:"UID BR000006"})]}),"\n",(0,o.jsx)(n.p,{children:(0,o.jsx)(n.img,{alt:"oshwa",src:e(51836).c+"",width:"900",height:"660"})})]})}function h(i={}){const{wrapper:n}={...(0,a.M)(),...i.components};return n?(0,o.jsx)(n,{...i,children:(0,o.jsx)(l,{...i})}):l(i)}},51836:(i,n,e)=>{e.d(n,{c:()=>o});const o=e.p+"assets/images/OSHW_mark_BR000006-d3520baa4e06ecf07d8ffc4e77efc865.png"},32080:(i,n,e)=>{e.d(n,{c:()=>o});const o=e.p+"assets/images/back-7e00c997c9b7384d1b1802e74d36763f.jpeg"},89160:(i,n,e)=>{e.d(n,{c:()=>o});const o=e.p+"assets/images/front-4c0319330ac58760d0a1d8d19f8d84ed.jpeg"},55380:(i,n,e)=>{e.d(n,{c:()=>o});const o=e.p+"assets/images/pinagem-franzininho-wifi-3ee791cdc4872c0837b81cd12994e047.png"},75820:(i,n,e)=>{e.d(n,{c:()=>o});const o=e.p+"assets/images/placaFranzininhoWiFi-a2a75be880fd864e7e155166d4e669af.jpeg"},4552:(i,n,e)=>{e.d(n,{I:()=>s,M:()=>t});var o=e(11504);const a={},r=o.createContext(a);function t(i){const n=o.useContext(r);return o.useMemo((function(){return"function"==typeof i?i(n):{...n,...i}}),[n,i])}function s(i){let n;return n=i.disableParentContext?"function"==typeof i.components?i.components(a):i.components||a:t(i.components),o.createElement(r.Provider,{value:n},i.children)}}}]); \ No newline at end of file diff --git a/assets/js/6d6d470f.996c5630.js b/assets/js/6d6d470f.996c5630.js deleted file mode 100755 index 205ff39a3..000000000 --- a/assets/js/6d6d470f.996c5630.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkFranzininho=self.webpackChunkFranzininho||[]).push([[8448],{2008:(i,n,e)=>{e.r(n),e.d(n,{assets:()=>d,contentTitle:()=>t,default:()=>h,frontMatter:()=>r,metadata:()=>s,toc:()=>c});var a=e(17624),o=e(4552);const r={id:"franzininho-wifi-dev-edition",title:"Placa Franzininho WiFi dev Edition",slug:"/franzininho-wifi/franzininho-wifi-dev-edition",description:"Detalhes da Franzininho WiFi Developer Edition"},t=void 0,s={id:"FranzininhoWifi/franzininho-wifi-dev-edition",title:"Placa Franzininho WiFi dev Edition",description:"Detalhes da Franzininho WiFi Developer Edition",source:"@site/docs/FranzininhoWifi/franzininho-wifi-dev-edition.md",sourceDirName:"FranzininhoWifi",slug:"/franzininho-wifi/franzininho-wifi-dev-edition",permalink:"/docs/franzininho-wifi/franzininho-wifi-dev-edition",draft:!1,unlisted:!1,editUrl:"https://github.com/Franzininho/docs-franzininho-site/edit/main/docs/FranzininhoWifi/franzininho-wifi-dev-edition.md",tags:[],version:"current",frontMatter:{id:"franzininho-wifi-dev-edition",title:"Placa Franzininho WiFi dev Edition",slug:"/franzininho-wifi/franzininho-wifi-dev-edition",description:"Detalhes da Franzininho WiFi Developer Edition"},sidebar:"docs",previous:{title:"Explore as entradas e sa\xeddas digitais da Franzininho WiFi no MicroPython",permalink:"/docs/franzininho-wifi/exemplos-micropython/entradas-saidas-digitais"},next:{title:"Franzininho WiFi LAB01",permalink:"/docs/franzininho-wifi-lab01"}},d={},c=[{value:"Caracter\xedsticas",id:"caracter\xedsticas",level:2},{value:"Pinout",id:"pinout",level:2},{value:"Licen\xe7a",id:"licen\xe7a",level:2}];function l(i){const n={a:"a",admonition:"admonition",h2:"h2",img:"img",li:"li",p:"p",ul:"ul",...(0,o.M)(),...i.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.admonition,{title:"Aten\xe7\xe3o",type:"caution",children:(0,a.jsx)(n.p,{children:"Essa placa foi feita apenas como prot\xf3tipo. N\xe3o est\xe1 em produ\xe7\xe3o"})}),"\n",(0,a.jsx)(n.p,{children:"A Franzininho WiFi Developer Edition \xe9 uma placa de desenvolvimento para avaliar os m\xf3dulos ESP32-S2 (Wroom e Wrover) e desenvolver a nova gera\xe7\xe3o de placas Franzininho. O projeto Franzininho foi criado para desenvolver habilidades em pessoas nas \xe1reas de eletr\xf4nica e programa\xe7\xe3o, por meio de atividades no formato DIY e em conjunto com a cultura maker, no Brasil."}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"Placa Franzininho WiFi Developer Edition Front",src:e(75820).c+"",width:"852",height:"449"})}),"\n",(0,a.jsx)(n.p,{children:"Como n\xe3o existem muitas placas no mercado brasileiro com ESP32-S2, desenvolvemos o Franzininho WiFi Developer Edition (em 2020) para servir como plataforma de desenvolvimento ESP32-S2 e nos ajudar a avaliar e validar aplica\xe7\xf5es com este SoC."}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"Placa Franzininho WiFi Developer Edition",src:e(89160).c+"",width:"792",height:"517"})}),"\n",(0,a.jsx)(n.h2,{id:"caracter\xedsticas",children:"Caracter\xedsticas"}),"\n",(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsxs)(n.li,{children:["ESP32-S2 module( Wrover ou Wroom):","\n",(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsx)(n.li,{children:"Xtensa\xaesingle-core32-bit LX7 microprocessor, up to 240 MHz"}),"\n",(0,a.jsx)(n.li,{children:"128 KB ROM"}),"\n",(0,a.jsx)(n.li,{children:"320 KB SRAM"}),"\n",(0,a.jsx)(n.li,{children:"16 KB SRAM in RTC"}),"\n",(0,a.jsx)(n.li,{children:"2 MB (8 Mbit) PSRAM ( Only with Wrover Module)"}),"\n",(0,a.jsx)(n.li,{children:"WiFi 802.11 b/g/n"}),"\n"]}),"\n"]}),"\n",(0,a.jsx)(n.li,{children:"Interfaces: GPIO, SPI, LCD, UART, I2C, I2S, Camera interface, IR, pulse counter, LED PWM, TWAI(compatible with ISO 11898-1), USB 1.1OTG, ADC, DAC, touch sensor, temperature sensor."}),"\n",(0,a.jsx)(n.li,{children:"USB Type-A Male"}),"\n",(0,a.jsx)(n.li,{children:"RGB LED (WS2812) (GPIO 18)"}),"\n",(0,a.jsx)(n.li,{children:"40 pin broken out to 2x20 2.54mm header pins(36 GPIO) - Breadboard Friendly"}),"\n",(0,a.jsx)(n.li,{children:"Reset and DFU (BOOT0) buttons to get into the ROM bootloader (which is a USB serial port so you don\u2019t need a separate cable!)"}),"\n",(0,a.jsx)(n.li,{children:"Serial debug pins ( TX and RX, for checking the hardware serial debug console)\nJTAG pads for advanced debugging access."}),"\n",(0,a.jsx)(n.li,{children:"3.3 V Power On LED"}),"\n",(0,a.jsx)(n.li,{children:"3.3 V Regulator"}),"\n",(0,a.jsxs)(n.li,{children:["Power:","\n",(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsx)(n.li,{children:"Micro USB port (default power supply)"}),"\n",(0,a.jsx)(n.li,{children:"5V and GND header pins"}),"\n",(0,a.jsx)(n.li,{children:"3V3 and GND header pins"}),"\n"]}),"\n"]}),"\n",(0,a.jsx)(n.li,{children:"Dimensions: 72 mm x 30 mm"}),"\n",(0,a.jsxs)(n.li,{children:["Works with ",(0,a.jsx)(n.a,{href:"https://docs.espressif.com/projects/esp-idf/en/latest/esp32s2/get-started/index.html",children:"ESP-IDF"})," or ",(0,a.jsx)(n.a,{href:"https://circuitpython.org/",children:"CircuitPython"})]}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"Placa Franzininho WiFi Developer Edition back",src:e(32080).c+"",width:"784",height:"492"})}),"\n",(0,a.jsx)(n.h2,{id:"pinout",children:"Pinout"}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"Pinout placa Franzininho WiFi Developer Edition",src:e(55380).c+"",width:"2138",height:"1417"})}),"\n",(0,a.jsx)(n.h2,{id:"licen\xe7a",children:"Licen\xe7a"}),"\n",(0,a.jsx)(n.p,{children:"O projeto \xe9 um hardware de c\xf3digo aberto e est\xe1 dispon\xedvel na licen\xe7a de hardware aberto do CERN."}),"\n",(0,a.jsxs)(n.p,{children:["A placa Franzininho WiFi Developer Edition \xe9 certificada na OSHWA:\n",(0,a.jsx)(n.a,{href:"https://certification.oshwa.org/br000006.html",children:"UID BR000006"})]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"oshwa",src:e(51836).c+"",width:"900",height:"660"})})]})}function h(i={}){const{wrapper:n}={...(0,o.M)(),...i.components};return n?(0,a.jsx)(n,{...i,children:(0,a.jsx)(l,{...i})}):l(i)}},51836:(i,n,e)=>{e.d(n,{c:()=>a});const a=e.p+"assets/images/OSHW_mark_BR000006-d3520baa4e06ecf07d8ffc4e77efc865.png"},32080:(i,n,e)=>{e.d(n,{c:()=>a});const a=e.p+"assets/images/back-7e00c997c9b7384d1b1802e74d36763f.jpeg"},89160:(i,n,e)=>{e.d(n,{c:()=>a});const a=e.p+"assets/images/front-4c0319330ac58760d0a1d8d19f8d84ed.jpeg"},55380:(i,n,e)=>{e.d(n,{c:()=>a});const a=e.p+"assets/images/pinagem-franzininho-wifi-3ee791cdc4872c0837b81cd12994e047.png"},75820:(i,n,e)=>{e.d(n,{c:()=>a});const a=e.p+"assets/images/placaFranzininhoWiFi-a2a75be880fd864e7e155166d4e669af.jpeg"},4552:(i,n,e)=>{e.d(n,{I:()=>s,M:()=>t});var a=e(11504);const o={},r=a.createContext(o);function t(i){const n=a.useContext(r);return a.useMemo((function(){return"function"==typeof i?i(n):{...n,...i}}),[n,i])}function s(i){let n;return n=i.disableParentContext?"function"==typeof i.components?i.components(o):i.components||o:t(i.components),a.createElement(r.Provider,{value:n},i.children)}}}]); \ No newline at end of file diff --git a/assets/js/935f2afb.4d50966b.js b/assets/js/935f2afb.4d50966b.js deleted file mode 100755 index b3034ebb1..000000000 --- a/assets/js/935f2afb.4d50966b.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkFranzininho=self.webpackChunkFranzininho||[]).push([[5696],{35988:i=>{i.exports=JSON.parse('{"pluginId":"default","version":"current","label":"Pr\xf3ximo","banner":null,"badge":false,"noIndex":false,"className":"docs-version-current","isLast":true,"docsSidebars":{"docs":[{"type":"category","label":"Comece aqui","items":[{"type":"link","label":"Seja bem vindo!","href":"/docs/","docId":"sobre","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"category","label":"Franzininho WiFi","items":[{"type":"link","label":"Placa Franzininho WiFi","href":"/docs/franzininho-wifi/franzininho-wifi","docId":"FranzininhoWifi/franzininho-wifi","unlisted":false},{"type":"category","label":"Wokwi","items":[{"type":"link","label":"Como simular a Franzininho WiFi no Wokwi","href":"/docs/franzininho-wifi/wokwi/primeiros-passos","docId":"FranzininhoWifi/wokwi/franzininho-wifi-wokwi-intro","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"category","label":"ESP-IDF","items":[{"type":"link","label":"Primeiros Passos com ESP-IDF","href":"/docs/franzininho-wifi/exemplos-espidf/primeiros-passos","docId":"FranzininhoWifi/exemplos-espidf/franzininho-wifi-espidf-00","unlisted":false},{"type":"link","label":"Hello World! ESP-IDF","href":"/docs/franzininho-wifi/exemplos-espidf/hello-world-esp-idf","docId":"FranzininhoWifi/exemplos-espidf/franzininho-wifi-espidf-01","unlisted":false},{"type":"link","label":"Entrada digital","href":"/docs/franzininho-wifi/exemplos-espidf/entrada-digital","docId":"FranzininhoWifi/exemplos-espidf/franzininho-wifi-espidf-02","unlisted":false},{"type":"link","label":"Entrada Anal\xf3gica","href":"/docs/franzininho-wifi/exemplos-espidf/entrada-analogica","docId":"FranzininhoWifi/exemplos-espidf/franzininho-wifi-espidf-03","unlisted":false},{"type":"link","label":"PWM com LEDC","href":"/docs/franzininho-wifi/exemplos-espidf/ledc","docId":"FranzininhoWifi/exemplos-espidf/franzininho-wifi-espidf-04","unlisted":false},{"type":"link","label":"Primeiros passos com a AWS","href":"/docs/franzininho-wifi/exemplos-espidf/aws","docId":"FranzininhoWifi/exemplos-espidf/franzininho-wifi-espidf-05","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"category","label":"CircuitPython","items":[{"type":"link","label":"Primeiros Passos","href":"/docs/franzininho-wifi/exemplos-circuitpython/primeiros-passos","docId":"FranzininhoWifi/exemplos-circuitpython/circuitpython-primeiros-passos","unlisted":false},{"type":"link","label":"Instalando as ferramentas","href":"/docs/franzininho-wifi/exemplos-circuitpython/ferramentas","docId":"FranzininhoWifi/exemplos-circuitpython/circuitpython-ferramentas","unlisted":false},{"type":"link","label":"Hello World!","href":"/docs/franzininho-wifi/exemplos-circuitpython/hello-world","docId":"FranzininhoWifi/exemplos-circuitpython/circuitpython-hello-world","unlisted":false},{"type":"link","label":"Serial Console","href":"/docs/franzininho-wifi/exemplos-circuitpython/serial-console","docId":"FranzininhoWifi/exemplos-circuitpython/circuitpython-serial-console","unlisted":false},{"type":"link","label":"Entradas e Sa\xeddas Digitais","href":"/docs/franzininho-wifi/exemplos-circuitpython/entradas-saidas-digitais","docId":"FranzininhoWifi/exemplos-circuitpython/circuitpython-entradas-saidas-digitais","unlisted":false},{"type":"link","label":"Entrada Anal\xf3gica","href":"/docs/franzininho-wifi/exemplos-circuitpython/entradas-analogicas","docId":"FranzininhoWifi/exemplos-circuitpython/circuitpython-entradas-analogicas","unlisted":false},{"type":"link","label":"PWM - Pulse Width Modulation","href":"/docs/franzininho-wifi/exemplos-circuitpython/pwm","docId":"FranzininhoWifi/exemplos-circuitpython/circuitpython-pwm","unlisted":false},{"type":"link","label":"Pinos de Toque Capacitivo","href":"/docs/franzininho-wifi/exemplos-circuitpython/touch-capacitivo","docId":"FranzininhoWifi/exemplos-circuitpython/circuitpython-touch-capacitivo","unlisted":false},{"type":"link","label":"Display OLED I2C","href":"/docs/franzininho-wifi/exemplos-circuitpython/display-oled-i2c","docId":"FranzininhoWifi/exemplos-circuitpython/circuitpython-display-oled-i2c","unlisted":false},{"type":"link","label":"Sensor de temperatura e umidade DHT11","href":"/docs/franzininho-wifi/exemplos-circuitpython/dht11","docId":"FranzininhoWifi/exemplos-circuitpython/circuitpython-dht11","unlisted":false},{"type":"link","label":"Sensor de Dist\xe2ncia Ultrass\xf4nico HC-SR04","href":"/docs/franzininho-wifi/exemplos-circuitpython/sensor-hcsr04","docId":"FranzininhoWifi/exemplos-circuitpython/circuitpython-sensor-hcsr04","unlisted":false},{"type":"link","label":"Servo motor","href":"/docs/franzininho-wifi/exemplos-circuitpython/servo-motor","docId":"FranzininhoWifi/exemplos-circuitpython/circuitpython-servo-motor","unlisted":false},{"type":"link","label":"Sistema de irriga\xe7\xe3o autom\xe1tico","href":"/docs/franzininho-wifi/exemplos-circuitpython/irrigacao","docId":"FranzininhoWifi/exemplos-circuitpython/circuitpython-sistema-de-irriga\xe7\xe3o","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"category","label":"Arduino","items":[{"type":"link","label":"Primeiros Passos","href":"/docs/franzininho-wifi/exemplos-arduino/primeiros-passos","docId":"FranzininhoWifi/exemplos-arduino/arduino","unlisted":false},{"type":"link","label":"Blink","href":"/docs/franzininho-wifi/exemplos-arduino/blink","docId":"FranzininhoWifi/exemplos-arduino/arduino-blink","unlisted":false},{"type":"link","label":"Neopixel RGB LED Onboard","href":"/docs/franzininho-wifi/exemplos-arduino/neopixel-onboard","docId":"FranzininhoWifi/exemplos-arduino/arduino-neopixel","unlisted":false},{"type":"link","label":"Leitura DHT11","href":"/docs/franzininho-wifi/exemplos-arduino/dht11","docId":"FranzininhoWifi/exemplos-arduino/arduino-dht11","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"category","label":"MicroPython","items":[{"type":"link","label":"Primeiros Passos com MicroPython","href":"/docs/franzininho-wifi/exemplos-micropython/primeiros-passos","docId":"FranzininhoWifi/exemplos-micropython/micropython-primeiros-passos","unlisted":false},{"type":"link","label":"Explore as entradas e sa\xeddas digitais da Franzininho WiFi no MicroPython","href":"/docs/franzininho-wifi/exemplos-micropython/entradas-saidas-digitais","docId":"FranzininhoWifi/exemplos-micropython/micropython-entradas-saidas-digitais","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"link","label":"Placa Franzininho WiFi dev Edition","href":"/docs/franzininho-wifi/franzininho-wifi-dev-edition","docId":"FranzininhoWifi/franzininho-wifi-dev-edition","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"category","label":"Franzininho WiFi Lab01","items":[{"type":"link","label":"Franzininho WiFi LAB01","href":"/docs/franzininho-wifi-lab01","docId":"FranzininhoWiFiLAB01/franzininho-wifi-lab01","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"category","label":"Franzininho C0(STM32C0)","items":[{"type":"link","label":"Placa Franzininho C0","href":"/docs/franzininho-c0/franzininho-c0-board","docId":"franzininhoSTM32C0/franzininho-stm32c0","unlisted":false},{"type":"category","label":"STM32CubeIDE","items":[{"type":"link","label":"STM32Cube IDE TODO List","href":"/docs/franzininho-c0/franzininho-c0-stm32cubeide-todolist","docId":"franzininhoSTM32C0/exemplos-stm32cube-IDE/franzininho-stm32c0-stm32cubeide-todolist","unlisted":false},{"type":"link","label":"Configurando os exemplos da Franzininho C0 no STM2CubeIDE em 7 passos","href":"/docs/franzininho-c0/config-franzininho-c0-stm32cubeide","docId":"franzininhoSTM32C0/exemplos-stm32cube-IDE/config-franzininho-c0-stm32cubeide","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"category","label":"Arduino","items":[{"type":"link","label":"Arduino IDE TODO List","href":"/docs/franzininho-c0/arduino-todolist","docId":"franzininhoSTM32C0/exemplos-arduino/franzininhoc0-arduino-todolist","unlisted":false},{"type":"link","label":"Primeiros passos com Arduino","href":"/docs/franzininho-c0/arduino-primeiros-passos","docId":"franzininhoSTM32C0/exemplos-arduino/franzininhoc0-arduino-primeiros-passos","unlisted":false},{"type":"link","label":"Identifica\xe7\xe3o dos Pinos no Ambiente Arduino","href":"/docs/franzininho-c0/arduino-identificacao-pinos","docId":"franzininhoSTM32C0/exemplos-arduino/franzininhoc0-arduino-identificacao-pinos","unlisted":false}],"collapsed":true,"collapsible":true}],"collapsed":true,"collapsible":true},{"type":"category","label":"Franzininho DIY","items":[{"type":"link","label":"Placa Franzininho DIY","href":"/docs/franzininho-diy/sobre","docId":"FranzininhoDIY/franzininho-diy","unlisted":false},{"type":"category","label":"Montagem","items":[{"type":"link","label":"Lista de Materiais","href":"/docs/franzininho-diy/lista-de-materiais","docId":"FranzininhoDIY/lista-de-materiais","unlisted":false},{"type":"link","label":"Identificando os componentes","href":"/docs/franzininho-diy/identificando-componentes","docId":"FranzininhoDIY/identificando-componentes","unlisted":false},{"type":"link","label":"Montagem da Franzininho DIY","href":"/docs/franzininho-diy/montagem","docId":"FranzininhoDIY/montagem","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"category","label":"Bootloader","items":[{"type":"link","label":"Bootloader","href":"/docs/franzininho-diy/bootloader","docId":"FranzininhoDIY/bootloader/bootloader","unlisted":false},{"type":"link","label":"Instala\xe7\xe3o de drivers e configura\xe7\xe3o da USB","href":"/docs/franzininho-diy/drivers-micronucleus","docId":"FranzininhoDIY/bootloader/drivers-micronucleus","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"category","label":"Exemplos Arduino","items":[{"type":"link","label":"Configura\xe7\xe3o da Arduino IDE","href":"/docs/franzininho-diy/pacote","docId":"FranzininhoDIY/exemplos-arduino/pacote","unlisted":false},{"type":"link","label":"Entradas e Sa\xeddas Digitais","href":"/docs/franzininho-diy/entradas-saidas-digitais","docId":"FranzininhoDIY/exemplos-arduino/entradas-saidas-digitais","unlisted":false},{"type":"link","label":"Entradas Anal\xf3gicas","href":"/docs/franzininho-diy/entradas-analogicas","docId":"FranzininhoDIY/exemplos-arduino/entradas-analogicas","unlisted":false},{"type":"link","label":"Sa\xeddas PWM","href":"/docs/franzininho-diy/saidas-pwm","docId":"FranzininhoDIY/exemplos-arduino/saidas-pwm","unlisted":false},{"type":"link","label":"Pisca LED","href":"/docs/franzininho-diy/pisca-led","docId":"FranzininhoDIY/exemplos-arduino/pisca-led","unlisted":false},{"type":"link","label":"Controle brilho de LED","href":"/docs/franzininho-diy/brilho-led","docId":"FranzininhoDIY/exemplos-arduino/brilho-led","unlisted":false},{"type":"link","label":"Leitura de Tecla","href":"/docs/franzininho-diy/leitura-tecla","docId":"FranzininhoDIY/exemplos-arduino/leitura-tecla","unlisted":false},{"type":"link","label":"Tecla Liga/Desliga","href":"/docs/franzininho-diy/tecla-liga-desliga","docId":"FranzininhoDIY/exemplos-arduino/tecla-liga-desliga","unlisted":false},{"type":"link","label":"LED RGB","href":"/docs/franzininho-diy/led-rgb","docId":"FranzininhoDIY/exemplos-arduino/led-rgb","unlisted":false},{"type":"link","label":"Elefante Colorido! Que cor?","href":"/docs/franzininho-diy/elefante-colorido","docId":"FranzininhoDIY/exemplos-arduino/elefante-colorido","unlisted":false},{"type":"link","label":"Sensor de luz com LDR","href":"/docs/franzininho-diy/sensor-luz-ldr","docId":"FranzininhoDIY/exemplos-arduino/sensor-luz-ldr","unlisted":false},{"type":"link","label":"Sem\xe1foro","href":"/docs/franzininho-diy/semaforo","docId":"FranzininhoDIY/exemplos-arduino/semaforo","unlisted":false},{"type":"link","label":"Theremim","href":"/docs/franzininho-diy/theremim","docId":"FranzininhoDIY/exemplos-arduino/theremim","unlisted":false},{"type":"link","label":"Girassol Automatizado","href":"/docs/franzininho-diy/girassol-automatizado","docId":"FranzininhoDIY/exemplos-arduino/girassol-automatizado","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"category","label":"Exemplos AVR Libc","items":[{"type":"link","label":"Primeiros Passos","href":"/docs/franzininho-diy/exemplos-avr-libc/primeiros-passos","docId":"FranzininhoDIY/exemplos-avr-libc/primeiros-passos","unlisted":false},{"type":"link","label":"Hello, World!","href":"/docs/franzininho-diy/exemplos-avr-libc/hello-world","docId":"FranzininhoDIY/exemplos-avr-libc/hello-world","unlisted":false},{"type":"link","label":"Sa\xedda Digital","href":"/docs/franzininho-diy/exemplos-avr-libc/saida-digital","docId":"FranzininhoDIY/exemplos-avr-libc/saida-digital","unlisted":false},{"type":"link","label":"Entrada Digital","href":"/docs/franzininho-diy/exemplos-avr-libc/entrada-digital","docId":"FranzininhoDIY/exemplos-avr-libc/entrada-digital","unlisted":false},{"type":"link","label":"Timer 0","href":"/docs/franzininho-diy/exemplos-avr-libc/timer0","docId":"FranzininhoDIY/exemplos-avr-libc/timer0","unlisted":false},{"type":"link","label":"Timer 0 - Interrup\xe7\xe3o","href":"/docs/franzininho-diy/exemplos-avr-libc/timer0-int","docId":"FranzininhoDIY/exemplos-avr-libc/timer0-int","unlisted":false},{"type":"link","label":"Contador de pulsos externos","href":"/docs/franzininho-diy/exemplos-avr-libc/contadores","docId":"FranzininhoDIY/exemplos-avr-libc/contadores","unlisted":false},{"type":"link","label":"Instrumento musical com Buzzer","href":"/docs/franzininho-diy/exemplos-avr-libc/buzzer","docId":"FranzininhoDIY/exemplos-avr-libc/buzzer","unlisted":false},{"type":"link","label":"Interrup\xe7\xe3o externa","href":"/docs/franzininho-diy/exemplos-avr-libc/int-ext","docId":"FranzininhoDIY/exemplos-avr-libc/int-externa","unlisted":false},{"type":"link","label":"TODO","href":"/docs/franzininho-diy/exemplos-avr-libc/todo","docId":"FranzininhoDIY/exemplos-avr-libc/avr-libc-todo","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"category","label":"Simulador Wokwi","items":[{"type":"link","label":"Como simular a Franzininho DIY no Wokwi","href":"/docs/franzininho-diy/wokwi/primeiros-passos","docId":"FranzininhoDIY/wokwi/wokwi-intro","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"category","label":"Simulador PICSimLab","items":[{"type":"link","label":"Franzininho DIY no PICSimLab","href":"/docs/franzininho-diy/picsimlab/primeiros-passos","docId":"FranzininhoDIY/picsimlab/picsimlab-intro","unlisted":false}],"collapsed":true,"collapsible":true}],"collapsed":true,"collapsible":true},{"type":"category","label":"FranzMakey","items":[{"type":"link","label":"Placa FranzMakey","href":"/docs/FranzMakey/franzmakey","docId":"FranzMakey/franzmakey","unlisted":false},{"type":"link","label":"Primeiros Passos","href":"/docs/FranzMakey/primeiros-passos","docId":"FranzMakey/primeiros-passos","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"category","label":"Franzininho Tiny","items":[{"type":"link","label":"Placa Franzininho Tiny","href":"/docs/franzininho-tiny/franzininho-tiny","docId":"FranzininhoTiny/franzininho-tiny","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"category","label":"Franzino","items":[{"type":"link","label":"Placa Franzino","href":"/docs/Franzino/franzino","docId":"Franzino/franzino","unlisted":false},{"type":"link","label":"Upload via conversor USB/SERIAL","href":"/docs/Franzino/upload-conversor-serial","docId":"Franzino/upload-conversor-serial","unlisted":false},{"type":"link","label":"Gravando a Franzino com um placa Arduino UNO","href":"/docs/Franzino/upload-com-arduino-uno","docId":"Franzino/upload-com-arduino-uno","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"category","label":"FranzBoy","items":[{"type":"link","label":"Placa FranzBoy","href":"/docs/FranzBoy/franzboy","docId":"FranzBoy/franzboy","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"category","label":"Badges","items":[{"type":"link","label":"Badge - Aprenda a soldar","href":"/docs/badge/badge","docId":"Badge/badge","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"category","label":"Laborat\xf3rio de Sistemas Embarcados e IoT","items":[{"type":"link","label":"Placa Laborat\xf3rio de Sistemas Embarcados e IoT","href":"/docs/LaboratorioSistemasIot/LaboratorioSistemasIot","docId":"LaboratorioSistemasIot/laboratorio-sistemas-iot","unlisted":false},{"type":"category","label":"Adaptadores","items":[{"type":"link","label":"Adaptador Arduino Uno","href":"/docs/LaboratorioSistemasIot/adaptadores/arduino-uno","docId":"LaboratorioSistemasIot/adaptadores/adaptador-arduino","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"category","label":"Bibliotecas","items":[{"type":"link","label":"laboratorioFW","href":"/docs/LaboratorioSistemasIot/bibliotecas/biblioteca-laboratorioFW","docId":"LaboratorioSistemasIot/bibliotecas/biblioteca-laboratorioFW","unlisted":false},{"type":"link","label":"laboratorioFW_ARDUNO","href":"/docs/LaboratorioSistemasIot/bibliotecas/biblioteca-laboratorioFW_ARDUNO","docId":"LaboratorioSistemasIot/bibliotecas/biblioteca-laboratorioFW-ARDUNO","unlisted":false}],"collapsed":true,"collapsible":true}],"collapsed":true,"collapsible":true}]},"docs":{"Badge/badge":{"id":"Badge/badge","title":"Badge - Aprenda a soldar","description":"Para deixar claro todo o funcionamento da Franzininho, precisamos conhecer um pouco dos componentes que comp\xf5em o projeto, assim poderemos fazer mudan\xe7as e aprimorar ainda mais este projeto.","sidebar":"docs"},"FranzBoy/franzboy":{"id":"FranzBoy/franzboy","title":"Placa FranzBoy","description":"Detalhes da placa Franzboy","sidebar":"docs"},"FranzininhoDIY/bootloader/bootloader":{"id":"FranzininhoDIY/bootloader/bootloader","title":"Bootloader","description":"Grava\xe7\xe3o do Bootloader na Franzininho DIY","sidebar":"docs"},"FranzininhoDIY/bootloader/drivers-micronucleus":{"id":"FranzininhoDIY/bootloader/drivers-micronucleus","title":"Instala\xe7\xe3o de drivers e configura\xe7\xe3o da USB","description":"Instala\xe7\xe3o dos drivers USB para correto funcionamento","sidebar":"docs"},"FranzininhoDIY/exemplos-arduino/brilho-led":{"id":"FranzininhoDIY/exemplos-arduino/brilho-led","title":"Controle brilho de LED","description":"Esse exemplo exibe como controlar a intensidade do LED usando a fun\xe7\xe3o analogWrite() na Franzininho DIY.","sidebar":"docs"},"FranzininhoDIY/exemplos-arduino/elefante-colorido":{"id":"FranzininhoDIY/exemplos-arduino/elefante-colorido","title":"Elefante Colorido! Que cor?","description":"Esse exemplo exibe como usar o LED RGB para fazer uma aplica\xe7\xe3o did\xe1tica.","sidebar":"docs"},"FranzininhoDIY/exemplos-arduino/entradas-analogicas":{"id":"FranzininhoDIY/exemplos-arduino/entradas-analogicas","title":"Entradas Anal\xf3gicas","description":"Nesse exemplo vamos aprender trabalhar com as entradas anal\xf3gicas presentes na Franzininho DIY","sidebar":"docs"},"FranzininhoDIY/exemplos-arduino/entradas-saidas-digitais":{"id":"FranzininhoDIY/exemplos-arduino/entradas-saidas-digitais","title":"Entradas e Sa\xeddas Digitais","description":"Nesse exemplo vamos aprender a trabalhar com as entradas e sa\xeddas digitais na Franzininho DIY","sidebar":"docs"},"FranzininhoDIY/exemplos-arduino/girassol-automatizado":{"id":"FranzininhoDIY/exemplos-arduino/girassol-automatizado","title":"Girassol Automatizado","description":"Nesse exemplo vamos fazer um Girassol Automatizado com Franzininho DIY","sidebar":"docs"},"FranzininhoDIY/exemplos-arduino/led-rgb":{"id":"FranzininhoDIY/exemplos-arduino/led-rgb","title":"LED RGB","description":"Esse exemplo aprenderemos a como ligar o LED RGB com a Franzininho DIY suas tr\xeas cores","sidebar":"docs"},"FranzininhoDIY/exemplos-arduino/leitura-tecla":{"id":"FranzininhoDIY/exemplos-arduino/leitura-tecla","title":"Leitura de Tecla","description":"Nesse exemplo vamos fazer a leitura de uma tecla e acionar um LED quando a mesma for pressionada.","sidebar":"docs"},"FranzininhoDIY/exemplos-arduino/pacote":{"id":"FranzininhoDIY/exemplos-arduino/pacote","title":"Configura\xe7\xe3o da Arduino IDE","description":"Configura\xe7\xe3o da IDE Arduino para programa\xe7\xe3o da Franzininho","sidebar":"docs"},"FranzininhoDIY/exemplos-arduino/pisca-led":{"id":"FranzininhoDIY/exemplos-arduino/pisca-led","title":"Pisca LED","description":"Nesse exemplo vamos aprender como fazer um pisca LED (Blink) com a Franzininho DIY.","sidebar":"docs"},"FranzininhoDIY/exemplos-arduino/saidas-pwm":{"id":"FranzininhoDIY/exemplos-arduino/saidas-pwm","title":"Sa\xeddas PWM","description":"Nesse exemplo vamos aprender trabalhar com as sa\xeddas PWM na Franzininho DIY","sidebar":"docs"},"FranzininhoDIY/exemplos-arduino/semaforo":{"id":"FranzininhoDIY/exemplos-arduino/semaforo","title":"Sem\xe1foro","description":"Nesse exemplo vamos fazer um sem\xe1foro de uma via com Franzininho DIY","sidebar":"docs"},"FranzininhoDIY/exemplos-arduino/sensor-luz-ldr":{"id":"FranzininhoDIY/exemplos-arduino/sensor-luz-ldr","title":"Sensor de luz com LDR","description":"Nesse exemplo vamos ler um sensor LDR usando a entrada anal\xf3gica da Franzininho DIY","sidebar":"docs"},"FranzininhoDIY/exemplos-arduino/tecla-liga-desliga":{"id":"FranzininhoDIY/exemplos-arduino/tecla-liga-desliga","title":"Tecla Liga/Desliga","description":"Nesse exemplo vamos fazer uma tecla liga/desliga, que pode ser usada para acionamentos diversos.","sidebar":"docs"},"FranzininhoDIY/exemplos-arduino/theremim":{"id":"FranzininhoDIY/exemplos-arduino/theremim","title":"Theremim","description":"Nesse exemplo vamos fazer um sem\xe1foro de uma via com Franzininho DIY","sidebar":"docs"},"FranzininhoDIY/exemplos-arduino/tutoriais-i2c":{"id":"FranzininhoDIY/exemplos-arduino/tutoriais-i2c","title":"I2C","description":"Para deixar claro todo o funcionamento da Franzininho, precisamos conhecer um pouco dos componentes que comp\xf5em o projeto, assim poderemos fazer mudan\xe7as e aprimorar ainda mais este projeto."},"FranzininhoDIY/exemplos-arduino/tutoriais-introducao":{"id":"FranzininhoDIY/exemplos-arduino/tutoriais-introducao","title":"Introdu\xe7\xe3o","description":"Introdu\xe7\xe3o a programa\xe7\xe3o Arduino com as placas Franzininho"},"FranzininhoDIY/exemplos-avr-libc/avr-libc-todo":{"id":"FranzininhoDIY/exemplos-avr-libc/avr-libc-todo","title":"TODO","description":"Mapeamento dos conte\xfados para exemplos com a AVR LibC","sidebar":"docs"},"FranzininhoDIY/exemplos-avr-libc/buzzer":{"id":"FranzininhoDIY/exemplos-avr-libc/buzzer","title":"Instrumento musical com Buzzer","description":"Nesse exemplo vamos criar um programa que l\xea uma partitura e toca a m\xfasica escrita atrav\xe9s de um buzzer no Franzininho DIY","sidebar":"docs"},"FranzininhoDIY/exemplos-avr-libc/contadores":{"id":"FranzininhoDIY/exemplos-avr-libc/contadores","title":"Contador de pulsos externos","description":"Nesses tr\xeas exemplos vamos explorar gradativamente como fazer um contador de eventos externos no Franzininho DIY","sidebar":"docs"},"FranzininhoDIY/exemplos-avr-libc/entrada-digital":{"id":"FranzininhoDIY/exemplos-avr-libc/entrada-digital","title":"Entrada Digital","description":"Vamos entender como trabalhar com as Entradas Digitais","sidebar":"docs"},"FranzininhoDIY/exemplos-avr-libc/hello-world":{"id":"FranzininhoDIY/exemplos-avr-libc/hello-world","title":"Hello, World!","description":"Nesse primeiros exemplo vamos dar os primeiros passos na programa\xe7\xe3o da Franzininho DIY","sidebar":"docs"},"FranzininhoDIY/exemplos-avr-libc/int-externa":{"id":"FranzininhoDIY/exemplos-avr-libc/int-externa","title":"Interrup\xe7\xe3o externa","description":"Exemplo para uso da interrup\xe7\xe3o externa","sidebar":"docs"},"FranzininhoDIY/exemplos-avr-libc/primeiros-passos":{"id":"FranzininhoDIY/exemplos-avr-libc/primeiros-passos","title":"Primeiros Passos","description":"Primeiros passos para programa\xe7\xe3o da Franzininho DIY usando usando a AVR Libc","sidebar":"docs"},"FranzininhoDIY/exemplos-avr-libc/saida-digital":{"id":"FranzininhoDIY/exemplos-avr-libc/saida-digital","title":"Sa\xedda Digital","description":"Vamos entender como trabalhar com as sa\xeddas Digitais","sidebar":"docs"},"FranzininhoDIY/exemplos-avr-libc/timer0":{"id":"FranzininhoDIY/exemplos-avr-libc/timer0","title":"Timer 0","description":"Vamos aprender usar o timer 0 como temporizador","sidebar":"docs"},"FranzininhoDIY/exemplos-avr-libc/timer0-int":{"id":"FranzininhoDIY/exemplos-avr-libc/timer0-int","title":"Timer 0 - Interrup\xe7\xe3o","description":"Vamos aprender usar o timer 0 como temporizador e usando sua interrup\xe7\xe3o","sidebar":"docs"},"FranzininhoDIY/franzininho-diy":{"id":"FranzininhoDIY/franzininho-diy","title":"Placa Franzininho DIY","description":"Detalhes da Franzininho DIY","sidebar":"docs"},"FranzininhoDIY/identificando-componentes":{"id":"FranzininhoDIY/identificando-componentes","title":"Identificando os componentes","description":"Para deixar claro todo o funcionamento da Franzininho DIY, precisamos conhecer um pouco dos componentes que comp\xf5em o projeto, assim poderemos fazer mudan\xe7as e aprimorar ainda mais este projeto.","sidebar":"docs"},"FranzininhoDIY/lista-de-materiais":{"id":"FranzininhoDIY/lista-de-materiais","title":"Lista de Materiais","description":"Lista de materiais (componentes) para montagem da Franzininho DIY","sidebar":"docs"},"FranzininhoDIY/montagem":{"id":"FranzininhoDIY/montagem","title":"Montagem da Franzininho DIY","description":"Passo a passo da montagem da Franzininho DIY","sidebar":"docs"},"FranzininhoDIY/picsimlab/picsimlab-intro":{"id":"FranzininhoDIY/picsimlab/picsimlab-intro","title":"Franzininho DIY no PICSimLab","description":"Nesse exemplos vamos ver como usar o PICSimLab para simular e depurar a Franzininho DIY","sidebar":"docs"},"FranzininhoDIY/wokwi/wokwi-intro":{"id":"FranzininhoDIY/wokwi/wokwi-intro","title":"Como simular a Franzininho DIY no Wokwi","description":"Nesse t\xf3pico vamos ver como usar o WokWi para simular circuitos com a Franzininho DIY","sidebar":"docs"},"franzininhoSTM32C0/exemplos-arduino/franzininhoc0-arduino-identificacao-pinos":{"id":"franzininhoSTM32C0/exemplos-arduino/franzininhoc0-arduino-identificacao-pinos","title":"Identifica\xe7\xe3o dos Pinos no Ambiente Arduino","description":"Identifica\xe7\xe3o dos Pinos da Franzininho C0 no Ambiente Arduino","sidebar":"docs"},"franzininhoSTM32C0/exemplos-arduino/franzininhoc0-arduino-primeiros-passos":{"id":"franzininhoSTM32C0/exemplos-arduino/franzininhoc0-arduino-primeiros-passos","title":"Primeiros passos com Arduino","description":"Instala\xe7\xe3o e configura\xe7\xf5es da Arduino IDE para programar a Franzininho C0","sidebar":"docs"},"franzininhoSTM32C0/exemplos-arduino/franzininhoc0-arduino-todolist":{"id":"franzininhoSTM32C0/exemplos-arduino/franzininhoc0-arduino-todolist","title":"Arduino IDE TODO List","description":"Todo list para exemplos com Arduino","sidebar":"docs"},"franzininhoSTM32C0/exemplos-stm32cube-IDE/config-franzininho-c0-stm32cubeide":{"id":"franzininhoSTM32C0/exemplos-stm32cube-IDE/config-franzininho-c0-stm32cubeide","title":"Configurando os exemplos da Franzininho C0 no STM2CubeIDE em 7 passos","description":"7 passos para voc\xea configurar um novo projeto para a Franzininho C0","sidebar":"docs"},"franzininhoSTM32C0/exemplos-stm32cube-IDE/franzininho-stm32c0-stm32cubeide-todolist":{"id":"franzininhoSTM32C0/exemplos-stm32cube-IDE/franzininho-stm32c0-stm32cubeide-todolist","title":"STM32Cube IDE TODO List","description":"Todo list para exemplos com STM32Cube IDE","sidebar":"docs"},"franzininhoSTM32C0/franzininho-stm32c0":{"id":"franzininhoSTM32C0/franzininho-stm32c0","title":"Placa Franzininho C0","description":"Franzininho C0 \'e uma placa desenvolvimento baseada no microcontrolador STM32C0 da STmicroelectronics","sidebar":"docs"},"FranzininhoTiny/franzininho-tiny":{"id":"FranzininhoTiny/franzininho-tiny","title":"Placa Franzininho Tiny","description":"Detalhes da Franzininho Tiny","sidebar":"docs"},"FranzininhoWifi/exemplos-arduino/arduino":{"id":"FranzininhoWifi/exemplos-arduino/arduino","title":"Primeiros Passos","description":"Aprenda dar os primeiros passo no uso do Arduino na Franzininho WiFi","sidebar":"docs"},"FranzininhoWifi/exemplos-arduino/arduino-blink":{"id":"FranzininhoWifi/exemplos-arduino/arduino-blink","title":"Blink","description":"Primeiro Hello World com a Franzininho WiFi no Arduino IDE","sidebar":"docs"},"FranzininhoWifi/exemplos-arduino/arduino-dht11":{"id":"FranzininhoWifi/exemplos-arduino/arduino-dht11","title":"Leitura DHT11","description":"Nesse exemplo vamos fazer a leitura do sensor de temperatura e umidade, DHT11, e imprimir os valores na serial;","sidebar":"docs"},"FranzininhoWifi/exemplos-arduino/arduino-neopixel":{"id":"FranzininhoWifi/exemplos-arduino/arduino-neopixel","title":"Neopixel RGB LED Onboard","description":"Exemplo de uso do led RGB onboard do Franzininho WiFi","sidebar":"docs"},"FranzininhoWifi/exemplos-circuitpython/circuitpython-dht11":{"id":"FranzininhoWifi/exemplos-circuitpython/circuitpython-dht11","title":"Sensor de temperatura e umidade DHT11","description":"Nesse exemplo aprenderemos usar ler valores de temperatura e umidade com o sensor DHT11 usando o CircuitPython.","sidebar":"docs"},"FranzininhoWifi/exemplos-circuitpython/circuitpython-display-oled-i2c":{"id":"FranzininhoWifi/exemplos-circuitpython/circuitpython-display-oled-i2c","title":"Display OLED I2C","description":"Nesse exemplo aprenderemos usar o display OLED com comunica\xe7\xe3o I2C explorando as funcionalidades b\xe1sicas usando o CircuitPython.","sidebar":"docs"},"FranzininhoWifi/exemplos-circuitpython/circuitpython-entradas-analogicas":{"id":"FranzininhoWifi/exemplos-circuitpython/circuitpython-entradas-analogicas","title":"Entrada Anal\xf3gica","description":"Este exemplo exibe como trabalhar com as entradas anal\xf3gicas na Franzininho WiFi","sidebar":"docs"},"FranzininhoWifi/exemplos-circuitpython/circuitpython-entradas-saidas-digitais":{"id":"FranzininhoWifi/exemplos-circuitpython/circuitpython-entradas-saidas-digitais","title":"Entradas e Sa\xeddas Digitais","description":"Este exemplo exibe como trabalhar com as entradas e sa\xeddas digitais na Franzininho WiFi","sidebar":"docs"},"FranzininhoWifi/exemplos-circuitpython/circuitpython-ferramentas":{"id":"FranzininhoWifi/exemplos-circuitpython/circuitpython-ferramentas","title":"Instalando as ferramentas","description":"Neste texto vamos configurar as ferramentas para a utiliza\xe7\xe3o da Franzininho WiFi","sidebar":"docs"},"FranzininhoWifi/exemplos-circuitpython/circuitpython-hello-world":{"id":"FranzininhoWifi/exemplos-circuitpython/circuitpython-hello-world","title":"Hello World!","description":"Neste texto vamos fazer nosso Blink - Pisca LED com a Franzininho WiFi","sidebar":"docs"},"FranzininhoWifi/exemplos-circuitpython/circuitpython-primeiros-passos":{"id":"FranzininhoWifi/exemplos-circuitpython/circuitpython-primeiros-passos","title":"Primeiros Passos","description":"Aprenda dar os primeiros passo no uso do CircuitPython na Franzininho WiFi","sidebar":"docs"},"FranzininhoWifi/exemplos-circuitpython/circuitpython-pwm":{"id":"FranzininhoWifi/exemplos-circuitpython/circuitpython-pwm","title":"PWM - Pulse Width Modulation","description":"Neste artigo vamos aprender a usar o PWM no CircuitPython, uma t\xe9cnica muito usada para controle de pot\xeancia. Veja como \xe9 f\xe1cil aplicar.","sidebar":"docs"},"FranzininhoWifi/exemplos-circuitpython/circuitpython-sensor-hcsr04":{"id":"FranzininhoWifi/exemplos-circuitpython/circuitpython-sensor-hcsr04","title":"Sensor de Dist\xe2ncia Ultrass\xf4nico HC-SR04","description":"Nesse exemplo aprenderemos a ler valores de dist\xe2ncia com o sensor HC-SR04 usando o CircuitPython.","sidebar":"docs"},"FranzininhoWifi/exemplos-circuitpython/circuitpython-serial-console":{"id":"FranzininhoWifi/exemplos-circuitpython/circuitpython-serial-console","title":"Serial Console","description":"Neste texto vamos utilizar a comunica\xe7\xe3o serial do Franzininho WiFi para imprimir e coleta valores do console.","sidebar":"docs"},"FranzininhoWifi/exemplos-circuitpython/circuitpython-servo-motor":{"id":"FranzininhoWifi/exemplos-circuitpython/circuitpython-servo-motor","title":"Servo motor","description":"Confira nesse artigo como controlar um servo motor com a Franzininho WiFi no CircuitPython. Veja como \xe9 f\xe1cil!","sidebar":"docs"},"FranzininhoWifi/exemplos-circuitpython/circuitpython-sistema-de-irriga\xe7\xe3o":{"id":"FranzininhoWifi/exemplos-circuitpython/circuitpython-sistema-de-irriga\xe7\xe3o","title":"Sistema de irriga\xe7\xe3o autom\xe1tico","description":"Um sistema de irriga\xe7\xe3o autom\xe1tico \xe9 uma solu\xe7\xe3o para ajudar a manter de forma sistem\xe1tica a irriga\xe7\xe3o de suas plantas.","sidebar":"docs"},"FranzininhoWifi/exemplos-circuitpython/circuitpython-touch-capacitivo":{"id":"FranzininhoWifi/exemplos-circuitpython/circuitpython-touch-capacitivo","title":"Pinos de Toque Capacitivo","description":"Neste exemplo, vamos fazer um \u201cinterruptor\u201d por aproxima\xe7\xe3o e, aprender como usar o m\xf3dulo respons\xe1vel pelos pinos de toque capacitivo. Ademais, veremos como ajustar a sensibilidade desse recurso.","sidebar":"docs"},"FranzininhoWifi/exemplos-espidf/franzininho-wifi-espidf-00":{"id":"FranzininhoWifi/exemplos-espidf/franzininho-wifi-espidf-00","title":"Primeiros Passos com ESP-IDF","description":"Este documento tem como objetivo ajud\xe1-lo a configurar o ESP-IDF","sidebar":"docs"},"FranzininhoWifi/exemplos-espidf/franzininho-wifi-espidf-01":{"id":"FranzininhoWifi/exemplos-espidf/franzininho-wifi-espidf-01","title":"Hello World! ESP-IDF","description":"Este texto tem como objetivo fazer o primeiro programa no ESP-IDF para a Franzininho WIFI","sidebar":"docs"},"FranzininhoWifi/exemplos-espidf/franzininho-wifi-espidf-02":{"id":"FranzininhoWifi/exemplos-espidf/franzininho-wifi-espidf-02","title":"Entrada digital","description":"Neste exemplo utilizou-se um bot\xe3o t\xe1ctil (entrada digital) para acionar um LED (sa\xedda digital) e mostra seu estado no terminal.","sidebar":"docs"},"FranzininhoWifi/exemplos-espidf/franzininho-wifi-espidf-03":{"id":"FranzininhoWifi/exemplos-espidf/franzininho-wifi-espidf-03","title":"Entrada Anal\xf3gica","description":"Neste exemplo vamos entender como usar o conversor AD para leitura de sinais anal\xf3gico","sidebar":"docs"},"FranzininhoWifi/exemplos-espidf/franzininho-wifi-espidf-04":{"id":"FranzininhoWifi/exemplos-espidf/franzininho-wifi-espidf-04","title":"PWM com LEDC","description":"Neste exemplo utilizou-se um bot\xe3o t\xe1ctil (entrada digital) para acionar um LED (sa\xedda digital) e mostra seu estado no terminal.","sidebar":"docs"},"FranzininhoWifi/exemplos-espidf/franzininho-wifi-espidf-05":{"id":"FranzininhoWifi/exemplos-espidf/franzininho-wifi-espidf-05","title":"Primeiros passos com a AWS","description":"Primeiros passos para conectar a Franzininho WiFi na AWS via MQTT pelo AWS IoT Core.","sidebar":"docs"},"FranzininhoWifi/exemplos-micropython/micropython-entradas-saidas-digitais":{"id":"FranzininhoWifi/exemplos-micropython/micropython-entradas-saidas-digitais","title":"Explore as entradas e sa\xeddas digitais da Franzininho WiFi no MicroPython","description":"Explore as entradas e sa\xeddas digitais da Franzininho WiFi com MicroPython. Controle LEDs e bot\xf5es na Franzininho WiFi LAB01.","sidebar":"docs"},"FranzininhoWifi/exemplos-micropython/micropython-primeiros-passos":{"id":"FranzininhoWifi/exemplos-micropython/micropython-primeiros-passos","title":"Primeiros Passos com MicroPython","description":"Aprenda como gravar o MicroPython na Franzininho WiFi usando a ferramenta Franzininho - ESP Web Tools e explore projetos com o Thonny IDE.","sidebar":"docs"},"FranzininhoWifi/franzininho-wifi":{"id":"FranzininhoWifi/franzininho-wifi","title":"Placa Franzininho WiFi","description":"Conhe\xe7a todos os recursos da placa brasileira Franzininho WiFi. Vem ESP32-S2 e pode ser usada de iniciantes a desenvolvedores experientes.","sidebar":"docs"},"FranzininhoWifi/franzininho-wifi-dev-edition":{"id":"FranzininhoWifi/franzininho-wifi-dev-edition","title":"Placa Franzininho WiFi dev Edition","description":"Detalhes da Franzininho WiFi Developer Edition","sidebar":"docs"},"FranzininhoWifi/wokwi/franzininho-wifi-wokwi-intro":{"id":"FranzininhoWifi/wokwi/franzininho-wifi-wokwi-intro","title":"Como simular a Franzininho WiFi no Wokwi","description":"Nesse t\xf3pico vamos ver como usar o WokWi para simular circuitos com a Franzininho WiFi","sidebar":"docs"},"FranzininhoWiFiLAB01/franzininho-wifi-lab01":{"id":"FranzininhoWiFiLAB01/franzininho-wifi-lab01","title":"Franzininho WiFi LAB01","description":"Conhe\xe7a todos os recursos da placa Franzininho WiFi LAB01, uma placa de expans\xe3o para a placa Franzininho WiFi.","sidebar":"docs"},"Franzino/franzino":{"id":"Franzino/franzino","title":"Placa Franzino","description":"Detalhes da placa Franzino","sidebar":"docs"},"Franzino/upload-com-arduino-uno":{"id":"Franzino/upload-com-arduino-uno","title":"Gravando a Franzino com um placa Arduino UNO","description":"Veja como usar um Arduino Uno como programador para a Franzino","sidebar":"docs"},"Franzino/upload-conversor-serial":{"id":"Franzino/upload-conversor-serial","title":"Upload via conversor USB/SERIAL","description":"Liga\xe7\xe3o do conversor USB Serial para upload de c\xf3digos","sidebar":"docs"},"FranzMakey/franzmakey":{"id":"FranzMakey/franzmakey","title":"Placa FranzMakey","description":"Detalhes da placa FranzMakey","sidebar":"docs"},"FranzMakey/primeiros-passos":{"id":"FranzMakey/primeiros-passos","title":"Primeiros Passos","description":"Primeiros passos com a placa FranzMakey","sidebar":"docs"},"LaboratorioSistemasIot/adaptadores/adaptador-arduino":{"id":"LaboratorioSistemasIot/adaptadores/adaptador-arduino","title":"Adaptador Arduino Uno","description":"Adaptador Arduino Uno para a placa Laborat\xf3rio de Sistemas Embarcados e IoT","sidebar":"docs"},"LaboratorioSistemasIot/bibliotecas/biblioteca-laboratorioFW":{"id":"LaboratorioSistemasIot/bibliotecas/biblioteca-laboratorioFW","title":"laboratorioFW","description":"O que \xe9 a biblioteca laboratorioFW","sidebar":"docs"},"LaboratorioSistemasIot/bibliotecas/biblioteca-laboratorioFW-ARDUNO":{"id":"LaboratorioSistemasIot/bibliotecas/biblioteca-laboratorioFW-ARDUNO","title":"laboratorioFW_ARDUNO","description":"O que \xe9 a biblioteca laboratorioFW-ARDUNO","sidebar":"docs"},"LaboratorioSistemasIot/laboratorio-sistemas-iot":{"id":"LaboratorioSistemasIot/laboratorio-sistemas-iot","title":"Placa Laborat\xf3rio de Sistemas Embarcados e IoT","description":"O que \xe9 a placa Laborat\xf3rio de Sistemas Embarcados e IoT","sidebar":"docs"},"sobre":{"id":"sobre","title":"Seja bem vindo a documenta\xe7\xe3o do projeto Franzininho","description":"Aqui voc\xea encontra a documenta\xe7\xe3o (em Desenvolvimento) para trabalhar com todas as placas e Kits Franzininho.","sidebar":"docs"}}}')}}]); \ No newline at end of file diff --git a/assets/js/935f2afb.e61e71da.js b/assets/js/935f2afb.e61e71da.js new file mode 100755 index 000000000..8d0150e3e --- /dev/null +++ b/assets/js/935f2afb.e61e71da.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkFranzininho=self.webpackChunkFranzininho||[]).push([[5696],{35988:i=>{i.exports=JSON.parse('{"pluginId":"default","version":"current","label":"Pr\xf3ximo","banner":null,"badge":false,"noIndex":false,"className":"docs-version-current","isLast":true,"docsSidebars":{"docs":[{"type":"category","label":"Comece aqui","items":[{"type":"link","label":"Seja bem vindo!","href":"/docs/","docId":"sobre","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"category","label":"Franzininho WiFi","items":[{"type":"link","label":"Placa Franzininho WiFi","href":"/docs/franzininho-wifi/franzininho-wifi","docId":"FranzininhoWifi/franzininho-wifi","unlisted":false},{"type":"category","label":"Wokwi","items":[{"type":"link","label":"Como simular a Franzininho WiFi no Wokwi","href":"/docs/franzininho-wifi/wokwi/primeiros-passos","docId":"FranzininhoWifi/wokwi/franzininho-wifi-wokwi-intro","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"category","label":"ESP-IDF","items":[{"type":"link","label":"Primeiros Passos com ESP-IDF","href":"/docs/franzininho-wifi/exemplos-espidf/primeiros-passos","docId":"FranzininhoWifi/exemplos-espidf/franzininho-wifi-espidf-00","unlisted":false},{"type":"link","label":"Hello World! ESP-IDF","href":"/docs/franzininho-wifi/exemplos-espidf/hello-world-esp-idf","docId":"FranzininhoWifi/exemplos-espidf/franzininho-wifi-espidf-01","unlisted":false},{"type":"link","label":"Entrada digital","href":"/docs/franzininho-wifi/exemplos-espidf/entrada-digital","docId":"FranzininhoWifi/exemplos-espidf/franzininho-wifi-espidf-02","unlisted":false},{"type":"link","label":"Entrada Anal\xf3gica","href":"/docs/franzininho-wifi/exemplos-espidf/entrada-analogica","docId":"FranzininhoWifi/exemplos-espidf/franzininho-wifi-espidf-03","unlisted":false},{"type":"link","label":"PWM com LEDC","href":"/docs/franzininho-wifi/exemplos-espidf/ledc","docId":"FranzininhoWifi/exemplos-espidf/franzininho-wifi-espidf-04","unlisted":false},{"type":"link","label":"Primeiros passos com a AWS","href":"/docs/franzininho-wifi/exemplos-espidf/aws","docId":"FranzininhoWifi/exemplos-espidf/franzininho-wifi-espidf-05","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"category","label":"CircuitPython","items":[{"type":"link","label":"Primeiros Passos","href":"/docs/franzininho-wifi/exemplos-circuitpython/primeiros-passos","docId":"FranzininhoWifi/exemplos-circuitpython/circuitpython-primeiros-passos","unlisted":false},{"type":"link","label":"Instalando as ferramentas","href":"/docs/franzininho-wifi/exemplos-circuitpython/ferramentas","docId":"FranzininhoWifi/exemplos-circuitpython/circuitpython-ferramentas","unlisted":false},{"type":"link","label":"Hello World!","href":"/docs/franzininho-wifi/exemplos-circuitpython/hello-world","docId":"FranzininhoWifi/exemplos-circuitpython/circuitpython-hello-world","unlisted":false},{"type":"link","label":"Serial Console","href":"/docs/franzininho-wifi/exemplos-circuitpython/serial-console","docId":"FranzininhoWifi/exemplos-circuitpython/circuitpython-serial-console","unlisted":false},{"type":"link","label":"Entradas e Sa\xeddas Digitais","href":"/docs/franzininho-wifi/exemplos-circuitpython/entradas-saidas-digitais","docId":"FranzininhoWifi/exemplos-circuitpython/circuitpython-entradas-saidas-digitais","unlisted":false},{"type":"link","label":"Entrada Anal\xf3gica","href":"/docs/franzininho-wifi/exemplos-circuitpython/entradas-analogicas","docId":"FranzininhoWifi/exemplos-circuitpython/circuitpython-entradas-analogicas","unlisted":false},{"type":"link","label":"PWM - Pulse Width Modulation","href":"/docs/franzininho-wifi/exemplos-circuitpython/pwm","docId":"FranzininhoWifi/exemplos-circuitpython/circuitpython-pwm","unlisted":false},{"type":"link","label":"Pinos de Toque Capacitivo","href":"/docs/franzininho-wifi/exemplos-circuitpython/touch-capacitivo","docId":"FranzininhoWifi/exemplos-circuitpython/circuitpython-touch-capacitivo","unlisted":false},{"type":"link","label":"Display OLED I2C","href":"/docs/franzininho-wifi/exemplos-circuitpython/display-oled-i2c","docId":"FranzininhoWifi/exemplos-circuitpython/circuitpython-display-oled-i2c","unlisted":false},{"type":"link","label":"Sensor de temperatura e umidade DHT11","href":"/docs/franzininho-wifi/exemplos-circuitpython/dht11","docId":"FranzininhoWifi/exemplos-circuitpython/circuitpython-dht11","unlisted":false},{"type":"link","label":"Sensor de Dist\xe2ncia Ultrass\xf4nico HC-SR04","href":"/docs/franzininho-wifi/exemplos-circuitpython/sensor-hcsr04","docId":"FranzininhoWifi/exemplos-circuitpython/circuitpython-sensor-hcsr04","unlisted":false},{"type":"link","label":"Servo motor","href":"/docs/franzininho-wifi/exemplos-circuitpython/servo-motor","docId":"FranzininhoWifi/exemplos-circuitpython/circuitpython-servo-motor","unlisted":false},{"type":"link","label":"Sistema de irriga\xe7\xe3o autom\xe1tico","href":"/docs/franzininho-wifi/exemplos-circuitpython/irrigacao","docId":"FranzininhoWifi/exemplos-circuitpython/circuitpython-sistema-de-irriga\xe7\xe3o","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"category","label":"Arduino","items":[{"type":"link","label":"Primeiros Passos","href":"/docs/franzininho-wifi/exemplos-arduino/primeiros-passos","docId":"FranzininhoWifi/exemplos-arduino/arduino","unlisted":false},{"type":"link","label":"Blink","href":"/docs/franzininho-wifi/exemplos-arduino/blink","docId":"FranzininhoWifi/exemplos-arduino/arduino-blink","unlisted":false},{"type":"link","label":"Neopixel RGB LED Onboard","href":"/docs/franzininho-wifi/exemplos-arduino/neopixel-onboard","docId":"FranzininhoWifi/exemplos-arduino/arduino-neopixel","unlisted":false},{"type":"link","label":"Leitura DHT11","href":"/docs/franzininho-wifi/exemplos-arduino/dht11","docId":"FranzininhoWifi/exemplos-arduino/arduino-dht11","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"category","label":"MicroPython","items":[{"type":"link","label":"Primeiros Passos com MicroPython","href":"/docs/franzininho-wifi/exemplos-micropython/primeiros-passos","docId":"FranzininhoWifi/exemplos-micropython/micropython-primeiros-passos","unlisted":false},{"type":"link","label":"Entradas e sa\xeddas digitais","href":"/docs/franzininho-wifi/exemplos-micropython/entradas-saidas-digitais","docId":"FranzininhoWifi/exemplos-micropython/micropython-entradas-saidas-digitais","unlisted":false},{"type":"link","label":"Timers","href":"/docs/franzininho-wifi/exemplos-micropython/timers","docId":"FranzininhoWifi/exemplos-micropython/micropython-timers","unlisted":false},{"type":"link","label":"Display OLED","href":"/docs/franzininho-wifi/exemplos-micropython/display-oled","docId":"FranzininhoWifi/exemplos-micropython/micropython-display-oled","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"link","label":"Placa Franzininho WiFi dev Edition","href":"/docs/franzininho-wifi/franzininho-wifi-dev-edition","docId":"FranzininhoWifi/franzininho-wifi-dev-edition","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"category","label":"Franzininho WiFi Lab01","items":[{"type":"link","label":"Franzininho WiFi LAB01","href":"/docs/franzininho-wifi-lab01","docId":"FranzininhoWiFiLAB01/franzininho-wifi-lab01","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"category","label":"Franzininho C0(STM32C0)","items":[{"type":"link","label":"Placa Franzininho C0","href":"/docs/franzininho-c0/franzininho-c0-board","docId":"franzininhoSTM32C0/franzininho-stm32c0","unlisted":false},{"type":"category","label":"STM32CubeIDE","items":[{"type":"link","label":"STM32Cube IDE TODO List","href":"/docs/franzininho-c0/franzininho-c0-stm32cubeide-todolist","docId":"franzininhoSTM32C0/exemplos-stm32cube-IDE/franzininho-stm32c0-stm32cubeide-todolist","unlisted":false},{"type":"link","label":"Configurando os exemplos da Franzininho C0 no STM2CubeIDE em 7 passos","href":"/docs/franzininho-c0/config-franzininho-c0-stm32cubeide","docId":"franzininhoSTM32C0/exemplos-stm32cube-IDE/config-franzininho-c0-stm32cubeide","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"category","label":"Arduino","items":[{"type":"link","label":"Arduino IDE TODO List","href":"/docs/franzininho-c0/arduino-todolist","docId":"franzininhoSTM32C0/exemplos-arduino/franzininhoc0-arduino-todolist","unlisted":false},{"type":"link","label":"Primeiros passos com Arduino","href":"/docs/franzininho-c0/arduino-primeiros-passos","docId":"franzininhoSTM32C0/exemplos-arduino/franzininhoc0-arduino-primeiros-passos","unlisted":false},{"type":"link","label":"Identifica\xe7\xe3o dos Pinos no Ambiente Arduino","href":"/docs/franzininho-c0/arduino-identificacao-pinos","docId":"franzininhoSTM32C0/exemplos-arduino/franzininhoc0-arduino-identificacao-pinos","unlisted":false}],"collapsed":true,"collapsible":true}],"collapsed":true,"collapsible":true},{"type":"category","label":"Franzininho DIY","items":[{"type":"link","label":"Placa Franzininho DIY","href":"/docs/franzininho-diy/sobre","docId":"FranzininhoDIY/franzininho-diy","unlisted":false},{"type":"category","label":"Montagem","items":[{"type":"link","label":"Lista de Materiais","href":"/docs/franzininho-diy/lista-de-materiais","docId":"FranzininhoDIY/lista-de-materiais","unlisted":false},{"type":"link","label":"Identificando os componentes","href":"/docs/franzininho-diy/identificando-componentes","docId":"FranzininhoDIY/identificando-componentes","unlisted":false},{"type":"link","label":"Montagem da Franzininho DIY","href":"/docs/franzininho-diy/montagem","docId":"FranzininhoDIY/montagem","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"category","label":"Bootloader","items":[{"type":"link","label":"Bootloader","href":"/docs/franzininho-diy/bootloader","docId":"FranzininhoDIY/bootloader/bootloader","unlisted":false},{"type":"link","label":"Instala\xe7\xe3o de drivers e configura\xe7\xe3o da USB","href":"/docs/franzininho-diy/drivers-micronucleus","docId":"FranzininhoDIY/bootloader/drivers-micronucleus","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"category","label":"Exemplos Arduino","items":[{"type":"link","label":"Configura\xe7\xe3o da Arduino IDE","href":"/docs/franzininho-diy/pacote","docId":"FranzininhoDIY/exemplos-arduino/pacote","unlisted":false},{"type":"link","label":"Entradas e Sa\xeddas Digitais","href":"/docs/franzininho-diy/entradas-saidas-digitais","docId":"FranzininhoDIY/exemplos-arduino/entradas-saidas-digitais","unlisted":false},{"type":"link","label":"Entradas Anal\xf3gicas","href":"/docs/franzininho-diy/entradas-analogicas","docId":"FranzininhoDIY/exemplos-arduino/entradas-analogicas","unlisted":false},{"type":"link","label":"Sa\xeddas PWM","href":"/docs/franzininho-diy/saidas-pwm","docId":"FranzininhoDIY/exemplos-arduino/saidas-pwm","unlisted":false},{"type":"link","label":"Pisca LED","href":"/docs/franzininho-diy/pisca-led","docId":"FranzininhoDIY/exemplos-arduino/pisca-led","unlisted":false},{"type":"link","label":"Controle brilho de LED","href":"/docs/franzininho-diy/brilho-led","docId":"FranzininhoDIY/exemplos-arduino/brilho-led","unlisted":false},{"type":"link","label":"Leitura de Tecla","href":"/docs/franzininho-diy/leitura-tecla","docId":"FranzininhoDIY/exemplos-arduino/leitura-tecla","unlisted":false},{"type":"link","label":"Tecla Liga/Desliga","href":"/docs/franzininho-diy/tecla-liga-desliga","docId":"FranzininhoDIY/exemplos-arduino/tecla-liga-desliga","unlisted":false},{"type":"link","label":"LED RGB","href":"/docs/franzininho-diy/led-rgb","docId":"FranzininhoDIY/exemplos-arduino/led-rgb","unlisted":false},{"type":"link","label":"Elefante Colorido! Que cor?","href":"/docs/franzininho-diy/elefante-colorido","docId":"FranzininhoDIY/exemplos-arduino/elefante-colorido","unlisted":false},{"type":"link","label":"Sensor de luz com LDR","href":"/docs/franzininho-diy/sensor-luz-ldr","docId":"FranzininhoDIY/exemplos-arduino/sensor-luz-ldr","unlisted":false},{"type":"link","label":"Sem\xe1foro","href":"/docs/franzininho-diy/semaforo","docId":"FranzininhoDIY/exemplos-arduino/semaforo","unlisted":false},{"type":"link","label":"Theremim","href":"/docs/franzininho-diy/theremim","docId":"FranzininhoDIY/exemplos-arduino/theremim","unlisted":false},{"type":"link","label":"Girassol Automatizado","href":"/docs/franzininho-diy/girassol-automatizado","docId":"FranzininhoDIY/exemplos-arduino/girassol-automatizado","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"category","label":"Exemplos AVR Libc","items":[{"type":"link","label":"Primeiros Passos","href":"/docs/franzininho-diy/exemplos-avr-libc/primeiros-passos","docId":"FranzininhoDIY/exemplos-avr-libc/primeiros-passos","unlisted":false},{"type":"link","label":"Hello, World!","href":"/docs/franzininho-diy/exemplos-avr-libc/hello-world","docId":"FranzininhoDIY/exemplos-avr-libc/hello-world","unlisted":false},{"type":"link","label":"Sa\xedda Digital","href":"/docs/franzininho-diy/exemplos-avr-libc/saida-digital","docId":"FranzininhoDIY/exemplos-avr-libc/saida-digital","unlisted":false},{"type":"link","label":"Entrada Digital","href":"/docs/franzininho-diy/exemplos-avr-libc/entrada-digital","docId":"FranzininhoDIY/exemplos-avr-libc/entrada-digital","unlisted":false},{"type":"link","label":"Timer 0","href":"/docs/franzininho-diy/exemplos-avr-libc/timer0","docId":"FranzininhoDIY/exemplos-avr-libc/timer0","unlisted":false},{"type":"link","label":"Timer 0 - Interrup\xe7\xe3o","href":"/docs/franzininho-diy/exemplos-avr-libc/timer0-int","docId":"FranzininhoDIY/exemplos-avr-libc/timer0-int","unlisted":false},{"type":"link","label":"Contador de pulsos externos","href":"/docs/franzininho-diy/exemplos-avr-libc/contadores","docId":"FranzininhoDIY/exemplos-avr-libc/contadores","unlisted":false},{"type":"link","label":"Instrumento musical com Buzzer","href":"/docs/franzininho-diy/exemplos-avr-libc/buzzer","docId":"FranzininhoDIY/exemplos-avr-libc/buzzer","unlisted":false},{"type":"link","label":"Interrup\xe7\xe3o externa","href":"/docs/franzininho-diy/exemplos-avr-libc/int-ext","docId":"FranzininhoDIY/exemplos-avr-libc/int-externa","unlisted":false},{"type":"link","label":"TODO","href":"/docs/franzininho-diy/exemplos-avr-libc/todo","docId":"FranzininhoDIY/exemplos-avr-libc/avr-libc-todo","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"category","label":"Simulador Wokwi","items":[{"type":"link","label":"Como simular a Franzininho DIY no Wokwi","href":"/docs/franzininho-diy/wokwi/primeiros-passos","docId":"FranzininhoDIY/wokwi/wokwi-intro","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"category","label":"Simulador PICSimLab","items":[{"type":"link","label":"Franzininho DIY no PICSimLab","href":"/docs/franzininho-diy/picsimlab/primeiros-passos","docId":"FranzininhoDIY/picsimlab/picsimlab-intro","unlisted":false}],"collapsed":true,"collapsible":true}],"collapsed":true,"collapsible":true},{"type":"category","label":"FranzMakey","items":[{"type":"link","label":"Placa FranzMakey","href":"/docs/FranzMakey/franzmakey","docId":"FranzMakey/franzmakey","unlisted":false},{"type":"link","label":"Primeiros Passos","href":"/docs/FranzMakey/primeiros-passos","docId":"FranzMakey/primeiros-passos","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"category","label":"Franzininho Tiny","items":[{"type":"link","label":"Placa Franzininho Tiny","href":"/docs/franzininho-tiny/franzininho-tiny","docId":"FranzininhoTiny/franzininho-tiny","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"category","label":"Franzino","items":[{"type":"link","label":"Placa Franzino","href":"/docs/Franzino/franzino","docId":"Franzino/franzino","unlisted":false},{"type":"link","label":"Upload via conversor USB/SERIAL","href":"/docs/Franzino/upload-conversor-serial","docId":"Franzino/upload-conversor-serial","unlisted":false},{"type":"link","label":"Gravando a Franzino com um placa Arduino UNO","href":"/docs/Franzino/upload-com-arduino-uno","docId":"Franzino/upload-com-arduino-uno","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"category","label":"FranzBoy","items":[{"type":"link","label":"Placa FranzBoy","href":"/docs/FranzBoy/franzboy","docId":"FranzBoy/franzboy","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"category","label":"Badges","items":[{"type":"link","label":"Badge - Aprenda a soldar","href":"/docs/badge/badge","docId":"Badge/badge","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"category","label":"Laborat\xf3rio de Sistemas Embarcados e IoT","items":[{"type":"link","label":"Placa Laborat\xf3rio de Sistemas Embarcados e IoT","href":"/docs/LaboratorioSistemasIot/LaboratorioSistemasIot","docId":"LaboratorioSistemasIot/laboratorio-sistemas-iot","unlisted":false},{"type":"category","label":"Adaptadores","items":[{"type":"link","label":"Adaptador Arduino Uno","href":"/docs/LaboratorioSistemasIot/adaptadores/arduino-uno","docId":"LaboratorioSistemasIot/adaptadores/adaptador-arduino","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"category","label":"Bibliotecas","items":[{"type":"link","label":"laboratorioFW","href":"/docs/LaboratorioSistemasIot/bibliotecas/biblioteca-laboratorioFW","docId":"LaboratorioSistemasIot/bibliotecas/biblioteca-laboratorioFW","unlisted":false},{"type":"link","label":"laboratorioFW_ARDUNO","href":"/docs/LaboratorioSistemasIot/bibliotecas/biblioteca-laboratorioFW_ARDUNO","docId":"LaboratorioSistemasIot/bibliotecas/biblioteca-laboratorioFW-ARDUNO","unlisted":false}],"collapsed":true,"collapsible":true}],"collapsed":true,"collapsible":true}]},"docs":{"Badge/badge":{"id":"Badge/badge","title":"Badge - Aprenda a soldar","description":"Para deixar claro todo o funcionamento da Franzininho, precisamos conhecer um pouco dos componentes que comp\xf5em o projeto, assim poderemos fazer mudan\xe7as e aprimorar ainda mais este projeto.","sidebar":"docs"},"FranzBoy/franzboy":{"id":"FranzBoy/franzboy","title":"Placa FranzBoy","description":"Detalhes da placa Franzboy","sidebar":"docs"},"FranzininhoDIY/bootloader/bootloader":{"id":"FranzininhoDIY/bootloader/bootloader","title":"Bootloader","description":"Grava\xe7\xe3o do Bootloader na Franzininho DIY","sidebar":"docs"},"FranzininhoDIY/bootloader/drivers-micronucleus":{"id":"FranzininhoDIY/bootloader/drivers-micronucleus","title":"Instala\xe7\xe3o de drivers e configura\xe7\xe3o da USB","description":"Instala\xe7\xe3o dos drivers USB para correto funcionamento","sidebar":"docs"},"FranzininhoDIY/exemplos-arduino/brilho-led":{"id":"FranzininhoDIY/exemplos-arduino/brilho-led","title":"Controle brilho de LED","description":"Esse exemplo exibe como controlar a intensidade do LED usando a fun\xe7\xe3o analogWrite() na Franzininho DIY.","sidebar":"docs"},"FranzininhoDIY/exemplos-arduino/elefante-colorido":{"id":"FranzininhoDIY/exemplos-arduino/elefante-colorido","title":"Elefante Colorido! Que cor?","description":"Esse exemplo exibe como usar o LED RGB para fazer uma aplica\xe7\xe3o did\xe1tica.","sidebar":"docs"},"FranzininhoDIY/exemplos-arduino/entradas-analogicas":{"id":"FranzininhoDIY/exemplos-arduino/entradas-analogicas","title":"Entradas Anal\xf3gicas","description":"Nesse exemplo vamos aprender trabalhar com as entradas anal\xf3gicas presentes na Franzininho DIY","sidebar":"docs"},"FranzininhoDIY/exemplos-arduino/entradas-saidas-digitais":{"id":"FranzininhoDIY/exemplos-arduino/entradas-saidas-digitais","title":"Entradas e Sa\xeddas Digitais","description":"Nesse exemplo vamos aprender a trabalhar com as entradas e sa\xeddas digitais na Franzininho DIY","sidebar":"docs"},"FranzininhoDIY/exemplos-arduino/girassol-automatizado":{"id":"FranzininhoDIY/exemplos-arduino/girassol-automatizado","title":"Girassol Automatizado","description":"Nesse exemplo vamos fazer um Girassol Automatizado com Franzininho DIY","sidebar":"docs"},"FranzininhoDIY/exemplos-arduino/led-rgb":{"id":"FranzininhoDIY/exemplos-arduino/led-rgb","title":"LED RGB","description":"Esse exemplo aprenderemos a como ligar o LED RGB com a Franzininho DIY suas tr\xeas cores","sidebar":"docs"},"FranzininhoDIY/exemplos-arduino/leitura-tecla":{"id":"FranzininhoDIY/exemplos-arduino/leitura-tecla","title":"Leitura de Tecla","description":"Nesse exemplo vamos fazer a leitura de uma tecla e acionar um LED quando a mesma for pressionada.","sidebar":"docs"},"FranzininhoDIY/exemplos-arduino/pacote":{"id":"FranzininhoDIY/exemplos-arduino/pacote","title":"Configura\xe7\xe3o da Arduino IDE","description":"Configura\xe7\xe3o da IDE Arduino para programa\xe7\xe3o da Franzininho","sidebar":"docs"},"FranzininhoDIY/exemplos-arduino/pisca-led":{"id":"FranzininhoDIY/exemplos-arduino/pisca-led","title":"Pisca LED","description":"Nesse exemplo vamos aprender como fazer um pisca LED (Blink) com a Franzininho DIY.","sidebar":"docs"},"FranzininhoDIY/exemplos-arduino/saidas-pwm":{"id":"FranzininhoDIY/exemplos-arduino/saidas-pwm","title":"Sa\xeddas PWM","description":"Nesse exemplo vamos aprender trabalhar com as sa\xeddas PWM na Franzininho DIY","sidebar":"docs"},"FranzininhoDIY/exemplos-arduino/semaforo":{"id":"FranzininhoDIY/exemplos-arduino/semaforo","title":"Sem\xe1foro","description":"Nesse exemplo vamos fazer um sem\xe1foro de uma via com Franzininho DIY","sidebar":"docs"},"FranzininhoDIY/exemplos-arduino/sensor-luz-ldr":{"id":"FranzininhoDIY/exemplos-arduino/sensor-luz-ldr","title":"Sensor de luz com LDR","description":"Nesse exemplo vamos ler um sensor LDR usando a entrada anal\xf3gica da Franzininho DIY","sidebar":"docs"},"FranzininhoDIY/exemplos-arduino/tecla-liga-desliga":{"id":"FranzininhoDIY/exemplos-arduino/tecla-liga-desliga","title":"Tecla Liga/Desliga","description":"Nesse exemplo vamos fazer uma tecla liga/desliga, que pode ser usada para acionamentos diversos.","sidebar":"docs"},"FranzininhoDIY/exemplos-arduino/theremim":{"id":"FranzininhoDIY/exemplos-arduino/theremim","title":"Theremim","description":"Nesse exemplo vamos fazer um sem\xe1foro de uma via com Franzininho DIY","sidebar":"docs"},"FranzininhoDIY/exemplos-arduino/tutoriais-i2c":{"id":"FranzininhoDIY/exemplos-arduino/tutoriais-i2c","title":"I2C","description":"Para deixar claro todo o funcionamento da Franzininho, precisamos conhecer um pouco dos componentes que comp\xf5em o projeto, assim poderemos fazer mudan\xe7as e aprimorar ainda mais este projeto."},"FranzininhoDIY/exemplos-arduino/tutoriais-introducao":{"id":"FranzininhoDIY/exemplos-arduino/tutoriais-introducao","title":"Introdu\xe7\xe3o","description":"Introdu\xe7\xe3o a programa\xe7\xe3o Arduino com as placas Franzininho"},"FranzininhoDIY/exemplos-avr-libc/avr-libc-todo":{"id":"FranzininhoDIY/exemplos-avr-libc/avr-libc-todo","title":"TODO","description":"Mapeamento dos conte\xfados para exemplos com a AVR LibC","sidebar":"docs"},"FranzininhoDIY/exemplos-avr-libc/buzzer":{"id":"FranzininhoDIY/exemplos-avr-libc/buzzer","title":"Instrumento musical com Buzzer","description":"Nesse exemplo vamos criar um programa que l\xea uma partitura e toca a m\xfasica escrita atrav\xe9s de um buzzer no Franzininho DIY","sidebar":"docs"},"FranzininhoDIY/exemplos-avr-libc/contadores":{"id":"FranzininhoDIY/exemplos-avr-libc/contadores","title":"Contador de pulsos externos","description":"Nesses tr\xeas exemplos vamos explorar gradativamente como fazer um contador de eventos externos no Franzininho DIY","sidebar":"docs"},"FranzininhoDIY/exemplos-avr-libc/entrada-digital":{"id":"FranzininhoDIY/exemplos-avr-libc/entrada-digital","title":"Entrada Digital","description":"Vamos entender como trabalhar com as Entradas Digitais","sidebar":"docs"},"FranzininhoDIY/exemplos-avr-libc/hello-world":{"id":"FranzininhoDIY/exemplos-avr-libc/hello-world","title":"Hello, World!","description":"Nesse primeiros exemplo vamos dar os primeiros passos na programa\xe7\xe3o da Franzininho DIY","sidebar":"docs"},"FranzininhoDIY/exemplos-avr-libc/int-externa":{"id":"FranzininhoDIY/exemplos-avr-libc/int-externa","title":"Interrup\xe7\xe3o externa","description":"Exemplo para uso da interrup\xe7\xe3o externa","sidebar":"docs"},"FranzininhoDIY/exemplos-avr-libc/primeiros-passos":{"id":"FranzininhoDIY/exemplos-avr-libc/primeiros-passos","title":"Primeiros Passos","description":"Primeiros passos para programa\xe7\xe3o da Franzininho DIY usando usando a AVR Libc","sidebar":"docs"},"FranzininhoDIY/exemplos-avr-libc/saida-digital":{"id":"FranzininhoDIY/exemplos-avr-libc/saida-digital","title":"Sa\xedda Digital","description":"Vamos entender como trabalhar com as sa\xeddas Digitais","sidebar":"docs"},"FranzininhoDIY/exemplos-avr-libc/timer0":{"id":"FranzininhoDIY/exemplos-avr-libc/timer0","title":"Timer 0","description":"Vamos aprender usar o timer 0 como temporizador","sidebar":"docs"},"FranzininhoDIY/exemplos-avr-libc/timer0-int":{"id":"FranzininhoDIY/exemplos-avr-libc/timer0-int","title":"Timer 0 - Interrup\xe7\xe3o","description":"Vamos aprender usar o timer 0 como temporizador e usando sua interrup\xe7\xe3o","sidebar":"docs"},"FranzininhoDIY/franzininho-diy":{"id":"FranzininhoDIY/franzininho-diy","title":"Placa Franzininho DIY","description":"Detalhes da Franzininho DIY","sidebar":"docs"},"FranzininhoDIY/identificando-componentes":{"id":"FranzininhoDIY/identificando-componentes","title":"Identificando os componentes","description":"Para deixar claro todo o funcionamento da Franzininho DIY, precisamos conhecer um pouco dos componentes que comp\xf5em o projeto, assim poderemos fazer mudan\xe7as e aprimorar ainda mais este projeto.","sidebar":"docs"},"FranzininhoDIY/lista-de-materiais":{"id":"FranzininhoDIY/lista-de-materiais","title":"Lista de Materiais","description":"Lista de materiais (componentes) para montagem da Franzininho DIY","sidebar":"docs"},"FranzininhoDIY/montagem":{"id":"FranzininhoDIY/montagem","title":"Montagem da Franzininho DIY","description":"Passo a passo da montagem da Franzininho DIY","sidebar":"docs"},"FranzininhoDIY/picsimlab/picsimlab-intro":{"id":"FranzininhoDIY/picsimlab/picsimlab-intro","title":"Franzininho DIY no PICSimLab","description":"Nesse exemplos vamos ver como usar o PICSimLab para simular e depurar a Franzininho DIY","sidebar":"docs"},"FranzininhoDIY/wokwi/wokwi-intro":{"id":"FranzininhoDIY/wokwi/wokwi-intro","title":"Como simular a Franzininho DIY no Wokwi","description":"Nesse t\xf3pico vamos ver como usar o WokWi para simular circuitos com a Franzininho DIY","sidebar":"docs"},"franzininhoSTM32C0/exemplos-arduino/franzininhoc0-arduino-identificacao-pinos":{"id":"franzininhoSTM32C0/exemplos-arduino/franzininhoc0-arduino-identificacao-pinos","title":"Identifica\xe7\xe3o dos Pinos no Ambiente Arduino","description":"Identifica\xe7\xe3o dos Pinos da Franzininho C0 no Ambiente Arduino","sidebar":"docs"},"franzininhoSTM32C0/exemplos-arduino/franzininhoc0-arduino-primeiros-passos":{"id":"franzininhoSTM32C0/exemplos-arduino/franzininhoc0-arduino-primeiros-passos","title":"Primeiros passos com Arduino","description":"Instala\xe7\xe3o e configura\xe7\xf5es da Arduino IDE para programar a Franzininho C0","sidebar":"docs"},"franzininhoSTM32C0/exemplos-arduino/franzininhoc0-arduino-todolist":{"id":"franzininhoSTM32C0/exemplos-arduino/franzininhoc0-arduino-todolist","title":"Arduino IDE TODO List","description":"Todo list para exemplos com Arduino","sidebar":"docs"},"franzininhoSTM32C0/exemplos-stm32cube-IDE/config-franzininho-c0-stm32cubeide":{"id":"franzininhoSTM32C0/exemplos-stm32cube-IDE/config-franzininho-c0-stm32cubeide","title":"Configurando os exemplos da Franzininho C0 no STM2CubeIDE em 7 passos","description":"7 passos para voc\xea configurar um novo projeto para a Franzininho C0","sidebar":"docs"},"franzininhoSTM32C0/exemplos-stm32cube-IDE/franzininho-stm32c0-stm32cubeide-todolist":{"id":"franzininhoSTM32C0/exemplos-stm32cube-IDE/franzininho-stm32c0-stm32cubeide-todolist","title":"STM32Cube IDE TODO List","description":"Todo list para exemplos com STM32Cube IDE","sidebar":"docs"},"franzininhoSTM32C0/franzininho-stm32c0":{"id":"franzininhoSTM32C0/franzininho-stm32c0","title":"Placa Franzininho C0","description":"Franzininho C0 \'e uma placa desenvolvimento baseada no microcontrolador STM32C0 da STmicroelectronics","sidebar":"docs"},"FranzininhoTiny/franzininho-tiny":{"id":"FranzininhoTiny/franzininho-tiny","title":"Placa Franzininho Tiny","description":"Detalhes da Franzininho Tiny","sidebar":"docs"},"FranzininhoWifi/exemplos-arduino/arduino":{"id":"FranzininhoWifi/exemplos-arduino/arduino","title":"Primeiros Passos","description":"Aprenda dar os primeiros passo no uso do Arduino na Franzininho WiFi","sidebar":"docs"},"FranzininhoWifi/exemplos-arduino/arduino-blink":{"id":"FranzininhoWifi/exemplos-arduino/arduino-blink","title":"Blink","description":"Primeiro Hello World com a Franzininho WiFi no Arduino IDE","sidebar":"docs"},"FranzininhoWifi/exemplos-arduino/arduino-dht11":{"id":"FranzininhoWifi/exemplos-arduino/arduino-dht11","title":"Leitura DHT11","description":"Nesse exemplo vamos fazer a leitura do sensor de temperatura e umidade, DHT11, e imprimir os valores na serial;","sidebar":"docs"},"FranzininhoWifi/exemplos-arduino/arduino-neopixel":{"id":"FranzininhoWifi/exemplos-arduino/arduino-neopixel","title":"Neopixel RGB LED Onboard","description":"Exemplo de uso do led RGB onboard do Franzininho WiFi","sidebar":"docs"},"FranzininhoWifi/exemplos-circuitpython/circuitpython-dht11":{"id":"FranzininhoWifi/exemplos-circuitpython/circuitpython-dht11","title":"Sensor de temperatura e umidade DHT11","description":"Nesse exemplo aprenderemos usar ler valores de temperatura e umidade com o sensor DHT11 usando o CircuitPython.","sidebar":"docs"},"FranzininhoWifi/exemplos-circuitpython/circuitpython-display-oled-i2c":{"id":"FranzininhoWifi/exemplos-circuitpython/circuitpython-display-oled-i2c","title":"Display OLED I2C","description":"Nesse exemplo aprenderemos usar o display OLED com comunica\xe7\xe3o I2C explorando as funcionalidades b\xe1sicas usando o CircuitPython.","sidebar":"docs"},"FranzininhoWifi/exemplos-circuitpython/circuitpython-entradas-analogicas":{"id":"FranzininhoWifi/exemplos-circuitpython/circuitpython-entradas-analogicas","title":"Entrada Anal\xf3gica","description":"Este exemplo exibe como trabalhar com as entradas anal\xf3gicas na Franzininho WiFi","sidebar":"docs"},"FranzininhoWifi/exemplos-circuitpython/circuitpython-entradas-saidas-digitais":{"id":"FranzininhoWifi/exemplos-circuitpython/circuitpython-entradas-saidas-digitais","title":"Entradas e Sa\xeddas Digitais","description":"Este exemplo exibe como trabalhar com as entradas e sa\xeddas digitais na Franzininho WiFi","sidebar":"docs"},"FranzininhoWifi/exemplos-circuitpython/circuitpython-ferramentas":{"id":"FranzininhoWifi/exemplos-circuitpython/circuitpython-ferramentas","title":"Instalando as ferramentas","description":"Neste texto vamos configurar as ferramentas para a utiliza\xe7\xe3o da Franzininho WiFi","sidebar":"docs"},"FranzininhoWifi/exemplos-circuitpython/circuitpython-hello-world":{"id":"FranzininhoWifi/exemplos-circuitpython/circuitpython-hello-world","title":"Hello World!","description":"Neste texto vamos fazer nosso Blink - Pisca LED com a Franzininho WiFi","sidebar":"docs"},"FranzininhoWifi/exemplos-circuitpython/circuitpython-primeiros-passos":{"id":"FranzininhoWifi/exemplos-circuitpython/circuitpython-primeiros-passos","title":"Primeiros Passos","description":"Aprenda dar os primeiros passo no uso do CircuitPython na Franzininho WiFi","sidebar":"docs"},"FranzininhoWifi/exemplos-circuitpython/circuitpython-pwm":{"id":"FranzininhoWifi/exemplos-circuitpython/circuitpython-pwm","title":"PWM - Pulse Width Modulation","description":"Neste artigo vamos aprender a usar o PWM no CircuitPython, uma t\xe9cnica muito usada para controle de pot\xeancia. Veja como \xe9 f\xe1cil aplicar.","sidebar":"docs"},"FranzininhoWifi/exemplos-circuitpython/circuitpython-sensor-hcsr04":{"id":"FranzininhoWifi/exemplos-circuitpython/circuitpython-sensor-hcsr04","title":"Sensor de Dist\xe2ncia Ultrass\xf4nico HC-SR04","description":"Nesse exemplo aprenderemos a ler valores de dist\xe2ncia com o sensor HC-SR04 usando o CircuitPython.","sidebar":"docs"},"FranzininhoWifi/exemplos-circuitpython/circuitpython-serial-console":{"id":"FranzininhoWifi/exemplos-circuitpython/circuitpython-serial-console","title":"Serial Console","description":"Neste texto vamos utilizar a comunica\xe7\xe3o serial do Franzininho WiFi para imprimir e coleta valores do console.","sidebar":"docs"},"FranzininhoWifi/exemplos-circuitpython/circuitpython-servo-motor":{"id":"FranzininhoWifi/exemplos-circuitpython/circuitpython-servo-motor","title":"Servo motor","description":"Confira nesse artigo como controlar um servo motor com a Franzininho WiFi no CircuitPython. Veja como \xe9 f\xe1cil!","sidebar":"docs"},"FranzininhoWifi/exemplos-circuitpython/circuitpython-sistema-de-irriga\xe7\xe3o":{"id":"FranzininhoWifi/exemplos-circuitpython/circuitpython-sistema-de-irriga\xe7\xe3o","title":"Sistema de irriga\xe7\xe3o autom\xe1tico","description":"Um sistema de irriga\xe7\xe3o autom\xe1tico \xe9 uma solu\xe7\xe3o para ajudar a manter de forma sistem\xe1tica a irriga\xe7\xe3o de suas plantas.","sidebar":"docs"},"FranzininhoWifi/exemplos-circuitpython/circuitpython-touch-capacitivo":{"id":"FranzininhoWifi/exemplos-circuitpython/circuitpython-touch-capacitivo","title":"Pinos de Toque Capacitivo","description":"Neste exemplo, vamos fazer um \u201cinterruptor\u201d por aproxima\xe7\xe3o e, aprender como usar o m\xf3dulo respons\xe1vel pelos pinos de toque capacitivo. Ademais, veremos como ajustar a sensibilidade desse recurso.","sidebar":"docs"},"FranzininhoWifi/exemplos-espidf/franzininho-wifi-espidf-00":{"id":"FranzininhoWifi/exemplos-espidf/franzininho-wifi-espidf-00","title":"Primeiros Passos com ESP-IDF","description":"Este documento tem como objetivo ajud\xe1-lo a configurar o ESP-IDF","sidebar":"docs"},"FranzininhoWifi/exemplos-espidf/franzininho-wifi-espidf-01":{"id":"FranzininhoWifi/exemplos-espidf/franzininho-wifi-espidf-01","title":"Hello World! ESP-IDF","description":"Este texto tem como objetivo fazer o primeiro programa no ESP-IDF para a Franzininho WIFI","sidebar":"docs"},"FranzininhoWifi/exemplos-espidf/franzininho-wifi-espidf-02":{"id":"FranzininhoWifi/exemplos-espidf/franzininho-wifi-espidf-02","title":"Entrada digital","description":"Neste exemplo utilizou-se um bot\xe3o t\xe1ctil (entrada digital) para acionar um LED (sa\xedda digital) e mostra seu estado no terminal.","sidebar":"docs"},"FranzininhoWifi/exemplos-espidf/franzininho-wifi-espidf-03":{"id":"FranzininhoWifi/exemplos-espidf/franzininho-wifi-espidf-03","title":"Entrada Anal\xf3gica","description":"Neste exemplo vamos entender como usar o conversor AD para leitura de sinais anal\xf3gico","sidebar":"docs"},"FranzininhoWifi/exemplos-espidf/franzininho-wifi-espidf-04":{"id":"FranzininhoWifi/exemplos-espidf/franzininho-wifi-espidf-04","title":"PWM com LEDC","description":"Neste exemplo utilizou-se um bot\xe3o t\xe1ctil (entrada digital) para acionar um LED (sa\xedda digital) e mostra seu estado no terminal.","sidebar":"docs"},"FranzininhoWifi/exemplos-espidf/franzininho-wifi-espidf-05":{"id":"FranzininhoWifi/exemplos-espidf/franzininho-wifi-espidf-05","title":"Primeiros passos com a AWS","description":"Primeiros passos para conectar a Franzininho WiFi na AWS via MQTT pelo AWS IoT Core.","sidebar":"docs"},"FranzininhoWifi/exemplos-micropython/micropython-display-oled":{"id":"FranzininhoWifi/exemplos-micropython/micropython-display-oled","title":"Display OLED","description":"Descubra como aproveitar ao m\xe1ximo o display OLED SSD1306 da Franzininho WiFi Lab01 neste artigo!","sidebar":"docs"},"FranzininhoWifi/exemplos-micropython/micropython-entradas-saidas-digitais":{"id":"FranzininhoWifi/exemplos-micropython/micropython-entradas-saidas-digitais","title":"Entradas e sa\xeddas digitais","description":"Explore as entradas e sa\xeddas digitais da Franzininho WiFi com MicroPython. Controle LEDs e bot\xf5es na Franzininho WiFi LAB01.","sidebar":"docs"},"FranzininhoWifi/exemplos-micropython/micropython-primeiros-passos":{"id":"FranzininhoWifi/exemplos-micropython/micropython-primeiros-passos","title":"Primeiros Passos com MicroPython","description":"Aprenda como gravar o MicroPython na Franzininho WiFi usando a ferramenta Franzininho - ESP Web Tools e explore projetos com o Thonny IDE.","sidebar":"docs"},"FranzininhoWifi/exemplos-micropython/micropython-timers":{"id":"FranzininhoWifi/exemplos-micropython/micropython-timers","title":"Timers","description":"Descubra como os timers peri\xf3dicos e one-shot da Franzininho WiFi podem controlar e antecipar cen\xe1rios nos sistemas embarcados. Use-os para piscar LEDs, ler sensores etc.","sidebar":"docs"},"FranzininhoWifi/franzininho-wifi":{"id":"FranzininhoWifi/franzininho-wifi","title":"Placa Franzininho WiFi","description":"Conhe\xe7a todos os recursos da placa brasileira Franzininho WiFi. Vem ESP32-S2 e pode ser usada de iniciantes a desenvolvedores experientes.","sidebar":"docs"},"FranzininhoWifi/franzininho-wifi-dev-edition":{"id":"FranzininhoWifi/franzininho-wifi-dev-edition","title":"Placa Franzininho WiFi dev Edition","description":"Detalhes da Franzininho WiFi Developer Edition","sidebar":"docs"},"FranzininhoWifi/wokwi/franzininho-wifi-wokwi-intro":{"id":"FranzininhoWifi/wokwi/franzininho-wifi-wokwi-intro","title":"Como simular a Franzininho WiFi no Wokwi","description":"Nesse t\xf3pico vamos ver como usar o WokWi para simular circuitos com a Franzininho WiFi","sidebar":"docs"},"FranzininhoWiFiLAB01/franzininho-wifi-lab01":{"id":"FranzininhoWiFiLAB01/franzininho-wifi-lab01","title":"Franzininho WiFi LAB01","description":"Conhe\xe7a todos os recursos da placa Franzininho WiFi LAB01, uma placa de expans\xe3o para a placa Franzininho WiFi.","sidebar":"docs"},"Franzino/franzino":{"id":"Franzino/franzino","title":"Placa Franzino","description":"Detalhes da placa Franzino","sidebar":"docs"},"Franzino/upload-com-arduino-uno":{"id":"Franzino/upload-com-arduino-uno","title":"Gravando a Franzino com um placa Arduino UNO","description":"Veja como usar um Arduino Uno como programador para a Franzino","sidebar":"docs"},"Franzino/upload-conversor-serial":{"id":"Franzino/upload-conversor-serial","title":"Upload via conversor USB/SERIAL","description":"Liga\xe7\xe3o do conversor USB Serial para upload de c\xf3digos","sidebar":"docs"},"FranzMakey/franzmakey":{"id":"FranzMakey/franzmakey","title":"Placa FranzMakey","description":"Detalhes da placa FranzMakey","sidebar":"docs"},"FranzMakey/primeiros-passos":{"id":"FranzMakey/primeiros-passos","title":"Primeiros Passos","description":"Primeiros passos com a placa FranzMakey","sidebar":"docs"},"LaboratorioSistemasIot/adaptadores/adaptador-arduino":{"id":"LaboratorioSistemasIot/adaptadores/adaptador-arduino","title":"Adaptador Arduino Uno","description":"Adaptador Arduino Uno para a placa Laborat\xf3rio de Sistemas Embarcados e IoT","sidebar":"docs"},"LaboratorioSistemasIot/bibliotecas/biblioteca-laboratorioFW":{"id":"LaboratorioSistemasIot/bibliotecas/biblioteca-laboratorioFW","title":"laboratorioFW","description":"O que \xe9 a biblioteca laboratorioFW","sidebar":"docs"},"LaboratorioSistemasIot/bibliotecas/biblioteca-laboratorioFW-ARDUNO":{"id":"LaboratorioSistemasIot/bibliotecas/biblioteca-laboratorioFW-ARDUNO","title":"laboratorioFW_ARDUNO","description":"O que \xe9 a biblioteca laboratorioFW-ARDUNO","sidebar":"docs"},"LaboratorioSistemasIot/laboratorio-sistemas-iot":{"id":"LaboratorioSistemasIot/laboratorio-sistemas-iot","title":"Placa Laborat\xf3rio de Sistemas Embarcados e IoT","description":"O que \xe9 a placa Laborat\xf3rio de Sistemas Embarcados e IoT","sidebar":"docs"},"sobre":{"id":"sobre","title":"Seja bem vindo a documenta\xe7\xe3o do projeto Franzininho","description":"Aqui voc\xea encontra a documenta\xe7\xe3o (em Desenvolvimento) para trabalhar com todas as placas e Kits Franzininho.","sidebar":"docs"}}}')}}]); \ No newline at end of file diff --git a/assets/js/d69ae106.9614e912.js b/assets/js/d69ae106.9614e912.js deleted file mode 100755 index 12897d31f..000000000 --- a/assets/js/d69ae106.9614e912.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkFranzininho=self.webpackChunkFranzininho||[]).push([[8930],{21204:(o,n,a)=>{a.r(n),a.d(n,{assets:()=>c,contentTitle:()=>s,default:()=>p,frontMatter:()=>r,metadata:()=>t,toc:()=>d});var e=a(17624),i=a(4552);const r={id:"micropython-primeiros-passos",title:"Primeiros Passos com MicroPython",slug:"/franzininho-wifi/exemplos-micropython/primeiros-passos",description:"Aprenda como gravar o MicroPython na Franzininho WiFi usando a ferramenta Franzininho - ESP Web Tools e explore projetos com o Thonny IDE.",author:"Sthefania Fernandes"},s=void 0,t={id:"FranzininhoWifi/exemplos-micropython/micropython-primeiros-passos",title:"Primeiros Passos com MicroPython",description:"Aprenda como gravar o MicroPython na Franzininho WiFi usando a ferramenta Franzininho - ESP Web Tools e explore projetos com o Thonny IDE.",source:"@site/docs/FranzininhoWifi/exemplos-micropython/primeiros-passos.md",sourceDirName:"FranzininhoWifi/exemplos-micropython",slug:"/franzininho-wifi/exemplos-micropython/primeiros-passos",permalink:"/docs/franzininho-wifi/exemplos-micropython/primeiros-passos",draft:!1,unlisted:!1,editUrl:"https://github.com/Franzininho/docs-franzininho-site/edit/main/docs/FranzininhoWifi/exemplos-micropython/primeiros-passos.md",tags:[],version:"current",frontMatter:{id:"micropython-primeiros-passos",title:"Primeiros Passos com MicroPython",slug:"/franzininho-wifi/exemplos-micropython/primeiros-passos",description:"Aprenda como gravar o MicroPython na Franzininho WiFi usando a ferramenta Franzininho - ESP Web Tools e explore projetos com o Thonny IDE.",author:"Sthefania Fernandes"},sidebar:"docs",previous:{title:"Leitura DHT11",permalink:"/docs/franzininho-wifi/exemplos-arduino/dht11"},next:{title:"Explore as entradas e sa\xeddas digitais da Franzininho WiFi no MicroPython",permalink:"/docs/franzininho-wifi/exemplos-micropython/entradas-saidas-digitais"}},c={},d=[{value:"Gravando o MicroPython na Franzininho WiFi",id:"gravando-o-micropython-na-franzininho-wifi",level:2},{value:"Apresentando o Thonny IDE",id:"apresentando-o-thonny-ide",level:2}];function h(o){const n={a:"a",h2:"h2",img:"img",li:"li",ol:"ol",p:"p",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,i.M)(),...o.components};return(0,e.jsxs)(e.Fragment,{children:[(0,e.jsx)(n.p,{children:"A Franzininho WIFI \xe9 uma placa de desenvolvimento de hardware de c\xf3digo aberto, baseada no ESP32-S2 e criada no Brasil. A sua finalidade principal \xe9 tornar o desenvolvimento de projetos eletr\xf4nicos mais acess\xedvel a makers, entusiastas e desenvolvedores brasileiros."}),"\n",(0,e.jsx)(n.p,{children:"A placa pode ser programada de v\xe1rias maneiras, adequando-se tanto a iniciantes quanto a desenvolvedores experientes."}),"\n",(0,e.jsx)(n.p,{children:"A Franzininho WiFi pode ser programada de diversas formas, entre elas as mais comuns s\xe3o:"}),"\n",(0,e.jsxs)(n.ul,{children:["\n",(0,e.jsxs)(n.li,{children:["ESP-IDF, Arduino, CircuitPython e ",(0,e.jsx)(n.strong,{children:"MicroPython"})]}),"\n"]}),"\n",(0,e.jsx)(n.p,{children:"A Franzininho WiFi LAB01 \xe9 uma placa de expans\xe3o para a placa Franzininho WiFi, com a proposta de ser um laborat\xf3rio para auxiliar no ensino e aprendizagem do ESP32, baseada na Franzininho WiFi. Ela vem com diversos recursos onboard que facilitam o desenvolvimento de atividades e experi\xeancias."}),"\n",(0,e.jsxs)(n.p,{children:["Nessa s\xe9rie de artigos, vamos explorar a programa\xe7\xe3o em MicroPython com a Franzininho WiFi LAB01. Primeiramente, \xe9 preciso entender que o ",(0,e.jsx)(n.a,{href:"https://micropython.org/",children:"MicroPython"})," \xe9 uma implementa\xe7\xe3o completa da linguagem Python 3 para rodar em hardware embarcado."]}),"\n",(0,e.jsxs)(n.p,{children:["Assim, para poder programar a sua placa Franzininho WiFi com MicroPython \xe9 preciso, primeiro, gravar o firmware do MicroPython nela. Para facilitar a instala\xe7\xe3o do MicroPython, vamos usar a ferramenta de grava\xe7\xe3o atrav\xe9s do browser, criada pela comunidade Franzininho: ",(0,e.jsx)(n.a,{href:"https://franzininho.github.io/franzininho-webesptools/#",children:"franzininho.github.io"})," (funciona no Chrome e similares). Aproveitamos para agradecer ao Ewerton Sousa pela contribui\xe7\xe3o com essa ferramenta."]}),"\n",(0,e.jsx)(n.p,{children:"A seguir apresentamos os passos para grava\xe7\xe3o do MicroPython na Franzininho WiFI e a IDE que usaremos nessa serie de artigos."}),"\n",(0,e.jsx)(n.h2,{id:"gravando-o-micropython-na-franzininho-wifi",children:"Gravando o MicroPython na Franzininho WiFi"}),"\n",(0,e.jsxs)(n.p,{children:["Acesse a ferramenta ",(0,e.jsx)(n.a,{href:"https://franzininho.github.io/franzininho-webesptools/#",children:"Franzininho \u2013 ESP Web Tools"}),". Com essa ferramenta \xe9 poss\xedvel obter o firmware n\xe3o somente o firmware do Micropython, mas tamb\xe9m das outras ferramentas de software que a placa suporta. Ent\xe3o, atente-se para selecionar a aba do MicroPython, conforme exibido abaixo:"]}),"\n",(0,e.jsx)(n.p,{children:(0,e.jsx)(n.img,{alt:"Ferramenta de Grava\xe7\xe3o",src:a(3104).c+"",width:"1844",height:"529"})}),"\n",(0,e.jsx)(n.p,{children:"Seguindo o tutorial, comece conectando sua placa Franzininho a uma das portas USB de seu computador. Em seguida coloque sua placa em modo DFU que significa executar os seguintes passos:"}),"\n",(0,e.jsxs)(n.ol,{children:["\n",(0,e.jsx)(n.li,{children:"Pressione e segure o bot\xe3o boot;"}),"\n",(0,e.jsx)(n.li,{children:"Pressione o bot\xe3o reset;"}),"\n",(0,e.jsx)(n.li,{children:"Ap\xf3s soltar o reset solte o boot."}),"\n"]}),"\n",(0,e.jsx)(n.p,{children:(0,e.jsx)(n.img,{alt:"Franzininho WiFI",src:a(63020).c+"",width:"848",height:"438"})}),"\n",(0,e.jsxs)(n.p,{children:["Feito isso, clique no bot\xe3o Conectar do site ",(0,e.jsx)(n.a,{href:"https://franzininho.github.io/franzininho-webesptools/#",children:"franzininho.github.io"}),", selecione a placa e clique em conectar:"]}),"\n",(0,e.jsx)(n.p,{children:(0,e.jsx)(n.img,{alt:"Conectando a placa a ferramenta",src:a(52636).c+"",width:"778",height:"651"})}),"\n",(0,e.jsx)(n.p,{children:"Com a placa conectada, clique em instalar MicroPython:"}),"\n",(0,e.jsx)(n.p,{children:(0,e.jsx)(n.img,{alt:"Intale o MicroPython",src:a(44616).c+"",width:"523",height:"242"})}),"\n",(0,e.jsx)(n.p,{children:"Selecione a op\xe7\xe3o apagar dispositivo:"}),"\n",(0,e.jsx)(n.p,{children:(0,e.jsx)(n.img,{alt:"Apagar dispositivo",src:a(22580).c+"",width:"528",height:"392"})}),"\n",(0,e.jsx)(n.p,{children:"Clique em instalar e aguarde finalizar a instala\xe7\xe3o (mantenha a p\xe1gina aberta at\xe9 o final da instala\xe7\xe3o):"}),"\n",(0,e.jsx)(n.p,{children:(0,e.jsx)(n.img,{alt:"Instalando o MicroPython",src:a(16344).c+"",width:"532",height:"355"})}),"\n",(0,e.jsx)(n.p,{children:(0,e.jsx)(n.img,{alt:"Instalando o MicroPython",src:a(1884).c+"",width:"591",height:"448"})}),"\n",(0,e.jsx)(n.p,{children:"Uma vez instalado clique novamente no bot\xe3o de reset para iniciar o MicroPython."}),"\n",(0,e.jsx)(n.p,{children:"Tudo pronto, agora \xe9 poss\xedvel programar sua Franzininho WiFi LAB01 com MicroPython."}),"\n",(0,e.jsxs)(n.p,{children:[(0,e.jsx)(n.strong,{children:"Observa\xe7\xe3o"}),": Quando voc\xea colocar a placa em modo DFU, o buzzer pode ser ativado, o que pode causar ru\xeddo indesejado. Para evitar isso, desconecte o jumper do buzzer (IO17), que \xe9 o primeiro da esquerda para a direita."]}),"\n",(0,e.jsx)(n.h2,{id:"apresentando-o-thonny-ide",children:"Apresentando o Thonny IDE"}),"\n",(0,e.jsx)(n.p,{children:"O Thonny \xe9 um IDE popular para Python e MicroPython e \xe9 o que recomendamos para a programa\xe7\xe3o da Franzininho WiFi."}),"\n",(0,e.jsxs)(n.p,{children:["Para realizar o download, basta visitar o site ",(0,e.jsx)(n.a,{href:"https://thonny.org/",children:"thonny.org"})," e selecionar o link de download localizado no topo da p\xe1gina, conforme o seu sistema operacional."]}),"\n",(0,e.jsx)(n.p,{children:"Em seguida, inicie o Thonny enquanto a placa ainda estiver conectada via USB. Na parte inferior direita, selecione a op\xe7\xe3o MicroPython (ESP32). Desta forma, o Thonny ir\xe1 detectar automaticamente a Franzininho WiFi."}),"\n",(0,e.jsx)(n.p,{children:(0,e.jsx)(n.img,{alt:"MicroPython Conectado",src:a(12e3).c+"",width:"1659",height:"251"})}),"\n",(0,e.jsx)(n.p,{children:"Agora tudo est\xe1 pronto para iniciar seus projetos com MicroPython na Franzininho WiFi."}),"\n",(0,e.jsxs)(n.table,{children:[(0,e.jsx)(n.thead,{children:(0,e.jsxs)(n.tr,{children:[(0,e.jsx)(n.th,{children:"Autor"}),(0,e.jsx)(n.th,{children:"Sthefania Fernandes"})]})}),(0,e.jsx)(n.tbody,{children:(0,e.jsxs)(n.tr,{children:[(0,e.jsx)(n.td,{children:"Data:"}),(0,e.jsx)(n.td,{children:"10/11/2023"})]})})]})]})}function p(o={}){const{wrapper:n}={...(0,i.M)(),...o.components};return n?(0,e.jsx)(n,{...o,children:(0,e.jsx)(h,{...o})}):h(o)}},3104:(o,n,a)=>{a.d(n,{c:()=>e});const e=a.p+"assets/images/1-6d88a07fe7b4d086c5c1e919543bde1f.png"},63020:(o,n,a)=>{a.d(n,{c:()=>e});const e=a.p+"assets/images/2-4ff442ba4ad188b9e12f85f62f5651e5.png"},52636:(o,n,a)=>{a.d(n,{c:()=>e});const e=a.p+"assets/images/3-85a7b0152873fb9d9f399f85282c2978.png"},44616:(o,n,a)=>{a.d(n,{c:()=>e});const e=a.p+"assets/images/4-f656418f67a602f10d2a5413fbc17693.png"},22580:(o,n,a)=>{a.d(n,{c:()=>e});const e=a.p+"assets/images/5-6365593b93164509a613351e73fe8bd3.png"},16344:(o,n,a)=>{a.d(n,{c:()=>e});const e=a.p+"assets/images/6-8f46bd568b85b06a3ef67a3e4bf9608f.png"},1884:(o,n,a)=>{a.d(n,{c:()=>e});const e=a.p+"assets/images/7-b365425ef64b1bf55dcbf8492f02b523.png"},12e3:(o,n,a)=>{a.d(n,{c:()=>e});const e=a.p+"assets/images/8-e065f7a020356536e7b2097f799041a2.png"},4552:(o,n,a)=>{a.d(n,{I:()=>t,M:()=>s});var e=a(11504);const i={},r=e.createContext(i);function s(o){const n=e.useContext(r);return e.useMemo((function(){return"function"==typeof o?o(n):{...n,...o}}),[n,o])}function t(o){let n;return n=o.disableParentContext?"function"==typeof o.components?o.components(i):o.components||i:s(o.components),e.createElement(r.Provider,{value:n},o.children)}}}]); \ No newline at end of file diff --git a/assets/js/d69ae106.e6f31723.js b/assets/js/d69ae106.e6f31723.js new file mode 100755 index 000000000..f5a5d67db --- /dev/null +++ b/assets/js/d69ae106.e6f31723.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkFranzininho=self.webpackChunkFranzininho||[]).push([[8930],{21204:(o,n,a)=>{a.r(n),a.d(n,{assets:()=>c,contentTitle:()=>s,default:()=>p,frontMatter:()=>r,metadata:()=>t,toc:()=>d});var e=a(17624),i=a(4552);const r={id:"micropython-primeiros-passos",title:"Primeiros Passos com MicroPython",slug:"/franzininho-wifi/exemplos-micropython/primeiros-passos",description:"Aprenda como gravar o MicroPython na Franzininho WiFi usando a ferramenta Franzininho - ESP Web Tools e explore projetos com o Thonny IDE.",author:"Sthefania Fernandes"},s=void 0,t={id:"FranzininhoWifi/exemplos-micropython/micropython-primeiros-passos",title:"Primeiros Passos com MicroPython",description:"Aprenda como gravar o MicroPython na Franzininho WiFi usando a ferramenta Franzininho - ESP Web Tools e explore projetos com o Thonny IDE.",source:"@site/docs/FranzininhoWifi/exemplos-micropython/primeiros-passos.md",sourceDirName:"FranzininhoWifi/exemplos-micropython",slug:"/franzininho-wifi/exemplos-micropython/primeiros-passos",permalink:"/docs/franzininho-wifi/exemplos-micropython/primeiros-passos",draft:!1,unlisted:!1,editUrl:"https://github.com/Franzininho/docs-franzininho-site/edit/main/docs/FranzininhoWifi/exemplos-micropython/primeiros-passos.md",tags:[],version:"current",frontMatter:{id:"micropython-primeiros-passos",title:"Primeiros Passos com MicroPython",slug:"/franzininho-wifi/exemplos-micropython/primeiros-passos",description:"Aprenda como gravar o MicroPython na Franzininho WiFi usando a ferramenta Franzininho - ESP Web Tools e explore projetos com o Thonny IDE.",author:"Sthefania Fernandes"},sidebar:"docs",previous:{title:"Leitura DHT11",permalink:"/docs/franzininho-wifi/exemplos-arduino/dht11"},next:{title:"Entradas e sa\xeddas digitais",permalink:"/docs/franzininho-wifi/exemplos-micropython/entradas-saidas-digitais"}},c={},d=[{value:"Gravando o MicroPython na Franzininho WiFi",id:"gravando-o-micropython-na-franzininho-wifi",level:2},{value:"Apresentando o Thonny IDE",id:"apresentando-o-thonny-ide",level:2}];function h(o){const n={a:"a",h2:"h2",img:"img",li:"li",ol:"ol",p:"p",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,i.M)(),...o.components};return(0,e.jsxs)(e.Fragment,{children:[(0,e.jsx)(n.p,{children:"A Franzininho WIFI \xe9 uma placa de desenvolvimento de hardware de c\xf3digo aberto, baseada no ESP32-S2 e criada no Brasil. A sua finalidade principal \xe9 tornar o desenvolvimento de projetos eletr\xf4nicos mais acess\xedvel a makers, entusiastas e desenvolvedores brasileiros."}),"\n",(0,e.jsx)(n.p,{children:"A placa pode ser programada de v\xe1rias maneiras, adequando-se tanto a iniciantes quanto a desenvolvedores experientes."}),"\n",(0,e.jsx)(n.p,{children:"A Franzininho WiFi pode ser programada de diversas formas, entre elas as mais comuns s\xe3o:"}),"\n",(0,e.jsxs)(n.ul,{children:["\n",(0,e.jsxs)(n.li,{children:["ESP-IDF, Arduino, CircuitPython e ",(0,e.jsx)(n.strong,{children:"MicroPython"})]}),"\n"]}),"\n",(0,e.jsx)(n.p,{children:"A Franzininho WiFi LAB01 \xe9 uma placa de expans\xe3o para a placa Franzininho WiFi, com a proposta de ser um laborat\xf3rio para auxiliar no ensino e aprendizagem do ESP32, baseada na Franzininho WiFi. Ela vem com diversos recursos onboard que facilitam o desenvolvimento de atividades e experi\xeancias."}),"\n",(0,e.jsxs)(n.p,{children:["Nessa s\xe9rie de artigos, vamos explorar a programa\xe7\xe3o em MicroPython com a Franzininho WiFi LAB01. Primeiramente, \xe9 preciso entender que o ",(0,e.jsx)(n.a,{href:"https://micropython.org/",children:"MicroPython"})," \xe9 uma implementa\xe7\xe3o completa da linguagem Python 3 para rodar em hardware embarcado."]}),"\n",(0,e.jsxs)(n.p,{children:["Assim, para poder programar a sua placa Franzininho WiFi com MicroPython \xe9 preciso, primeiro, gravar o firmware do MicroPython nela. Para facilitar a instala\xe7\xe3o do MicroPython, vamos usar a ferramenta de grava\xe7\xe3o atrav\xe9s do browser, criada pela comunidade Franzininho: ",(0,e.jsx)(n.a,{href:"https://franzininho.github.io/franzininho-webesptools/#",children:"franzininho.github.io"})," (funciona no Chrome e similares). Aproveitamos para agradecer ao Ewerton Sousa pela contribui\xe7\xe3o com essa ferramenta."]}),"\n",(0,e.jsx)(n.p,{children:"A seguir apresentamos os passos para grava\xe7\xe3o do MicroPython na Franzininho WiFI e a IDE que usaremos nessa serie de artigos."}),"\n",(0,e.jsx)(n.h2,{id:"gravando-o-micropython-na-franzininho-wifi",children:"Gravando o MicroPython na Franzininho WiFi"}),"\n",(0,e.jsxs)(n.p,{children:["Acesse a ferramenta ",(0,e.jsx)(n.a,{href:"https://franzininho.github.io/franzininho-webesptools/#",children:"Franzininho \u2013 ESP Web Tools"}),". Com essa ferramenta \xe9 poss\xedvel obter o firmware n\xe3o somente o firmware do Micropython, mas tamb\xe9m das outras ferramentas de software que a placa suporta. Ent\xe3o, atente-se para selecionar a aba do MicroPython, conforme exibido abaixo:"]}),"\n",(0,e.jsx)(n.p,{children:(0,e.jsx)(n.img,{alt:"Ferramenta de Grava\xe7\xe3o",src:a(3104).c+"",width:"1844",height:"529"})}),"\n",(0,e.jsx)(n.p,{children:"Seguindo o tutorial, comece conectando sua placa Franzininho a uma das portas USB de seu computador. Em seguida coloque sua placa em modo DFU que significa executar os seguintes passos:"}),"\n",(0,e.jsxs)(n.ol,{children:["\n",(0,e.jsx)(n.li,{children:"Pressione e segure o bot\xe3o boot;"}),"\n",(0,e.jsx)(n.li,{children:"Pressione o bot\xe3o reset;"}),"\n",(0,e.jsx)(n.li,{children:"Ap\xf3s soltar o reset solte o boot."}),"\n"]}),"\n",(0,e.jsx)(n.p,{children:(0,e.jsx)(n.img,{alt:"Franzininho WiFI",src:a(63020).c+"",width:"848",height:"438"})}),"\n",(0,e.jsxs)(n.p,{children:["Feito isso, clique no bot\xe3o Conectar do site ",(0,e.jsx)(n.a,{href:"https://franzininho.github.io/franzininho-webesptools/#",children:"franzininho.github.io"}),", selecione a placa e clique em conectar:"]}),"\n",(0,e.jsx)(n.p,{children:(0,e.jsx)(n.img,{alt:"Conectando a placa a ferramenta",src:a(52636).c+"",width:"778",height:"651"})}),"\n",(0,e.jsx)(n.p,{children:"Com a placa conectada, clique em instalar MicroPython:"}),"\n",(0,e.jsx)(n.p,{children:(0,e.jsx)(n.img,{alt:"Intale o MicroPython",src:a(44616).c+"",width:"523",height:"242"})}),"\n",(0,e.jsx)(n.p,{children:"Selecione a op\xe7\xe3o apagar dispositivo:"}),"\n",(0,e.jsx)(n.p,{children:(0,e.jsx)(n.img,{alt:"Apagar dispositivo",src:a(22580).c+"",width:"528",height:"392"})}),"\n",(0,e.jsx)(n.p,{children:"Clique em instalar e aguarde finalizar a instala\xe7\xe3o (mantenha a p\xe1gina aberta at\xe9 o final da instala\xe7\xe3o):"}),"\n",(0,e.jsx)(n.p,{children:(0,e.jsx)(n.img,{alt:"Instalando o MicroPython",src:a(16344).c+"",width:"532",height:"355"})}),"\n",(0,e.jsx)(n.p,{children:(0,e.jsx)(n.img,{alt:"Instalando o MicroPython",src:a(1884).c+"",width:"591",height:"448"})}),"\n",(0,e.jsx)(n.p,{children:"Uma vez instalado clique novamente no bot\xe3o de reset para iniciar o MicroPython."}),"\n",(0,e.jsx)(n.p,{children:"Tudo pronto, agora \xe9 poss\xedvel programar sua Franzininho WiFi LAB01 com MicroPython."}),"\n",(0,e.jsxs)(n.p,{children:[(0,e.jsx)(n.strong,{children:"Observa\xe7\xe3o"}),": Quando voc\xea colocar a placa em modo DFU, o buzzer pode ser ativado, o que pode causar ru\xeddo indesejado. Para evitar isso, desconecte o jumper do buzzer (IO17), que \xe9 o primeiro da esquerda para a direita."]}),"\n",(0,e.jsx)(n.h2,{id:"apresentando-o-thonny-ide",children:"Apresentando o Thonny IDE"}),"\n",(0,e.jsx)(n.p,{children:"O Thonny \xe9 um IDE popular para Python e MicroPython e \xe9 o que recomendamos para a programa\xe7\xe3o da Franzininho WiFi."}),"\n",(0,e.jsxs)(n.p,{children:["Para realizar o download, basta visitar o site ",(0,e.jsx)(n.a,{href:"https://thonny.org/",children:"thonny.org"})," e selecionar o link de download localizado no topo da p\xe1gina, conforme o seu sistema operacional."]}),"\n",(0,e.jsx)(n.p,{children:"Em seguida, inicie o Thonny enquanto a placa ainda estiver conectada via USB. Na parte inferior direita, selecione a op\xe7\xe3o MicroPython (ESP32). Desta forma, o Thonny ir\xe1 detectar automaticamente a Franzininho WiFi."}),"\n",(0,e.jsx)(n.p,{children:(0,e.jsx)(n.img,{alt:"MicroPython Conectado",src:a(12e3).c+"",width:"1659",height:"251"})}),"\n",(0,e.jsx)(n.p,{children:"Agora tudo est\xe1 pronto para iniciar seus projetos com MicroPython na Franzininho WiFi."}),"\n",(0,e.jsxs)(n.table,{children:[(0,e.jsx)(n.thead,{children:(0,e.jsxs)(n.tr,{children:[(0,e.jsx)(n.th,{children:"Autor"}),(0,e.jsx)(n.th,{children:"Sthefania Fernandes"})]})}),(0,e.jsx)(n.tbody,{children:(0,e.jsxs)(n.tr,{children:[(0,e.jsx)(n.td,{children:"Data:"}),(0,e.jsx)(n.td,{children:"10/11/2023"})]})})]})]})}function p(o={}){const{wrapper:n}={...(0,i.M)(),...o.components};return n?(0,e.jsx)(n,{...o,children:(0,e.jsx)(h,{...o})}):h(o)}},3104:(o,n,a)=>{a.d(n,{c:()=>e});const e=a.p+"assets/images/1-6d88a07fe7b4d086c5c1e919543bde1f.png"},63020:(o,n,a)=>{a.d(n,{c:()=>e});const e=a.p+"assets/images/2-4ff442ba4ad188b9e12f85f62f5651e5.png"},52636:(o,n,a)=>{a.d(n,{c:()=>e});const e=a.p+"assets/images/3-85a7b0152873fb9d9f399f85282c2978.png"},44616:(o,n,a)=>{a.d(n,{c:()=>e});const e=a.p+"assets/images/4-f656418f67a602f10d2a5413fbc17693.png"},22580:(o,n,a)=>{a.d(n,{c:()=>e});const e=a.p+"assets/images/5-6365593b93164509a613351e73fe8bd3.png"},16344:(o,n,a)=>{a.d(n,{c:()=>e});const e=a.p+"assets/images/6-8f46bd568b85b06a3ef67a3e4bf9608f.png"},1884:(o,n,a)=>{a.d(n,{c:()=>e});const e=a.p+"assets/images/7-b365425ef64b1bf55dcbf8492f02b523.png"},12e3:(o,n,a)=>{a.d(n,{c:()=>e});const e=a.p+"assets/images/8-e065f7a020356536e7b2097f799041a2.png"},4552:(o,n,a)=>{a.d(n,{I:()=>t,M:()=>s});var e=a(11504);const i={},r=e.createContext(i);function s(o){const n=e.useContext(r);return e.useMemo((function(){return"function"==typeof o?o(n):{...n,...o}}),[n,o])}function t(o){let n;return n=o.disableParentContext?"function"==typeof o.components?o.components(i):o.components||i:s(o.components),e.createElement(r.Provider,{value:n},o.children)}}}]); \ No newline at end of file diff --git a/assets/js/e626e7d8.a5909750.js b/assets/js/e626e7d8.a5909750.js new file mode 100755 index 000000000..b9a56d4d0 --- /dev/null +++ b/assets/js/e626e7d8.a5909750.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkFranzininho=self.webpackChunkFranzininho||[]).push([[4664],{59432:(e,x,i)=>{i.r(x),i.d(x,{assets:()=>r,contentTitle:()=>o,default:()=>t,frontMatter:()=>n,metadata:()=>f,toc:()=>d});var a=i(17624),s=i(4552);const n={id:"micropython-display-oled",title:"Display OLED",slug:"/franzininho-wifi/exemplos-micropython/display-oled",description:"Descubra como aproveitar ao m\xe1ximo o display OLED SSD1306 da Franzininho WiFi Lab01 neste artigo!",author:"Sthefania Fernandes"},o=void 0,f={id:"FranzininhoWifi/exemplos-micropython/micropython-display-oled",title:"Display OLED",description:"Descubra como aproveitar ao m\xe1ximo o display OLED SSD1306 da Franzininho WiFi Lab01 neste artigo!",source:"@site/docs/FranzininhoWifi/exemplos-micropython/display-oled.md",sourceDirName:"FranzininhoWifi/exemplos-micropython",slug:"/franzininho-wifi/exemplos-micropython/display-oled",permalink:"/docs/franzininho-wifi/exemplos-micropython/display-oled",draft:!1,unlisted:!1,editUrl:"https://github.com/Franzininho/docs-franzininho-site/edit/main/docs/FranzininhoWifi/exemplos-micropython/display-oled.md",tags:[],version:"current",frontMatter:{id:"micropython-display-oled",title:"Display OLED",slug:"/franzininho-wifi/exemplos-micropython/display-oled",description:"Descubra como aproveitar ao m\xe1ximo o display OLED SSD1306 da Franzininho WiFi Lab01 neste artigo!",author:"Sthefania Fernandes"},sidebar:"docs",previous:{title:"Timers",permalink:"/docs/franzininho-wifi/exemplos-micropython/timers"},next:{title:"Placa Franzininho WiFi dev Edition",permalink:"/docs/franzininho-wifi/franzininho-wifi-dev-edition"}},r={},d=[{value:"Introdu\xe7\xe3o",id:"introdu\xe7\xe3o",level:2},{value:"Display OLED SSD1306",id:"display-oled-ssd1306",level:2},{value:"Recursos necess\xe1rios",id:"recursos-necess\xe1rios",level:2},{value:"Upload da biblioteca OLED com o Thonny IDE",id:"upload-da-biblioteca-oled-com-o-thonny-ide",level:3},{value:"C\xf3digo",id:"c\xf3digo",level:2},{value:"Hello, world no Display",id:"hello-world-no-display",level:3},{value:"Exibindo uma imagem no display",id:"exibindo-uma-imagem-no-display",level:3},{value:"Conclus\xe3o",id:"conclus\xe3o",level:2}];function l(e){const x={a:"a",code:"code",h2:"h2",h3:"h3",img:"img",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,s.M)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(x.h2,{id:"introdu\xe7\xe3o",children:"Introdu\xe7\xe3o"}),"\n",(0,a.jsx)(x.p,{children:"Um valioso aliado das placas de desenvolvimento s\xe3o os displays: eles permitem que voc\xea visualize dados e oferecem um feedback imediato (sem a necessidade de monitores de computador), al\xe9m de viabilizar a cria\xe7\xe3o de interfaces de usu\xe1rio personalizadas."}),"\n",(0,a.jsx)(x.p,{children:"A Franzininho WiFi Lab01 conta com um display OLED SSD1306 e neste artigo vamos entender como aproveitar ao m\xe1ximo essa tela."}),"\n",(0,a.jsx)(x.h2,{id:"display-oled-ssd1306",children:"Display OLED SSD1306"}),"\n",(0,a.jsx)(x.p,{children:"O display OLED SSD1306 \xe9 um tipo de display de tecnologia OLED (Organic Light-Emitting Diode) que usa o controlador SSD1306. Esses displays s\xe3o conhecidos por sua alta qualidade de imagem e efici\xeancia energ\xe9tica, o que os torna populares em projetos eletr\xf4nicos DIY, dispositivos vest\xedveis, projetos de IoT e muitas outras aplica\xe7\xf5es."}),"\n",(0,a.jsx)(x.p,{children:"Diferente dos displays LCD convencionais, os displays OLED n\xe3o requerem uma fonte de luz de fundo, pois cada pixel em um display OLED emite sua pr\xf3pria luz. Isso resulta em n\xedveis de contraste mais elevados, cores mais vibrantes e um \xe2ngulo de vis\xe3o amplo."}),"\n",(0,a.jsx)(x.p,{children:"Caracter\xedsticas do display SSD1306:"}),"\n",(0,a.jsxs)(x.ul,{children:["\n",(0,a.jsxs)(x.li,{children:[(0,a.jsx)(x.strong,{children:"Resolu\xe7\xe3o"}),": 128\xd764, 128\xd732 ou 96\xd716 pixels."]}),"\n",(0,a.jsxs)(x.li,{children:[(0,a.jsx)(x.strong,{children:"Comunica\xe7\xe3o"}),": I2C ou SPI"]}),"\n",(0,a.jsxs)(x.li,{children:[(0,a.jsx)(x.strong,{children:"Alimenta\xe7\xe3o"}),": 3,3V ou 5V"]}),"\n",(0,a.jsx)(x.li,{children:"Suporte a diversas linguagens de programa\xe7\xe3o"}),"\n"]}),"\n",(0,a.jsx)(x.p,{children:(0,a.jsx)(x.img,{src:i(60544).c+"",width:"250",height:"189"})}),"\n",(0,a.jsx)(x.p,{children:"Figura 1 \u2013 Display OLED SSD1306"}),"\n",(0,a.jsx)(x.h2,{id:"recursos-necess\xe1rios",children:"Recursos necess\xe1rios"}),"\n",(0,a.jsx)(x.p,{children:"Para iniciar o trabalho com os GPIOs, \xe9 essencial possuir o diagrama de pinos da placa \xe0 disposi\xe7\xe3o, pois isso vai permitir que voc\xea identifique tanto os nomes quanto as fun\xe7\xf5es associadas a cada um deles."}),"\n",(0,a.jsxs)(x.table,{children:[(0,a.jsx)(x.thead,{children:(0,a.jsxs)(x.tr,{children:[(0,a.jsx)(x.th,{children:"Pino"}),(0,a.jsx)(x.th,{children:"Recurso"})]})}),(0,a.jsxs)(x.tbody,{children:[(0,a.jsxs)(x.tr,{children:[(0,a.jsx)(x.td,{children:"IO1"}),(0,a.jsx)(x.td,{children:"LDR"})]}),(0,a.jsxs)(x.tr,{children:[(0,a.jsx)(x.td,{children:"IO2"}),(0,a.jsx)(x.td,{children:"BT6"})]}),(0,a.jsxs)(x.tr,{children:[(0,a.jsx)(x.td,{children:"IO3"}),(0,a.jsx)(x.td,{children:"BT5"})]}),(0,a.jsxs)(x.tr,{children:[(0,a.jsx)(x.td,{children:"IO4"}),(0,a.jsx)(x.td,{children:"BT4"})]}),(0,a.jsxs)(x.tr,{children:[(0,a.jsx)(x.td,{children:"IO5"}),(0,a.jsx)(x.td,{children:"BT3"})]}),(0,a.jsxs)(x.tr,{children:[(0,a.jsx)(x.td,{children:"IO6"}),(0,a.jsx)(x.td,{children:"BT2"})]}),(0,a.jsxs)(x.tr,{children:[(0,a.jsx)(x.td,{children:"IO7"}),(0,a.jsx)(x.td,{children:"BT1"})]}),(0,a.jsxs)(x.tr,{children:[(0,a.jsx)(x.td,{children:"IO8"}),(0,a.jsx)(x.td,{children:"OLED_SDA"})]}),(0,a.jsxs)(x.tr,{children:[(0,a.jsx)(x.td,{children:"IO9"}),(0,a.jsx)(x.td,{children:"OLED_SCL"})]}),(0,a.jsxs)(x.tr,{children:[(0,a.jsx)(x.td,{children:"IO10"}),(0,a.jsx)(x.td,{children:"TFT_DC"})]}),(0,a.jsxs)(x.tr,{children:[(0,a.jsx)(x.td,{children:"IO11"}),(0,a.jsx)(x.td,{children:"TFT_RES"})]}),(0,a.jsxs)(x.tr,{children:[(0,a.jsx)(x.td,{children:"IO12"}),(0,a.jsx)(x.td,{children:"LED AZUL"})]}),(0,a.jsxs)(x.tr,{children:[(0,a.jsx)(x.td,{children:"IO13"}),(0,a.jsx)(x.td,{children:"LED VERDE"})]}),(0,a.jsxs)(x.tr,{children:[(0,a.jsx)(x.td,{children:"IO14"}),(0,a.jsx)(x.td,{children:"LED VERMELHO"})]}),(0,a.jsxs)(x.tr,{children:[(0,a.jsx)(x.td,{children:"IO15"}),(0,a.jsx)(x.td,{children:"DHT11"})]}),(0,a.jsxs)(x.tr,{children:[(0,a.jsx)(x.td,{children:"IO17"}),(0,a.jsx)(x.td,{children:"BUZZER"})]}),(0,a.jsxs)(x.tr,{children:[(0,a.jsx)(x.td,{children:"IO35"}),(0,a.jsx)(x.td,{children:"TFT_SDA"})]}),(0,a.jsxs)(x.tr,{children:[(0,a.jsx)(x.td,{children:"IO36"}),(0,a.jsx)(x.td,{children:"TFT_SCL"})]})]})]}),"\n",(0,a.jsx)(x.p,{children:"Tabela 1 \u2013 Franzininho WiFi Lab01 pinout"}),"\n",(0,a.jsx)(x.h3,{id:"upload-da-biblioteca-oled-com-o-thonny-ide",children:"Upload da biblioteca OLED com o Thonny IDE"}),"\n",(0,a.jsx)(x.p,{children:"A biblioteca para escrever no display OLED n\xe3o faz parte da biblioteca padr\xe3o do MicroPython. Portanto, voc\xea precisa fazer o upload da biblioteca na sua placa Franzininho WiFi para poder utiliz\xe1-la."}),"\n",(0,a.jsx)(x.p,{children:"Para adicionar a biblioteca usando o Thonny IDE, siga os passos abaixo:"}),"\n",(0,a.jsxs)(x.ol,{children:["\n",(0,a.jsx)(x.li,{children:"Crie um novo arquivo no Thonny e copie o c\xf3digo da biblioteca:"}),"\n"]}),"\n",(0,a.jsx)(x.pre,{children:(0,a.jsx)(x.code,{className:"language-python",children:"#MicroPython SSD1306 OLED driver, I2C and SPI interfaces created by Adafruit\n\nimport time\nimport framebuf\n\n# register definitions\nSET_CONTRAST = const(0x81)\nSET_ENTIRE_ON = const(0xa4)\nSET_NORM_INV = const(0xa6)\nSET_DISP = const(0xae)\nSET_MEM_ADDR = const(0x20)\nSET_COL_ADDR = const(0x21)\nSET_PAGE_ADDR = const(0x22)\nSET_DISP_START_LINE = const(0x40)\nSET_SEG_REMAP = const(0xa0)\nSET_MUX_RATIO = const(0xa8)\nSET_COM_OUT_DIR = const(0xc0)\nSET_DISP_OFFSET = const(0xd3)\nSET_COM_PIN_CFG = const(0xda)\nSET_DISP_CLK_DIV = const(0xd5)\nSET_PRECHARGE = const(0xd9)\nSET_VCOM_DESEL = const(0xdb)\nSET_CHARGE_PUMP = const(0x8d)\n\n\nclass SSD1306:\n def __init__(self, width, height, external_vcc):\n self.width = width\n self.height = height\n self.external_vcc = external_vcc\n self.pages = self.height // 8\n # Note the subclass must initialize self.framebuf to a framebuffer.\n # This is necessary because the underlying data buffer is different\n # between I2C and SPI implementations (I2C needs an extra byte).\n self.poweron()\n self.init_display()\n\n def init_display(self):\n for cmd in (\n SET_DISP | 0x00, # off\n # address setting\n SET_MEM_ADDR, 0x00, # horizontal\n # resolution and layout\n SET_DISP_START_LINE | 0x00,\n SET_SEG_REMAP | 0x01, # column addr 127 mapped to SEG0\n SET_MUX_RATIO, self.height - 1,\n SET_COM_OUT_DIR | 0x08, # scan from COM[N] to COM0\n SET_DISP_OFFSET, 0x00,\n SET_COM_PIN_CFG, 0x02 if self.height == 32 else 0x12,\n # timing and driving scheme\n SET_DISP_CLK_DIV, 0x80,\n SET_PRECHARGE, 0x22 if self.external_vcc else 0xf1,\n SET_VCOM_DESEL, 0x30, # 0.83*Vcc\n # display\n SET_CONTRAST, 0xff, # maximum\n SET_ENTIRE_ON, # output follows RAM contents\n SET_NORM_INV, # not inverted\n # charge pump\n SET_CHARGE_PUMP, 0x10 if self.external_vcc else 0x14,\n SET_DISP | 0x01): # on\n self.write_cmd(cmd)\n self.fill(0)\n self.show()\n\n def poweroff(self):\n self.write_cmd(SET_DISP | 0x00)\n\n def contrast(self, contrast):\n self.write_cmd(SET_CONTRAST)\n self.write_cmd(contrast)\n\n def invert(self, invert):\n self.write_cmd(SET_NORM_INV | (invert & 1))\n\n def show(self):\n x0 = 0\n x1 = self.width - 1\n if self.width == 64:\n # displays with width of 64 pixels are shifted by 32\n x0 += 32\n x1 += 32\n self.write_cmd(SET_COL_ADDR)\n self.write_cmd(x0)\n self.write_cmd(x1)\n self.write_cmd(SET_PAGE_ADDR)\n self.write_cmd(0)\n self.write_cmd(self.pages - 1)\n self.write_framebuf()\n\n def fill(self, col):\n self.framebuf.fill(col)\n\n def pixel(self, x, y, col):\n self.framebuf.pixel(x, y, col)\n\n def scroll(self, dx, dy):\n self.framebuf.scroll(dx, dy)\n\n def text(self, string, x, y, col=1):\n self.framebuf.text(string, x, y, col)\n\n\nclass SSD1306_I2C(SSD1306):\n def __init__(self, width, height, i2c, addr=0x3c, external_vcc=False):\n self.i2c = i2c\n self.addr = addr\n self.temp = bytearray(2)\n # Add an extra byte to the data buffer to hold an I2C data/command byte\n # to use hardware-compatible I2C transactions. A memoryview of the\n # buffer is used to mask this byte from the framebuffer operations\n # (without a major memory hit as memoryview doesn't copy to a separate\n # buffer).\n self.buffer = bytearray(((height // 8) * width) + 1)\n self.buffer[0] = 0x40 # Set first byte of data buffer to Co=0, D/C=1\n self.framebuf = framebuf.FrameBuffer1(memoryview(self.buffer)[1:], width, height)\n super().__init__(width, height, external_vcc)\n\n def write_cmd(self, cmd):\n self.temp[0] = 0x80 # Co=1, D/C#=0\n self.temp[1] = cmd\n self.i2c.writeto(self.addr, self.temp)\n\n def write_framebuf(self):\n # Blast out the frame buffer using a single I2C transaction to support\n # hardware I2C interfaces.\n self.i2c.writeto(self.addr, self.buffer)\n\n def poweron(self):\n pass\n\n\nclass SSD1306_SPI(SSD1306):\n def __init__(self, width, height, spi, dc, res, cs, external_vcc=False):\n self.rate = 10 * 1024 * 1024\n dc.init(dc.OUT, value=0)\n res.init(res.OUT, value=0)\n cs.init(cs.OUT, value=1)\n self.spi = spi\n self.dc = dc\n self.res = res\n self.cs = cs\n self.buffer = bytearray((height // 8) * width)\n self.framebuf = framebuf.FrameBuffer1(self.buffer, width, height)\n super().__init__(width, height, external_vcc)\n\n def write_cmd(self, cmd):\n self.spi.init(baudrate=self.rate, polarity=0, phase=0)\n self.cs.high()\n self.dc.low()\n self.cs.low()\n self.spi.write(bytearray([cmd]))\n self.cs.high()\n\n def write_framebuf(self):\n self.spi.init(baudrate=self.rate, polarity=0, phase=0)\n self.cs.high()\n self.dc.high()\n self.cs.low()\n self.spi.write(self.buffer)\n self.cs.high()\n\n def poweron(self):\n self.res.high()\n time.sleep_ms(1)\n self.res.low()\n time.sleep_ms(10)\n self.res.high()\n"})}),"\n",(0,a.jsxs)(x.ol,{start:"2",children:["\n",(0,a.jsx)(x.li,{children:"Acesse Arquivo > Salvar como e selecione o dispositivo MicroPython."}),"\n"]}),"\n",(0,a.jsx)(x.p,{children:(0,a.jsx)(x.img,{src:i(46208).c+"",width:"318",height:"239"})}),"\n",(0,a.jsxs)(x.ol,{children:["\n",(0,a.jsx)(x.li,{children:"Nomeie o arquivo como \u201cssd1306.py\u201d e clique em OK para salv\xe1-lo na placa."}),"\n"]}),"\n",(0,a.jsx)(x.p,{children:"E \xe9 apenas isso, a biblioteca foi carregada na sua placa. Agora, voc\xea pode usar suas funcionalidades no seu c\xf3digo, importando a biblioteca."}),"\n",(0,a.jsx)(x.h2,{id:"c\xf3digo",children:"C\xf3digo"}),"\n",(0,a.jsx)(x.h3,{id:"hello-world-no-display",children:"Hello, world no Display"}),"\n",(0,a.jsx)(x.p,{children:"Com a Franzininho WiFi conectada ao seu computador, abra o Thonny e crie um novo arquivo contendo o c\xf3digo a seguir:"}),"\n",(0,a.jsx)(x.pre,{children:(0,a.jsx)(x.code,{className:"language-python",children:"from machine import Pin, SoftI2C\nimport ssd1306\n\n# atribui\xe7\xe3o de pinos da Franzininho\ni2c = SoftI2C(scl=Pin(9), sda=Pin(8))\n\n# configurando display\noled_width = 128\noled_height = 64\noled = ssd1306.SSD1306_I2C(oled_width, oled_height, i2c)\n\n# exibi\xe7\xe3o no display\noled.text('Hello, World 1!', 0, 0)\noled.text('Hello, World 2!', 0, 20)\noled.text('Hello, World 3!', 0, 40)\n \noled.show()\n"})}),"\n",(0,a.jsxs)(x.p,{children:["Vamos come\xe7ar o c\xf3digo com ",(0,a.jsx)(x.code,{children:"from machine import Pin, SoftI2C"}),". Para poder ser acessado os pinos da placa e utilizar a comunica\xe7\xe3o I2C para configurar o display. Al\xe9m disso, importe a biblioteca \u201cssd1306\u201d que foi previamente instalada na sua placa."]}),"\n",(0,a.jsx)(x.p,{children:"Conforme a tabela de pinagem, os pinos SCL e SDA do OLED s\xe3o os pinos 9 e 8, respectivamente. Assim, o I2C \xe9 configurado. Em seguida, definimos a largura e altura do display, que no caso s\xe3o 128\xd764."}),"\n",(0,a.jsx)(x.p,{children:"Com todas essas informa\xe7\xf5es, crie uma vari\xe1vel chamada \u2018oled\u2019 para controlar o display. Esta vari\xe1vel recebe a largura e altura do OLED, bem como os pinos I2C que definimos anteriormente."}),"\n",(0,a.jsx)(x.p,{children:"Ap\xf3s inicializar o display OLED, voc\xea s\xf3 precisa usar a fun\xe7\xe3o text() no \u2018oled\u2019 para escrever texto. A fun\xe7\xe3o text() aceita os seguintes argumentos, respectivamente:"}),"\n",(0,a.jsxs)(x.ul,{children:["\n",(0,a.jsxs)(x.li,{children:[(0,a.jsx)(x.strong,{children:"Mensagem"}),": deve ser do tipo String."]}),"\n",(0,a.jsxs)(x.li,{children:[(0,a.jsx)(x.strong,{children:"Posi\xe7\xe3o X"}),": onde o texto come\xe7a horizontalmente."]}),"\n",(0,a.jsxs)(x.li,{children:[(0,a.jsx)(x.strong,{children:"Posi\xe7\xe3o Y"}),": onde o texto \xe9 exibido verticalmente."]}),"\n",(0,a.jsxs)(x.li,{children:[(0,a.jsx)(x.strong,{children:"Cor do texto"}),": pode ser preto ou branco. Este par\xe2metro \xe9 opcional e por padr\xe3o a cor \xe9 branca.","\n",(0,a.jsxs)(x.ul,{children:["\n",(0,a.jsx)(x.li,{children:"0 = preto"}),"\n",(0,a.jsx)(x.li,{children:"1 = branco\u201d"}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,a.jsx)(x.p,{children:"No exemplo, estamos exibindo tr\xeas strings, todas come\xe7ando na coordenada x=0 e variando o valor em y, o que faz com que cada frase seja escrita em uma linha abaixo da anterior."}),"\n",(0,a.jsx)(x.p,{children:"Ap\xf3s as chamadas da fun\xe7\xe3o text(), \xe9 necess\xe1rio chamar a fun\xe7\xe3o show() para atualizar o OLED. A sa\xedda do display \xe9 a mostrada na abaixo:"}),"\n",(0,a.jsx)(x.p,{children:(0,a.jsx)(x.img,{src:i(53402).c+"",width:"1600",height:"1200"})}),"\n",(0,a.jsx)(x.p,{children:"Figura 2 \u2013 Sa\xedda do texto no display."}),"\n",(0,a.jsx)(x.h3,{id:"exibindo-uma-imagem-no-display",children:"Exibindo uma imagem no display"}),"\n",(0,a.jsx)(x.p,{children:"Neste exemplo, veremos como exibir uma imagem (bitmap) no Display OLED SSD1306. Para isso, recomendo procurar por \u2018arte em pixel\u2019, pois \xe9 mais f\xe1cil de exibir no display. Voc\xea tamb\xe9m pode criar suas pr\xf3prias imagens usando software de edi\xe7\xe3o de fotos como o Adobe Photoshop, Gimp ou outro que suporte arte em pixel."}),"\n",(0,a.jsx)(x.p,{children:"\xc9 importante ressaltar que ao usar um display OLED SSD1306, algumas considera\xe7\xf5es s\xe3o essenciais. A imagem que voc\xea deseja exibir deve ter as seguintes caracter\xedsticas:"}),"\n",(0,a.jsxs)(x.ul,{children:["\n",(0,a.jsxs)(x.li,{children:[(0,a.jsx)(x.strong,{children:"Tamanho Compat\xedvel"}),": A imagem deve ter um tamanho igual ou menor do que a resolu\xe7\xe3o do display OLED SSD1306, no caso 128\xd764 pixels."]}),"\n",(0,a.jsxs)(x.li,{children:[(0,a.jsx)(x.strong,{children:"Escala de Cinza ou Monocrom\xe1tica"}),": O display OLED SSD1306 \xe9 monocrom\xe1tico, o que significa que ele s\xf3 pode exibir imagens em preto e branco (1 bit por pixel) ou, em alguns casos, em escala de cinza limitada. Portanto, a imagem deve estar na escala de cinza ou ser monocrom\xe1tica."]}),"\n"]}),"\n",(0,a.jsxs)(x.p,{children:["Entretanto, a imagem n\xe3o pode ser diretamente inserida no display, \xe9 necess\xe1rio converter o formato da imagem bitmap em c\xf3digo. Uma solu\xe7\xe3o pr\xe1tica para realizar essa convers\xe3o \xe9 usar o ",(0,a.jsx)(x.a,{href:"https://luckyresistor.me/applications/micropython-bitmap-tool/#0-user-interface",children:"Lucky Resistor"}),", uma ferramenta de software que converte diversos formatos de imagens bitmap em c\xf3digo para incorporar facilmente no seu projeto em MicroPython."]}),"\n",(0,a.jsx)(x.p,{children:"Assim, com a Franzininho WiFi Lab01 conectada ao seu computador, abra o Thonny e crie um novo arquivo contendo o c\xf3digo a seguir:"}),"\n",(0,a.jsx)(x.pre,{children:(0,a.jsx)(x.code,{className:"language-python",children:"from machine import Pin, SoftI2C\nimport ssd1306\nimport framebuf\n\n# Franzininho Pin assignment\ni2c = SoftI2C(scl=Pin(9), sda=Pin(8))\n\noled_width = 128 # Largura da tela OLED\noled_height = 64 # Altura da tela OLED\noled = ssd1306.SSD1306_I2C(oled_width, oled_height, i2c)\n\nluffy_image = bytearray(b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\xff\\xff\\xff\\xff\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\xff\\xff\\xff\\xff\\xff\\xff\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\xff\\xff\\xff\\xff\\xff\\xff\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\xff\\xff\\xff\\xff\\xf0\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\xff\\xff\\xff\\xff\\xf0\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x0f\\xff\\xff\\xff\\x00\\x00\\xff\\xff\\xff\\x00\\x00\\x00\\x00\\x00\\x00\\x0f\\xff\\xff\\xff\\xff\\xff\\xff\\x00\\xff\\xff\\x00\\x00\\x00\\x00\\x00\\x00\\x0f\\xff\\xff\\xff\\xff\\xff\\xff\\x00\\xff\\xff\\x00\\x00\\x00\\x00\\x00\\x00\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\x00\\xff\\xf0\\x00\\x00\\x00\\x00\\x00\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\x00\\xff\\xf0\\x00\\x00\\x00\\x00\\x0f\\xff\\xff\\xf0\\x00\\x0f\\xff\\xff\\xff\\xff\\x00\\xf0\\x00\\x00\\x00\\x00\\x0f\\xff\\xf0\\x00\\x00\\x00\\x00\\xff\\xff\\xff\\xff\\x00\\x00\\x00\\x00\\x00\\x0f\\xff\\xf0\\x00\\x00\\x00\\x00\\xff\\xff\\xff\\xff\\x00\\x00\\x00\\x00\\x00\\x00\\xff\\x00\\x00\\x00\\xf0\\x00\\x00\\x0f\\xff\\xff\\xf0\\x00\\x00\\x00\\x00\\x00\\xff\\x00\\x00\\x00\\xf0\\x00\\x00\\x0f\\xff\\xff\\xf0\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x0f\\xff\\x00\\x00\\x00\\x0f\\xff\\xff\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x0f\\xff\\x00\\x00\\x00\\x0f\\xff\\xff\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\xff\\xff\\xf0\\x00\\x00\\x00\\xff\\xff\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\xff\\xff\\xf0\\x00\\x00\\x00\\x0f\\xff\\xf0\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\xff\\xff\\xf0\\x00\\x00\\x00\\x0f\\xff\\xf0\\x00\\x00\\x00\\x00\\x00\\x0f\\x0f\\xff\\xff\\x0f\\x00\\x00\\x00\\x0f\\xff\\xf0\\x00\\x00\\x00\\x00\\x00\\x0f\\x0f\\xff\\xff\\x0f\\x00\\x00\\x00\\x0f\\xff\\xf0\\x00\\x00\\x00\\x00\\x00\\x0f\\xf0\\xff\\xff\\xf0\\xf0\\x00\\x00\\x00\\xff\\xf0\\x00\\x00\\x00\\x00\\x00\\x0f\\x00\\xff\\xff\\x00\\xf0\\xf0\\x00\\x0f\\x0f\\xf0\\x00\\x00\\x00\\x00\\x00\\x0f\\x00\\xff\\xff\\x00\\xf0\\xf0\\x00\\x0f\\x0f\\xf0\\x00\\x00\\x00\\x00\\x00\\x0f\\xff\\xff\\xff\\xff\\xff\\xf0\\xf0\\x0f\\xff\\x00\\x00\\x00\\x00\\x00\\x00\\x0f\\xff\\xff\\xff\\xff\\xff\\xf0\\xf0\\x0f\\xff\\x00\\x00\\x00\\x00\\x00\\x00\\x0f\\xff\\xff\\xff\\xff\\xff\\xf0\\xff\\x0f\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x0f\\xff\\xf0\\xff\\xff\\xff\\xff\\xff\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x0f\\xff\\xf0\\xff\\xff\\xff\\xff\\xff\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\xff\\xff\\xff\\xff\\xff\\xff\\xf0\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\xff\\xff\\xff\\xff\\xff\\xff\\xf0\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\xff\\xff\\xff\\xff\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\xff\\x0f\\xf0\\xf0\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\xff\\x0f\\xf0\\xf0\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x0f\\xff\\xff\\xf0\\xf0\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x0f\\xf0\\xff\\xf0\\xff\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x0f\\xf0\\xff\\xf0\\xff\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\xff\\xff\\xff\\xff\\x0f\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\xff\\xff\\xff\\xff\\x0f\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\xf0\\xff\\xf0\\xff\\xff\\x0f\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\xff\\x00\\xff\\xff\\xf0\\xff\\xff\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\xff\\x00\\xff\\xff\\xf0\\xff\\xff\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\xff\\xf0\\x00\\x00\\xff\\xff\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\xff\\xf0\\x00\\x00\\xff\\xff\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\xff\\xff\\xff\\xf0\\xff\\xf0\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x0f\\xf0\\x0f\\xf0\\xff\\xf0\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x0f\\xf0\\x0f\\xff\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x0f\\x00\\x00\\xff\\xf0\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x0f\\x00\\x00\\xff\\xf0\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\xff\\xff\\x00\\x00\\x0f\\xf0\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\xff\\xff\\x00\\x00\\x0f\\xf0\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x0f\\xff\\xff\\x00\\x00\\xff\\xf0\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\xff\\xff\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\xff\\xff\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\xff\\xff\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\xff\\xff\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00')\n\nfb = framebuf.FrameBuffer(luffy_image, 128, 64, framebuf.MONO_HLSB)\n\noled.framebuf.fill(0)\noled.framebuf.blit(fb, 8, 0)\n\noled.show()\n"})}),"\n",(0,a.jsx)(x.p,{children:"Vamos come\xe7ar com \u201cfrom machine import Pin, SoftI2C\u201d. Para poder ser acessado os pinos da placa e utilizar a comunica\xe7\xe3o I2C para configurar o display. Tamb\xe9m importe a biblioteca \u201cssd1306\u201d que foi previamente instalada na sua placa."}),"\n",(0,a.jsx)(x.p,{children:"Al\xe9m disso, o framebuf tamb\xe9m precisa ser importado. Essa biblioteca oferece recursos essenciais para controlar e manipular diretamente o display, permitindo superar as limita\xe7\xf5es da biblioteca SSD1306, que oferece apenas funcionalidades b\xe1sicas de exibi\xe7\xe3o no display OLED."}),"\n",(0,a.jsx)(x.p,{children:"De acordo com a tabela de pinagem, os pinos SCL e SDA do OLED s\xe3o os pinos 9 e 8, respectivamente. Assim, o I2C \xe9 configurado.Em seguida, definimos a largura e altura do display, que no caso s\xe3o 128\xd764."}),"\n",(0,a.jsx)(x.p,{children:"Com todas essas informa\xe7\xf5es, crie uma vari\xe1vel chamada \u2018oled\u2019 para controlar o display. Esta vari\xe1vel recebe a largura e altura do OLED, bem como os pinos I2C que definimos anteriormente."}),"\n",(0,a.jsx)(x.p,{children:"Em seguida, temos a defini\xe7\xe3o da imagem \u201cluffy_image\u201d j\xe1 convertida no formato bytearray, que \xe9 uma representa\xe7\xe3o da imagem na forma de um array de bytes, onde cada byte cont\xe9m informa\xe7\xf5es sobre os pixels da imagem."}),"\n",(0,a.jsx)(x.p,{children:"Agora \xe9 poss\xedvel configurar como a imagem ser\xe1 exibida no display. Na fun\xe7\xe3o FrameBuffer passamos a imagem, seu tamanho (largura x altura) e o formato dos pixels como \u201cMONO_HLSB\u201d, isso significa que os pixels s\xe3o monocrom\xe1ticos (preto e branco) e organizados no formato Horizontal Line Sequential Bit (HLSB). Em outras palavras, os pixels s\xe3o organizados de maneira que cada byte cont\xe9m 8 pixels horizontais adjacentes."}),"\n",(0,a.jsx)(x.p,{children:"Existem outros dois formatos em que os pixels podem ser organizados:"}),"\n",(0,a.jsxs)(x.ul,{children:["\n",(0,a.jsx)(x.li,{children:"MONO_HMSB: Horizontal Line Sequential Bit (HMSB) \xe9 semelhante ao HLSB, mas a ordem dos bits em cada byte \xe9 invertida. Esse formato \xe9 usado em alguns displays que t\xeam uma ordem espec\xedfica para os bits."}),"\n",(0,a.jsx)(x.li,{children:"MONO_VLSB: Vertical Line Sequential Bit (VLSB) \xe9 um formato em que os pixels s\xe3o organizados de maneira vertical, com cada byte contendo um \xfanico pixel por coluna, e a pr\xf3xima coluna de pixels \xe9 armazenada no byte seguinte. Esse formato \xe9 eficaz para displays que s\xe3o atualizados de maneira vertical."}),"\n"]}),"\n",(0,a.jsx)(x.p,{children:"A fun\xe7\xe3o fill() preenche o display com zeros, apagando qualquer coisa que possa estar na tela. Depois, com a opera\xe7\xe3o de \u201cblit\u201d a imagem \xe9 copiada com um deslocamento de 8 pixels horizontalmente e 0 pixels verticalmente. Isso significa que a imagem ser\xe1 exibida come\xe7ando a 8 pixels da margem esquerda do display OLED, sem mover verticalmente."}),"\n",(0,a.jsx)(x.p,{children:"Por fim, \xe9 necess\xe1rio chamar a fun\xe7\xe3o show() para atualizar o OLED. A sa\xedda do display \xe9 a mostrada na abaixo:"}),"\n",(0,a.jsx)(x.p,{children:(0,a.jsx)(x.img,{src:i(9858).c+"",width:"1600",height:"1200"})}),"\n",(0,a.jsx)(x.p,{children:"Figura 3 \u2013 Sa\xedda da imagem no display"}),"\n",(0,a.jsx)(x.h2,{id:"conclus\xe3o",children:"Conclus\xe3o"}),"\n",(0,a.jsx)(x.p,{children:"Neste artigo, exploramos como trabalhar com telas OLED na Franzininho WiFi. Desde as funcionalidades mais b\xe1sicas, como escrever texto na tela, at\xe9 a exibi\xe7\xe3o de imagens bitmap, fomos capazes de desvendar o potencial criativo e informativo dessas telas."}),"\n",(0,a.jsx)(x.p,{children:"\xc0 medida que voc\xea avan\xe7a em seus projetos com a Franzininho WiFi Lab01, lembre-se de que voc\xea tem \xe0 sua disposi\xe7\xe3o um recurso poderoso para melhorar a usabilidade de suas cria\xe7\xf5es. Aqui fica a sugest\xe3o de usar sua criatividade e criar projetos mais complexos para exibir no seu display."}),"\n",(0,a.jsxs)(x.table,{children:[(0,a.jsx)(x.thead,{children:(0,a.jsxs)(x.tr,{children:[(0,a.jsx)(x.th,{children:"Autor"}),(0,a.jsx)(x.th,{children:"Sthefania Fernandes"})]})}),(0,a.jsx)(x.tbody,{children:(0,a.jsxs)(x.tr,{children:[(0,a.jsx)(x.td,{children:"Data:"}),(0,a.jsx)(x.td,{children:"15/12/2023"})]})})]})]})}function t(e={}){const{wrapper:x}={...(0,s.M)(),...e.components};return x?(0,a.jsx)(x,{...e,children:(0,a.jsx)(l,{...e})}):l(e)}},60544:(e,x,i)=>{i.d(x,{c:()=>a});const a=i.p+"assets/images/1-display-oled-328a4e4d47631c824499cbb3a4ce29f1.webp"},46208:(e,x,i)=>{i.d(x,{c:()=>a});const a="data:image/webp;base64,UklGRnIGAABXRUJQVlA4TGYGAAAvPYE7AI/hNrZtpTq4uxPRA0XTDbF7pN9d23Br27bpnGfbrvgBSP48fdqMdGZp23Eb27aq3O/unrkCBVAL3RKTu7u76/wHAP7/fxgDjMHutEPEf/8I8UNfXref3+9HZFcAHaYqAoQIpAKQAtBQvCD/AVpHdZ5iRBC6Br9eFpu0yM+Zugg/HBoulVdVHXD6bDH/qnFQcnkdFa2BEqZecJH8eaf9xSSPnfc33BzXUw2X40u/rnmcQDYDaRs4TQco2tokJZICS5NpHbQ2rA2lJd0XEt7/7TL+CMRxUno1ov+QIElu2wxElgIIDwECct5/9HeXQrUsnYyalH3dyZh+yEJdYy34knxRqx1R/Y24NOxOFo5b9sAhcfPr50Q0ngWFL/rSBFqV1HOGzPbxIYoSxx3pn7kE22XvDC6r+m8O5xqam9xaQh6iuoH164zrpXNQuG7Ul15mUWhuYrvAjlJqIHGLKDrYk4XeTVzucEIfYGIn7nv1+IAScr6TBSuyclBAal0RLXu4AB2WvbNVtZEPzg22S+zq94Yj+TXfsYst9nji6hkvvtzxPLETN51FUkLr8YOXSJxVJs1mFu1nbAJaiZu3UFWmWXBuvF1kV3/UdfMLfgbzo2qOM2D95E1w/QUPKSGBGQ96kdKSdPJK7N1GFbcwQ/zg3aTTt6l2kB8saHvOXZo4/HBbgjIHDyEhwItZWzUTh0YHwoeL6GBbqh4Wfgvyg9qT1tF0mqZq9dOCXzxYP8kV5GT3aG/N5+I9Kz9tKvaB52M3V1RbEOQqxKTm8+Pz6420F1Y4NG4RKeCs1jwa8CLKA2G3AIkDLA3vTw+XUA1yQ7VnWhuiafpNY12PZ9z0eKaO0onfXN56sGRKCbk8CxG3QJE527LrmitEp3TRThXHNsifpdc17CJfNf1HI3GrHvazfo2fiGiBbzhCQlrKT3sW8jmvACbLPbMdz1qpIuH6CrHtg0/YId3s+ztRVE8J692XLabjlbv//HnNeycpl9ziLlI+3y+J6SDl7j93//lNiCP5Ms6ul6O9dVjdYrcaXJ5G7Z8z7LiZkogsrCLjTF1Rct8SGsVl4bzHpqJJ35iy8DqrgRm9eMvNUx+1NxXIeC2ilUeRHrrv1aR/m9i8Zmab4UV79PV2onuP/gNscmhp6LxiOc7iI60GKEEF2ygI7Uwosj5ZI6U9aXabqqwG3OfGMDgGQ5czo4pbilkFxiUuLcigYWlxvJsQ/uDKaor00BU368HQUS7YERSGm1Vagu4vi5iHQVCATTNH9To4Wk166PIbVmVTP/YRsSaejWnNqFoOWGA3uZ2IJwuGl14JO8iWYFwasTiiKDIB2A6WbHQtrSZ9y9jlMXfqzlcwJb+7vOHKWUIVVHGFaYRyM6pEAxXz2IdB2tSrgVJFkb5N4OK6qYkK+BjwHg4SeMPPmo6g0kzhiD39MzR5f+qDNiuu9p4hSykNFSYMXG+J/5NTKovzbeNO9N2JsmjRDx2Jrvedsbv/3Hnns5OU9w76X7Lv/hfzd+3sVCIyplsc99P0N0Bi+tkEdWlM9+Du/2F3fw47YjhTSxSzNorlOANGVbvzKM9JZR26PPS0KhfMAS2pwNNIbevImeM4U8/kOgOhgkwK1/nQpTZuy9AVjYS5ihplWhYiKVVmnyrpppoPzHYLAtZAHqiiZjBBFfIaxXnIiFUMR0VDDWHu2MabORpnWp6qEAkfIpQOEEmpIvtUSzdVfArcecSVqqSnyqv5iFqIiFj1pJlyEpJcmIsz4ItiNZB5qopI8A4TUaYIJqU2ZZ+yDProgK/XUdTETuggGLEqlgfF0ANvZUJRUJiG05AiwasiokwBkZSqpHeq+ZyUN8HPN0R4ygA31BHsJn0kb0gKJVyPQFF9evOqnakUCR67iYZISj0H9FEQAl8ub0BOG5e1BlqDU3B5a4J3mIgylfDcVbJPlWhU9Gli9PLuhXQ1MW2my4FAdLscE/FAIMybUPJUJUGtIpJSZfapTDeVPsikLwa4TAujqRllQaZCm0OlqJKrhgpxmYrLQxlXJU81mGCUqXKNEhVGZp9q6aabWviApkV240xT0xg99+UKJCNWhy7XDBVwVPBMxCApYawKYf36Oo5jfMuOz/G5yrJbDULxXdkAZ5+KJfxG8f/YSrJ/5v4c+e7/YX9HOIzIGNMpjvu1m516959f9Bg="},53402:(e,x,i)=>{i.d(x,{c:()=>a});const a=i.p+"assets/images/3-display-text-083e3081e1bfea165e652fa266459976.webp"},9858:(e,x,i)=>{i.d(x,{c:()=>a});const a=i.p+"assets/images/4-display-image-182f0620827b5137a39958ab3b40e3ec.webp"},4552:(e,x,i)=>{i.d(x,{I:()=>f,M:()=>o});var a=i(11504);const s={},n=a.createContext(s);function o(e){const x=a.useContext(n);return a.useMemo((function(){return"function"==typeof e?e(x):{...x,...e}}),[x,e])}function f(e){let x;return x=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:o(e.components),a.createElement(n.Provider,{value:x},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/main.96d9aa33.js b/assets/js/main.96d9aa33.js deleted file mode 100755 index 660b6a57b..000000000 --- a/assets/js/main.96d9aa33.js +++ /dev/null @@ -1,2 +0,0 @@ -/*! For license information please see main.96d9aa33.js.LICENSE.txt */ -(self.webpackChunkFranzininho=self.webpackChunkFranzininho||[]).push([[1590],{628:(e,t,n)=>{"use strict";n.d(t,{c:()=>p});n(11504);var r=n(98852),o=n.n(r),a=n(14504);const i={"01a85c17":[()=>Promise.all([n.e(2176),n.e(8412)]).then(n.bind(n,43024)),"@theme/BlogTagsListPage",43024],"031793e1":[()=>n.e(8908).then(n.t.bind(n,3272,19)),"~blog/default/blog-tags-facebook-038.json",3272],"032edc05":[()=>n.e(1288).then(n.bind(n,25444)),"@site/docs/FranzininhoWifi/exemplos-circuitpython/instalacao-ferramentas.md",25444],"06f5a5e3":[()=>n.e(7952).then(n.bind(n,15644)),"@site/docs/FranzininhoWifi/exemplos-espidf/0x03-entrada-analogica.md",15644],"096bfee4":[()=>n.e(4124).then(n.t.bind(n,39696,19)),"~blog/default/blog-tags-facebook-038-list.json",39696],"09e1b884":[()=>n.e(7804).then(n.t.bind(n,6792,19)),"/media/fabio/Dados/Projetos/docs-franzininho-site/.docusaurus/docusaurus-plugin-content-blog/default/plugin-route-context-module-100.json",6792],17896441:[()=>Promise.all([n.e(2176),n.e(2416),n.e(6752)]).then(n.bind(n,29752)),"@theme/DocItem",29752],"21c04bfb":[()=>n.e(8968).then(n.bind(n,93232)),"@site/docs/FranzininhoDIY/exemplos-arduino/pacote.md",93232],"249d28c1":[()=>n.e(6332).then(n.bind(n,58960)),"@site/docs/FranzininhoWifi/exemplos-espidf/0x04-LEDC.md",58960],27079279:[()=>n.e(468).then(n.bind(n,5372)),"@site/docs/Franzino/franzino.md",5372],"2868cdab":[()=>n.e(1784).then(n.bind(n,49116)),"@site/blog/2019-05-30-welcome.md",49116],"2e8bb407":[()=>n.e(5240).then(n.bind(n,28388)),"@site/docs/FranzininhoWifi/exemplos-espidf/0x00-Primeiros-passos.md",28388],"30a24c52":[()=>n.e(4608).then(n.t.bind(n,4244,19)),"~blog/default/blog-tags-hello-039.json",4244],"3570154c":[()=>n.e(1052).then(n.bind(n,86444)),"@site/blog/2019-05-29-hello-world.md?truncated=true",86444],"3ab35d9f":[()=>n.e(6550).then(n.bind(n,57632)),"@site/docs/FranzininhoDIY/exemplos-avr-libc/entrada-digital.md",57632],"3ab9b561":[()=>n.e(8817).then(n.bind(n,75080)),"@site/docs/FranzininhoDIY/bootloader/bootloader.md",75080],"3cf26f2f":[()=>n.e(1680).then(n.bind(n,38988)),"@site/docs/FranzininhoWifi/exemplos-circuitpython/serial-console.md",38988],"43004a8a":[()=>n.e(400).then(n.t.bind(n,2080,19)),"/media/fabio/Dados/Projetos/docs-franzininho-site/.docusaurus/docusaurus-plugin-content-docs/default/plugin-route-context-module-100.json",2080],"445992cb":[()=>n.e(6980).then(n.bind(n,87004)),"@site/docs/LaboratorioSistemasIot/adaptadores/adaptador-arduino.md",87004],"449acc1f":[()=>n.e(1208).then(n.bind(n,90752)),"@site/docs/franzininhoSTM32C0/exemplos-arduino/primeiros-passos.md",90752],"45a448cc":[()=>n.e(1456).then(n.bind(n,48832)),"@site/docs/FranzininhoWifi/exemplos-arduino/dht11.md",48832],"4c503f6c":[()=>n.e(6472).then(n.bind(n,20188)),"@site/docs/FranzininhoDIY/exemplos-arduino/entradas-saidas-digitais.md",20188],"4c9e35b1":[()=>n.e(2512).then(n.t.bind(n,60632,19)),"~blog/default/blog-tags-hola-ea2-list.json",60632],"4cb2f106":[()=>n.e(3280).then(n.bind(n,28020)),"@site/docs/franzininhoSTM32C0/exemplos-stm32cube-IDE/configurando-projeto-stmcubeide.md",28020],"4e4cd8a0":[()=>n.e(2160).then(n.bind(n,24888)),"@site/docs/FranzininhoWifi/exemplos-circuitpython/servo-motor.md",24888],"4f3ccf13":[()=>n.e(9508).then(n.t.bind(n,50590,19)),"/media/fabio/Dados/Projetos/docs-franzininho-site/.docusaurus/docusaurus-plugin-content-pages/default/plugin-route-context-module-100.json",50590],"5115f6b0":[()=>n.e(5336).then(n.bind(n,63816)),"@site/docs/FranzininhoWifi/exemplos-arduino/arduino.md",63816],52090148:[()=>n.e(8324).then(n.bind(n,26936)),"@site/docs/FranzininhoDIY/exemplos-arduino/led-rgb.md",26936],"52fc124a":[()=>n.e(3744).then(n.bind(n,4060)),"@site/docs/FranzininhoTiny/franzininho-tiny.md",4060],"558e6545":[()=>n.e(1020).then(n.bind(n,70760)),"@site/docs/FranzininhoDIY/exemplos-arduino/i2c.md",70760],"55a63e59":[()=>n.e(6312).then(n.bind(n,22796)),"@site/docs/FranzininhoWifi/exemplos-circuitpython/display-oled-i2c.md",22796],"55ee410e":[()=>n.e(1196).then(n.bind(n,85452)),"@site/docs/FranzininhoDIY/exemplos-arduino/tecla-liga-desliga.md",85452],58231389:[()=>n.e(1520).then(n.bind(n,89172)),"@site/docs/FranzininhoWifi/exemplos-circuitpython/irrigacao.md",89172],"5c90fd8c":[()=>n.e(2212).then(n.bind(n,29456)),"@site/docs/FranzMakey/franzmakey.md",29456],"5cfa1a80":[()=>n.e(6780).then(n.bind(n,61184)),"@site/docs/FranzininhoDIY/exemplos-arduino/sensor-luz.md",61184],"5e95c892":[()=>n.e(4304).then(n.bind(n,43564)),"@theme/DocsRoot",43564],"5e9f5e1a":[()=>Promise.resolve().then(n.bind(n,97768)),"@generated/docusaurus.config",97768],"5f765f30":[()=>n.e(7024).then(n.bind(n,77092)),"@site/docs/FranzininhoWifi/exemplos-circuitpython/pwm.md",77092],"5f9a86e6":[()=>n.e(6280).then(n.bind(n,51032)),"@site/docs/FranzininhoWifi/exemplos-micropython/entradas-saidas-digitais.md",51032],"608ae6a4":[()=>n.e(5168).then(n.t.bind(n,3120,19)),"~blog/default/blog-tags-docusaurus-0e0-list.json",3120],66406991:[()=>n.e(6956).then(n.t.bind(n,38960,19)),"~blog/default/blog-tags-hello-039-list.json",38960],"66e66c27":[()=>n.e(1676).then(n.bind(n,66016)),"@site/docs/FranzininhoWifi/wokwi/franzininho-wifi-wokwi.md",66016],"68401cc9":[()=>n.e(1168).then(n.bind(n,19864)),"@site/docs/FranzininhoDIY/identificando-componentes.md",19864],"6875c492":[()=>Promise.all([n.e(2176),n.e(2416),n.e(2220),n.e(2392)]).then(n.bind(n,62948)),"@theme/BlogTagsPostsPage",62948],"69d6b121":[()=>n.e(6316).then(n.bind(n,2788)),"@site/docs/FranzininhoDIY/exemplos-arduino/elefante-colorido.md",2788],"6b289e1f":[()=>n.e(7560).then(n.bind(n,92472)),"@site/docs/FranzininhoDIY/exemplos-avr-libc/avr-libc-todo.md",92472],"6d6d470f":[()=>n.e(8448).then(n.bind(n,2008)),"@site/docs/FranzininhoWifi/franzininho-wifi-dev-edition.md",2008],"6da7bcf7":[()=>n.e(8292).then(n.bind(n,69484)),"@site/docs/FranzininhoDIY/bootloader/drivers.md",69484],"6e2ab842":[()=>n.e(4268).then(n.bind(n,23156)),"@site/docs/Badge/badge.md",23156],"7561b0ae":[()=>n.e(9488).then(n.bind(n,89976)),"@site/docs/FranzBoy/franzboy.md",89976],"7e45b7ad":[()=>n.e(1744).then(n.bind(n,84220)),"@site/docs/FranzininhoDIY/exemplos-avr-libc/buzzer.md",84220],"814f3328":[()=>n.e(5512).then(n.t.bind(n,4352,19)),"~blog/default/blog-post-list-prop-default.json",4352],"8b8a5829":[()=>n.e(6116).then(n.bind(n,82076)),"@site/docs/FranzininhoDIY/exemplos-arduino/theremim.md",82076],"8e9f0a8a":[()=>n.e(3496).then(n.bind(n,75224)),"@site/blog/2019-05-28-hola.md?truncated=true",75224],"8f70110c":[()=>n.e(2496).then(n.bind(n,99920)),"@site/docs/FranzininhoWifi/exemplos-circuitpython/entrada-analogica.md",99920],"8f8a0b80":[()=>n.e(5752).then(n.bind(n,60060)),"@site/docs/FranzininhoWifi/exemplos-arduino/onboard-rgb-led-example.md",60060],"92ef60c0":[()=>n.e(9964).then(n.bind(n,86100)),"@site/docs/FranzininhoDIY/exemplos-arduino/pisca-led.md",86100],"935f2afb":[()=>n.e(5696).then(n.t.bind(n,35988,19)),"~docs/default/version-current-metadata-prop-751.json",35988],"94c955d1":[()=>n.e(6200).then(n.bind(n,6604)),"@site/docs/franzininhoSTM32C0/exemplos-arduino/identificacao-pinos.md",6604],"9ccd4375":[()=>n.e(4640).then(n.bind(n,97192)),"@site/docs/FranzininhoDIY/montagem.md",97192],"9cf82e51":[()=>n.e(6992).then(n.bind(n,16560)),"@site/docs/FranzininhoWifi/exemplos-arduino/blink.md",16560],"9e4087bc":[()=>n.e(7028).then(n.bind(n,56140)),"@theme/BlogArchivePage",56140],a34fb63a:[()=>n.e(8336).then(n.bind(n,70676)),"@site/docs/FranzininhoDIY/picsimlab/franzininho-picsimlab.md",70676],a47310cc:[()=>n.e(2976).then(n.bind(n,38568)),"@site/docs/FranzininhoDIY/exemplos-arduino/semaforo.md",38568],a6aa9e1f:[()=>Promise.all([n.e(2176),n.e(2416),n.e(2220),n.e(4976)]).then(n.bind(n,16960)),"@theme/BlogListPage",16960],a7023ddc:[()=>n.e(9112).then(n.t.bind(n,61568,19)),"~blog/default/blog-tags-tags-4c2.json",61568],a7bd4aaa:[()=>n.e(6500).then(n.bind(n,22e3)),"@theme/DocVersionRoot",22e3],a80da1cf:[()=>n.e(8600).then(n.t.bind(n,92338,19)),"~blog/default/blog-tags-docusaurus-0e0.json",92338],a94703ab:[()=>Promise.all([n.e(2176),n.e(4666)]).then(n.bind(n,20996)),"@theme/DocRoot",20996],acecf23e:[()=>n.e(6360).then(n.t.bind(n,81112,19)),"~blog/default/blogMetadata-default.json",81112],af172acd:[()=>n.e(1560).then(n.bind(n,92368)),"@site/blog/2019-05-30-welcome.md?truncated=true",92368],af2b9553:[()=>n.e(2660).then(n.bind(n,68240)),"@site/docs/FranzininhoWifi/exemplos-espidf/0x05-AWS-IoT-Core.md",68240],b0d3cd30:[()=>n.e(5632).then(n.bind(n,73412)),"@site/docs/FranzininhoWifi/exemplos-circuitpython/hello-world.md",73412],b2b675dd:[()=>n.e(6292).then(n.t.bind(n,76180,19)),"~blog/default/blog-c06.json",76180],b2f554cd:[()=>n.e(6880).then(n.t.bind(n,38256,19)),"~blog/default/blog-archive-80c.json",38256],b311b2c7:[()=>n.e(3183).then(n.bind(n,70512)),"@site/docs/LaboratorioSistemasIot/laboratorio-sistemas-iot.md",70512],b55e0f56:[()=>n.e(576).then(n.bind(n,56068)),"@site/docs/FranzininhoDIY/exemplos-avr-libc/hello-world.md",56068],b677b176:[()=>n.e(7296).then(n.bind(n,94024)),"@site/docs/FranzininhoDIY/exemplos-avr-libc/int-externa.md",94024],bb7fee19:[()=>n.e(1392).then(n.bind(n,6567)),"@site/docs/FranzininhoDIY/exemplos-avr-libc/timer0-int.md",6567],bc0ca366:[()=>n.e(9628).then(n.bind(n,60108)),"@site/docs/FranzMakey/primeiros-passos.md",60108],bc0f2708:[()=>n.e(148).then(n.bind(n,37092)),"@site/docs/FranzininhoDIY/exemplos-arduino/introducao.md",37092],bc475886:[()=>n.e(6974).then(n.bind(n,50308)),"@site/docs/FranzininhoDIY/exemplos-avr-libc/primeiros-passos.md",50308],bdb4d3e5:[()=>n.e(9484).then(n.bind(n,41828)),"@site/docs/FranzininhoDIY/exemplos-avr-libc/contadores.md",41828],bdd709f1:[()=>n.e(2760).then(n.bind(n,59436)),"@site/blog/2019-05-28-hola.md",59436],be54388e:[()=>n.e(8040).then(n.bind(n,24892)),"@site/docs/FranzininhoDIY/exemplos-arduino/pwm.md",24892],c397fa15:[()=>n.e(5280).then(n.bind(n,18276)),"@site/docs/FranzininhoWifi/exemplos-circuitpython/circuitpython.md",18276],c4380c1f:[()=>n.e(6776).then(n.bind(n,6580)),"@site/docs/LaboratorioSistemasIot/bibliotecas/biblioteca-laboratorioFW.md",6580],c4f5d8e4:[()=>Promise.all([n.e(2176),n.e(2632)]).then(n.bind(n,15908)),"@site/src/pages/index.js",15908],c720cb85:[()=>n.e(3916).then(n.bind(n,77584)),"@site/docs/FranzininhoDIY/exemplos-avr-libc/timer0.md",77584],ccc49370:[()=>Promise.all([n.e(2176),n.e(2416),n.e(2220),n.e(6344)]).then(n.bind(n,26448)),"@theme/BlogPostPage",26448],cdcae78f:[()=>n.e(7272).then(n.bind(n,67340)),"@site/docs/FranzininhoWifi/franzininho-wifi.md",67340],cfe204fd:[()=>n.e(8658).then(n.bind(n,37904)),"@site/docs/franzininhoSTM32C0/exemplos-stm32cube-IDE/stm32cube-ide-todolist.md",37904],d0c422fb:[()=>n.e(5944).then(n.bind(n,73880)),"@site/docs/FranzininhoWifi/exemplos-circuitpython/dht11.md",73880],d268d7c6:[()=>n.e(3630).then(n.bind(n,87604)),"@site/docs/FranzininhoWifi/exemplos-circuitpython/entrada-saidas-digitais.md",87604],d29449f8:[()=>n.e(560).then(n.bind(n,61052)),"@site/docs/FranzininhoWifi/exemplos-circuitpython/hcsr04.md",61052],d5f74b3b:[()=>n.e(7888).then(n.bind(n,89360)),"@site/docs/FranzininhoDIY/exemplos-arduino/leitura-tecla.md",89360],d610846f:[()=>n.e(6552).then(n.bind(n,41508)),"@site/blog/2019-05-29-hello-world.md",41508],d69ae106:[()=>n.e(8930).then(n.bind(n,21204)),"@site/docs/FranzininhoWifi/exemplos-micropython/primeiros-passos.md",21204],d7336970:[()=>n.e(7073).then(n.bind(n,24236)),"@site/docs/franzininhoSTM32C0/franzininho-stm32c0-board.md",24236],d75a6ad4:[()=>n.e(1363).then(n.bind(n,44972)),"@site/docs/FranzininhoWiFiLAB01/franzininho-wifi-lab01.md",44972],d9a3a88a:[()=>n.e(4672).then(n.bind(n,18208)),"@site/docs/FranzininhoDIY/exemplos-arduino/girassol-automatizado.md",18208],daddf4d9:[()=>n.e(1140).then(n.bind(n,5472)),"@site/docs/Franzino/upload-com-arduino-uno.md",5472],db00da42:[()=>n.e(6728).then(n.bind(n,27652)),"@site/docs/LaboratorioSistemasIot/bibliotecas/biblioteca-laboratorioFW-ARDUNO.md",27652],dcf87b66:[()=>n.e(4298).then(n.bind(n,40620)),"@site/docs/FranzininhoWifi/exemplos-espidf/0x01-Hello-world.md",40620],e16015ca:[()=>n.e(7552).then(n.t.bind(n,77616,19)),"~blog/default/blog-tags-hola-ea2.json",77616],e586c302:[()=>n.e(872).then(n.bind(n,24400)),"@site/docs/FranzininhoDIY/lista-de-materiais.md",24400],e6a1d5e9:[()=>n.e(5758).then(n.bind(n,1996)),"@site/docs/Franzino/upload-conversor-serial.md",1996],ec054302:[()=>n.e(1880).then(n.bind(n,66376)),"@site/docs/FranzininhoWifi/exemplos-circuitpython/touch-capacitivo.md",66376],f3019b90:[()=>n.e(952).then(n.bind(n,71484)),"@site/docs/FranzininhoDIY/exemplos-arduino/brilho-led.md",71484],f5313f89:[()=>n.e(8800).then(n.bind(n,91976)),"@site/docs/sobre.md",91976],f64cfe00:[()=>n.e(9464).then(n.bind(n,29960)),"@site/docs/FranzininhoWifi/exemplos-espidf/0x02-entrada-digital.md",29960],f67a9ad7:[()=>n.e(8812).then(n.bind(n,10508)),"@site/docs/FranzininhoDIY/wokwi/franzininho-wokwi.md",10508],f6af7cfc:[()=>n.e(1576).then(n.bind(n,59724)),"@site/docs/FranzininhoDIY/exemplos-avr-libc/saida-digital.md",59724],fd69b436:[()=>n.e(9386).then(n.bind(n,92304)),"@site/docs/FranzininhoDIY/franzininho-diy.md",92304],ff1c69f3:[()=>n.e(3420).then(n.bind(n,33300)),"@site/docs/franzininhoSTM32C0/exemplos-arduino/exemplos-arduino-todolist.md",33300],ff8b9623:[()=>n.e(6004).then(n.bind(n,4212)),"@site/docs/FranzininhoDIY/exemplos-arduino/entradas-analogicas.md",4212]};var s=n(17624);function l(e){let{error:t,retry:n,pastDelay:r}=e;return t?(0,s.jsxs)("div",{style:{textAlign:"center",color:"#fff",backgroundColor:"#fa383e",borderColor:"#fa383e",borderStyle:"solid",borderRadius:"0.25rem",borderWidth:"1px",boxSizing:"border-box",display:"block",padding:"1rem",flex:"0 0 50%",marginLeft:"25%",marginRight:"25%",marginTop:"5rem",maxWidth:"50%",width:"100%"},children:[(0,s.jsx)("p",{children:String(t)}),(0,s.jsx)("div",{children:(0,s.jsx)("button",{type:"button",onClick:n,children:"Retry"})})]}):r?(0,s.jsx)("div",{style:{display:"flex",justifyContent:"center",alignItems:"center",height:"100vh"},children:(0,s.jsx)("svg",{id:"loader",style:{width:128,height:110,position:"absolute",top:"calc(100vh - 64%)"},viewBox:"0 0 45 45",xmlns:"http://www.w3.org/2000/svg",stroke:"#61dafb",children:(0,s.jsxs)("g",{fill:"none",fillRule:"evenodd",transform:"translate(1 1)",strokeWidth:"2",children:[(0,s.jsxs)("circle",{cx:"22",cy:"22",r:"6",strokeOpacity:"0",children:[(0,s.jsx)("animate",{attributeName:"r",begin:"1.5s",dur:"3s",values:"6;22",calcMode:"linear",repeatCount:"indefinite"}),(0,s.jsx)("animate",{attributeName:"stroke-opacity",begin:"1.5s",dur:"3s",values:"1;0",calcMode:"linear",repeatCount:"indefinite"}),(0,s.jsx)("animate",{attributeName:"stroke-width",begin:"1.5s",dur:"3s",values:"2;0",calcMode:"linear",repeatCount:"indefinite"})]}),(0,s.jsxs)("circle",{cx:"22",cy:"22",r:"6",strokeOpacity:"0",children:[(0,s.jsx)("animate",{attributeName:"r",begin:"3s",dur:"3s",values:"6;22",calcMode:"linear",repeatCount:"indefinite"}),(0,s.jsx)("animate",{attributeName:"stroke-opacity",begin:"3s",dur:"3s",values:"1;0",calcMode:"linear",repeatCount:"indefinite"}),(0,s.jsx)("animate",{attributeName:"stroke-width",begin:"3s",dur:"3s",values:"2;0",calcMode:"linear",repeatCount:"indefinite"})]}),(0,s.jsx)("circle",{cx:"22",cy:"22",r:"8",children:(0,s.jsx)("animate",{attributeName:"r",begin:"0s",dur:"1.5s",values:"6;1;2;3;4;5;6",calcMode:"linear",repeatCount:"indefinite"})})]})})}):null}var c=n(78120),u=n(25548);function d(e,t){if("*"===e)return o()({loading:l,loader:()=>n.e(4552).then(n.bind(n,54552)),modules:["@theme/NotFound"],webpack:()=>[54552],render(e,t){const n=e.default;return(0,s.jsx)(u.Y,{value:{plugin:{name:"native",id:"default"}},children:(0,s.jsx)(n,{...t})})}});const r=a[`${e}-${t}`],d={},p=[],f=[],m=(0,c.c)(r);return Object.entries(m).forEach((e=>{let[t,n]=e;const r=i[n];r&&(d[t]=r[0],p.push(r[1]),f.push(r[2]))})),o().Map({loading:l,loader:d,modules:p,webpack:()=>f,render(t,n){const o=JSON.parse(JSON.stringify(r));Object.entries(t).forEach((t=>{let[n,r]=t;const a=r.default;if(!a)throw new Error(`The page component at ${e} doesn't have a default export. This makes it impossible to render anything. Consider default-exporting a React component.`);"object"!=typeof a&&"function"!=typeof a||Object.keys(r).filter((e=>"default"!==e)).forEach((e=>{a[e]=r[e]}));let i=o;const s=n.split(".");s.slice(0,-1).forEach((e=>{i=i[e]})),i[s[s.length-1]]=a}));const a=o.__comp;delete o.__comp;const i=o.__context;return delete o.__context,(0,s.jsx)(u.Y,{value:i,children:(0,s.jsx)(a,{...o,...n})})}})}const p=[{path:"/blog",component:d("/blog","8a4"),exact:!0},{path:"/blog/archive",component:d("/blog/archive","4bc"),exact:!0},{path:"/blog/hello-world",component:d("/blog/hello-world","50c"),exact:!0},{path:"/blog/hola",component:d("/blog/hola","5f5"),exact:!0},{path:"/blog/tags",component:d("/blog/tags","546"),exact:!0},{path:"/blog/tags/docusaurus",component:d("/blog/tags/docusaurus","e69"),exact:!0},{path:"/blog/tags/facebook",component:d("/blog/tags/facebook","640"),exact:!0},{path:"/blog/tags/hello",component:d("/blog/tags/hello","a30"),exact:!0},{path:"/blog/tags/hola",component:d("/blog/tags/hola","b04"),exact:!0},{path:"/blog/welcome",component:d("/blog/welcome","49c"),exact:!0},{path:"/docs",component:d("/docs","47e"),routes:[{path:"/docs",component:d("/docs","dd4"),routes:[{path:"/docs",component:d("/docs","b7d"),routes:[{path:"/docs/",component:d("/docs/","252"),exact:!0,sidebar:"docs"},{path:"/docs/badge/badge",component:d("/docs/badge/badge","13f"),exact:!0,sidebar:"docs"},{path:"/docs/FranzBoy/franzboy",component:d("/docs/FranzBoy/franzboy","4e0"),exact:!0,sidebar:"docs"},{path:"/docs/franzininho-c0/arduino-identificacao-pinos",component:d("/docs/franzininho-c0/arduino-identificacao-pinos","bb7"),exact:!0,sidebar:"docs"},{path:"/docs/franzininho-c0/arduino-primeiros-passos",component:d("/docs/franzininho-c0/arduino-primeiros-passos","caa"),exact:!0,sidebar:"docs"},{path:"/docs/franzininho-c0/arduino-todolist",component:d("/docs/franzininho-c0/arduino-todolist","0e4"),exact:!0,sidebar:"docs"},{path:"/docs/franzininho-c0/config-franzininho-c0-stm32cubeide",component:d("/docs/franzininho-c0/config-franzininho-c0-stm32cubeide","990"),exact:!0,sidebar:"docs"},{path:"/docs/franzininho-c0/franzininho-c0-board",component:d("/docs/franzininho-c0/franzininho-c0-board","cbb"),exact:!0,sidebar:"docs"},{path:"/docs/franzininho-c0/franzininho-c0-stm32cubeide-todolist",component:d("/docs/franzininho-c0/franzininho-c0-stm32cubeide-todolist","a03"),exact:!0,sidebar:"docs"},{path:"/docs/franzininho-diy/bootloader",component:d("/docs/franzininho-diy/bootloader","077"),exact:!0,sidebar:"docs"},{path:"/docs/franzininho-diy/brilho-led",component:d("/docs/franzininho-diy/brilho-led","7de"),exact:!0,sidebar:"docs"},{path:"/docs/franzininho-diy/drivers-micronucleus",component:d("/docs/franzininho-diy/drivers-micronucleus","775"),exact:!0,sidebar:"docs"},{path:"/docs/franzininho-diy/elefante-colorido",component:d("/docs/franzininho-diy/elefante-colorido","4b1"),exact:!0,sidebar:"docs"},{path:"/docs/franzininho-diy/entradas-analogicas",component:d("/docs/franzininho-diy/entradas-analogicas","d41"),exact:!0,sidebar:"docs"},{path:"/docs/franzininho-diy/entradas-saidas-digitais",component:d("/docs/franzininho-diy/entradas-saidas-digitais","440"),exact:!0,sidebar:"docs"},{path:"/docs/franzininho-diy/exemplos-avr-libc/buzzer",component:d("/docs/franzininho-diy/exemplos-avr-libc/buzzer","aff"),exact:!0,sidebar:"docs"},{path:"/docs/franzininho-diy/exemplos-avr-libc/contadores",component:d("/docs/franzininho-diy/exemplos-avr-libc/contadores","87b"),exact:!0,sidebar:"docs"},{path:"/docs/franzininho-diy/exemplos-avr-libc/entrada-digital",component:d("/docs/franzininho-diy/exemplos-avr-libc/entrada-digital","2d2"),exact:!0,sidebar:"docs"},{path:"/docs/franzininho-diy/exemplos-avr-libc/hello-world",component:d("/docs/franzininho-diy/exemplos-avr-libc/hello-world","e41"),exact:!0,sidebar:"docs"},{path:"/docs/franzininho-diy/exemplos-avr-libc/int-ext",component:d("/docs/franzininho-diy/exemplos-avr-libc/int-ext","f9d"),exact:!0,sidebar:"docs"},{path:"/docs/franzininho-diy/exemplos-avr-libc/primeiros-passos",component:d("/docs/franzininho-diy/exemplos-avr-libc/primeiros-passos","2bc"),exact:!0,sidebar:"docs"},{path:"/docs/franzininho-diy/exemplos-avr-libc/saida-digital",component:d("/docs/franzininho-diy/exemplos-avr-libc/saida-digital","6a4"),exact:!0,sidebar:"docs"},{path:"/docs/franzininho-diy/exemplos-avr-libc/timer0",component:d("/docs/franzininho-diy/exemplos-avr-libc/timer0","f17"),exact:!0,sidebar:"docs"},{path:"/docs/franzininho-diy/exemplos-avr-libc/timer0-int",component:d("/docs/franzininho-diy/exemplos-avr-libc/timer0-int","136"),exact:!0,sidebar:"docs"},{path:"/docs/franzininho-diy/exemplos-avr-libc/todo",component:d("/docs/franzininho-diy/exemplos-avr-libc/todo","d50"),exact:!0,sidebar:"docs"},{path:"/docs/franzininho-diy/girassol-automatizado",component:d("/docs/franzininho-diy/girassol-automatizado","bbc"),exact:!0,sidebar:"docs"},{path:"/docs/franzininho-diy/identificando-componentes",component:d("/docs/franzininho-diy/identificando-componentes","5e7"),exact:!0,sidebar:"docs"},{path:"/docs/franzininho-diy/led-rgb",component:d("/docs/franzininho-diy/led-rgb","a73"),exact:!0,sidebar:"docs"},{path:"/docs/franzininho-diy/leitura-tecla",component:d("/docs/franzininho-diy/leitura-tecla","8bc"),exact:!0,sidebar:"docs"},{path:"/docs/franzininho-diy/lista-de-materiais",component:d("/docs/franzininho-diy/lista-de-materiais","a66"),exact:!0,sidebar:"docs"},{path:"/docs/franzininho-diy/montagem",component:d("/docs/franzininho-diy/montagem","7a2"),exact:!0,sidebar:"docs"},{path:"/docs/franzininho-diy/pacote",component:d("/docs/franzininho-diy/pacote","036"),exact:!0,sidebar:"docs"},{path:"/docs/franzininho-diy/picsimlab/primeiros-passos",component:d("/docs/franzininho-diy/picsimlab/primeiros-passos","0a0"),exact:!0,sidebar:"docs"},{path:"/docs/franzininho-diy/pisca-led",component:d("/docs/franzininho-diy/pisca-led","238"),exact:!0,sidebar:"docs"},{path:"/docs/franzininho-diy/saidas-pwm",component:d("/docs/franzininho-diy/saidas-pwm","c49"),exact:!0,sidebar:"docs"},{path:"/docs/franzininho-diy/semaforo",component:d("/docs/franzininho-diy/semaforo","8fa"),exact:!0,sidebar:"docs"},{path:"/docs/franzininho-diy/sensor-luz-ldr",component:d("/docs/franzininho-diy/sensor-luz-ldr","98c"),exact:!0,sidebar:"docs"},{path:"/docs/franzininho-diy/sobre",component:d("/docs/franzininho-diy/sobre","722"),exact:!0,sidebar:"docs"},{path:"/docs/franzininho-diy/tecla-liga-desliga",component:d("/docs/franzininho-diy/tecla-liga-desliga","75d"),exact:!0,sidebar:"docs"},{path:"/docs/franzininho-diy/theremim",component:d("/docs/franzininho-diy/theremim","330"),exact:!0,sidebar:"docs"},{path:"/docs/franzininho-diy/tutoriais-i2c",component:d("/docs/franzininho-diy/tutoriais-i2c","7c3"),exact:!0},{path:"/docs/franzininho-diy/wokwi/primeiros-passos",component:d("/docs/franzininho-diy/wokwi/primeiros-passos","099"),exact:!0,sidebar:"docs"},{path:"/docs/franzininho-tiny/franzininho-tiny",component:d("/docs/franzininho-tiny/franzininho-tiny","97b"),exact:!0,sidebar:"docs"},{path:"/docs/franzininho-wifi-lab01",component:d("/docs/franzininho-wifi-lab01","9ce"),exact:!0,sidebar:"docs"},{path:"/docs/franzininho-wifi/exemplos-arduino/blink",component:d("/docs/franzininho-wifi/exemplos-arduino/blink","e2e"),exact:!0,sidebar:"docs"},{path:"/docs/franzininho-wifi/exemplos-arduino/dht11",component:d("/docs/franzininho-wifi/exemplos-arduino/dht11","a77"),exact:!0,sidebar:"docs"},{path:"/docs/franzininho-wifi/exemplos-arduino/neopixel-onboard",component:d("/docs/franzininho-wifi/exemplos-arduino/neopixel-onboard","3df"),exact:!0,sidebar:"docs"},{path:"/docs/franzininho-wifi/exemplos-arduino/primeiros-passos",component:d("/docs/franzininho-wifi/exemplos-arduino/primeiros-passos","baf"),exact:!0,sidebar:"docs"},{path:"/docs/franzininho-wifi/exemplos-circuitpython/dht11",component:d("/docs/franzininho-wifi/exemplos-circuitpython/dht11","a35"),exact:!0,sidebar:"docs"},{path:"/docs/franzininho-wifi/exemplos-circuitpython/display-oled-i2c",component:d("/docs/franzininho-wifi/exemplos-circuitpython/display-oled-i2c","f84"),exact:!0,sidebar:"docs"},{path:"/docs/franzininho-wifi/exemplos-circuitpython/entradas-analogicas",component:d("/docs/franzininho-wifi/exemplos-circuitpython/entradas-analogicas","349"),exact:!0,sidebar:"docs"},{path:"/docs/franzininho-wifi/exemplos-circuitpython/entradas-saidas-digitais",component:d("/docs/franzininho-wifi/exemplos-circuitpython/entradas-saidas-digitais","686"),exact:!0,sidebar:"docs"},{path:"/docs/franzininho-wifi/exemplos-circuitpython/ferramentas",component:d("/docs/franzininho-wifi/exemplos-circuitpython/ferramentas","4ba"),exact:!0,sidebar:"docs"},{path:"/docs/franzininho-wifi/exemplos-circuitpython/hello-world",component:d("/docs/franzininho-wifi/exemplos-circuitpython/hello-world","9e6"),exact:!0,sidebar:"docs"},{path:"/docs/franzininho-wifi/exemplos-circuitpython/irrigacao",component:d("/docs/franzininho-wifi/exemplos-circuitpython/irrigacao","1f7"),exact:!0,sidebar:"docs"},{path:"/docs/franzininho-wifi/exemplos-circuitpython/primeiros-passos",component:d("/docs/franzininho-wifi/exemplos-circuitpython/primeiros-passos","9b7"),exact:!0,sidebar:"docs"},{path:"/docs/franzininho-wifi/exemplos-circuitpython/pwm",component:d("/docs/franzininho-wifi/exemplos-circuitpython/pwm","041"),exact:!0,sidebar:"docs"},{path:"/docs/franzininho-wifi/exemplos-circuitpython/sensor-hcsr04",component:d("/docs/franzininho-wifi/exemplos-circuitpython/sensor-hcsr04","687"),exact:!0,sidebar:"docs"},{path:"/docs/franzininho-wifi/exemplos-circuitpython/serial-console",component:d("/docs/franzininho-wifi/exemplos-circuitpython/serial-console","c3d"),exact:!0,sidebar:"docs"},{path:"/docs/franzininho-wifi/exemplos-circuitpython/servo-motor",component:d("/docs/franzininho-wifi/exemplos-circuitpython/servo-motor","149"),exact:!0,sidebar:"docs"},{path:"/docs/franzininho-wifi/exemplos-circuitpython/touch-capacitivo",component:d("/docs/franzininho-wifi/exemplos-circuitpython/touch-capacitivo","210"),exact:!0,sidebar:"docs"},{path:"/docs/franzininho-wifi/exemplos-espidf/aws",component:d("/docs/franzininho-wifi/exemplos-espidf/aws","a86"),exact:!0,sidebar:"docs"},{path:"/docs/franzininho-wifi/exemplos-espidf/entrada-analogica",component:d("/docs/franzininho-wifi/exemplos-espidf/entrada-analogica","885"),exact:!0,sidebar:"docs"},{path:"/docs/franzininho-wifi/exemplos-espidf/entrada-digital",component:d("/docs/franzininho-wifi/exemplos-espidf/entrada-digital","48e"),exact:!0,sidebar:"docs"},{path:"/docs/franzininho-wifi/exemplos-espidf/hello-world-esp-idf",component:d("/docs/franzininho-wifi/exemplos-espidf/hello-world-esp-idf","a9c"),exact:!0,sidebar:"docs"},{path:"/docs/franzininho-wifi/exemplos-espidf/ledc",component:d("/docs/franzininho-wifi/exemplos-espidf/ledc","fec"),exact:!0,sidebar:"docs"},{path:"/docs/franzininho-wifi/exemplos-espidf/primeiros-passos",component:d("/docs/franzininho-wifi/exemplos-espidf/primeiros-passos","d57"),exact:!0,sidebar:"docs"},{path:"/docs/franzininho-wifi/exemplos-micropython/entradas-saidas-digitais",component:d("/docs/franzininho-wifi/exemplos-micropython/entradas-saidas-digitais","18a"),exact:!0,sidebar:"docs"},{path:"/docs/franzininho-wifi/exemplos-micropython/primeiros-passos",component:d("/docs/franzininho-wifi/exemplos-micropython/primeiros-passos","8f4"),exact:!0,sidebar:"docs"},{path:"/docs/franzininho-wifi/franzininho-wifi",component:d("/docs/franzininho-wifi/franzininho-wifi","783"),exact:!0,sidebar:"docs"},{path:"/docs/franzininho-wifi/franzininho-wifi-dev-edition",component:d("/docs/franzininho-wifi/franzininho-wifi-dev-edition","5f1"),exact:!0,sidebar:"docs"},{path:"/docs/franzininho-wifi/wokwi/primeiros-passos",component:d("/docs/franzininho-wifi/wokwi/primeiros-passos","ebc"),exact:!0,sidebar:"docs"},{path:"/docs/Franzino/franzino",component:d("/docs/Franzino/franzino","4df"),exact:!0,sidebar:"docs"},{path:"/docs/Franzino/upload-com-arduino-uno",component:d("/docs/Franzino/upload-com-arduino-uno","423"),exact:!0,sidebar:"docs"},{path:"/docs/Franzino/upload-conversor-serial",component:d("/docs/Franzino/upload-conversor-serial","84e"),exact:!0,sidebar:"docs"},{path:"/docs/FranzMakey/franzmakey",component:d("/docs/FranzMakey/franzmakey","f53"),exact:!0,sidebar:"docs"},{path:"/docs/FranzMakey/primeiros-passos",component:d("/docs/FranzMakey/primeiros-passos","9be"),exact:!0,sidebar:"docs"},{path:"/docs/LaboratorioSistemasIot/adaptadores/arduino-uno",component:d("/docs/LaboratorioSistemasIot/adaptadores/arduino-uno","234"),exact:!0,sidebar:"docs"},{path:"/docs/LaboratorioSistemasIot/bibliotecas/biblioteca-laboratorioFW",component:d("/docs/LaboratorioSistemasIot/bibliotecas/biblioteca-laboratorioFW","549"),exact:!0,sidebar:"docs"},{path:"/docs/LaboratorioSistemasIot/bibliotecas/biblioteca-laboratorioFW_ARDUNO",component:d("/docs/LaboratorioSistemasIot/bibliotecas/biblioteca-laboratorioFW_ARDUNO","862"),exact:!0,sidebar:"docs"},{path:"/docs/LaboratorioSistemasIot/LaboratorioSistemasIot",component:d("/docs/LaboratorioSistemasIot/LaboratorioSistemasIot","157"),exact:!0,sidebar:"docs"},{path:"/docs/programacao/tutoriais-introducao",component:d("/docs/programacao/tutoriais-introducao","123"),exact:!0}]}]}]},{path:"/",component:d("/","f4b"),exact:!0},{path:"*",component:d("*")}]},30240:(e,t,n)=>{"use strict";n.d(t,{e:()=>a,g:()=>i});var r=n(11504),o=n(17624);const a=r.createContext(!1);function i(e){let{children:t}=e;const[n,i]=(0,r.useState)(!1);return(0,r.useEffect)((()=>{i(!0)}),[]),(0,o.jsx)(a.Provider,{value:n,children:t})}},28808:(e,t,n)=>{"use strict";var r=n(11504),o=n(28352),a=n(70440),i=n(32160),s=n(98684);const l=[n(1462),n(85396),n(31976),n(71496)];var c=n(628),u=n(55592),d=n(85464),p=n(17624);function f(e){let{children:t}=e;return(0,p.jsx)(p.Fragment,{children:t})}var m=n(56952),h=n(28264),g=n(70964),b=n(21824),y=n(68900),v=n(1616),w=n(60204),x=n(14456),k=n(15684),S=n(48712);function E(){const{i18n:{currentLocale:e,defaultLocale:t,localeConfigs:n}}=(0,h.c)(),r=(0,v.D)(),o=n[e].htmlLang,a=e=>e.replace("-","_");return(0,p.jsxs)(m.c,{children:[Object.entries(n).map((e=>{let[t,{htmlLang:n}]=e;return(0,p.jsx)("link",{rel:"alternate",href:r.createUrl({locale:t,fullyQualified:!0}),hrefLang:n},t)})),(0,p.jsx)("link",{rel:"alternate",href:r.createUrl({locale:t,fullyQualified:!0}),hrefLang:"x-default"}),(0,p.jsx)("meta",{property:"og:locale",content:a(o)}),Object.values(n).filter((e=>o!==e.htmlLang)).map((e=>(0,p.jsx)("meta",{property:"og:locale:alternate",content:a(e.htmlLang)},`meta-og-${e.htmlLang}`)))]})}function _(e){let{permalink:t}=e;const{siteConfig:{url:n}}=(0,h.c)(),r=function(){const{siteConfig:{url:e,baseUrl:t,trailingSlash:n}}=(0,h.c)(),{pathname:r}=(0,u.IT)();return e+(0,k.applyTrailingSlash)((0,g.c)(r),{trailingSlash:n,baseUrl:t})}(),o=t?`${n}${t}`:r;return(0,p.jsxs)(m.c,{children:[(0,p.jsx)("meta",{property:"og:url",content:o}),(0,p.jsx)("link",{rel:"canonical",href:o})]})}function C(){const{i18n:{currentLocale:e}}=(0,h.c)(),{metadata:t,image:n}=(0,b.y)();return(0,p.jsxs)(p.Fragment,{children:[(0,p.jsxs)(m.c,{children:[(0,p.jsx)("meta",{name:"twitter:card",content:"summary_large_image"}),(0,p.jsx)("body",{className:w.m})]}),n&&(0,p.jsx)(y.U7,{image:n}),(0,p.jsx)(_,{}),(0,p.jsx)(E,{}),(0,p.jsx)(S.c,{tag:x.e6,locale:e}),(0,p.jsx)(m.c,{children:t.map(((e,t)=>(0,p.jsx)("meta",{...e},t)))})]})}const z=new Map;function T(e){if(z.has(e.pathname))return{...e,pathname:z.get(e.pathname)};if((0,d.C)(c.c,e.pathname).some((e=>{let{route:t}=e;return!0===t.exact})))return z.set(e.pathname,e.pathname),e;const t=e.pathname.trim().replace(/(?:\/index)?\.html$/,"")||"/";return z.set(e.pathname,t),{...e,pathname:t}}var L=n(30240),j=n(136),A=n(95288);function F(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r{const r=t.default?.[e]??t[e];return r?.(...n)}));return()=>o.forEach((e=>e?.()))}const P=function(e){let{children:t,location:n,previousLocation:r}=e;return(0,A.c)((()=>{r!==n&&(!function(e){let{location:t,previousLocation:n}=e;if(!n)return;const r=t.pathname===n.pathname,o=t.hash===n.hash,a=t.search===n.search;if(r&&o&&!a)return;const{hash:i}=t;if(i){const e=decodeURIComponent(i.substring(1)),t=document.getElementById(e);t?.scrollIntoView()}else window.scrollTo(0,0)}({location:n,previousLocation:r}),F("onRouteDidUpdate",{previousLocation:r,location:n}))}),[r,n]),t};function N(e){const t=Array.from(new Set([e,decodeURI(e)])).map((e=>(0,d.C)(c.c,e))).flat();return Promise.all(t.map((e=>e.route.component.preload?.())))}class R extends r.Component{previousLocation;routeUpdateCleanupCb;constructor(e){super(e),this.previousLocation=null,this.routeUpdateCleanupCb=s.c.canUseDOM?F("onRouteUpdate",{previousLocation:null,location:this.props.location}):()=>{},this.state={nextRouteHasLoaded:!0}}shouldComponentUpdate(e,t){if(e.location===this.props.location)return t.nextRouteHasLoaded;const n=e.location;return this.previousLocation=this.props.location,this.setState({nextRouteHasLoaded:!1}),this.routeUpdateCleanupCb=F("onRouteUpdate",{previousLocation:this.previousLocation,location:n}),N(n.pathname).then((()=>{this.routeUpdateCleanupCb(),this.setState({nextRouteHasLoaded:!0})})).catch((e=>{console.warn(e),window.location.reload()})),!1}render(){const{children:e,location:t}=this.props;return(0,p.jsx)(P,{previousLocation:this.previousLocation,location:t,children:(0,p.jsx)(u.kX,{location:t,render:()=>e})})}}const D=R,I="__docusaurus-base-url-issue-banner-container",O="__docusaurus-base-url-issue-banner",M="__docusaurus-base-url-issue-banner-suggestion-container";function B(e){return`\ndocument.addEventListener('DOMContentLoaded', function maybeInsertBanner() {\n var shouldInsert = typeof window['docusaurus'] === 'undefined';\n shouldInsert && insertBanner();\n});\n\nfunction insertBanner() {\n var bannerContainer = document.createElement('div');\n bannerContainer.id = '${I}';\n var bannerHtml = ${JSON.stringify(function(e){return`\n
\n

Your Docusaurus site did not load properly.

\n

A very common reason is a wrong site baseUrl configuration.

\n

Current configured baseUrl = ${e} ${"/"===e?" (default value)":""}

\n

We suggest trying baseUrl =

\n
\n`}(e)).replace(/{if("undefined"==typeof document)return void n();const r=document.createElement("link");r.setAttribute("rel","prefetch"),r.setAttribute("href",e),r.onload=()=>t(),r.onerror=()=>n();const o=document.getElementsByTagName("head")[0]??document.getElementsByName("script")[0]?.parentNode;o?.appendChild(r)}))}:function(e){return new Promise(((t,n)=>{const r=new XMLHttpRequest;r.open("GET",e,!0),r.withCredentials=!0,r.onload=()=>{200===r.status?t():n()},r.send(null)}))};var K=n(78120);const X=new Set,Z=new Set,J=()=>navigator.connection?.effectiveType.includes("2g")||navigator.connection?.saveData,ee={prefetch(e){if(!(e=>!J()&&!Z.has(e)&&!X.has(e))(e))return!1;X.add(e);const t=(0,d.C)(c.c,e).flatMap((e=>{return t=e.route.path,Object.entries(Y).filter((e=>{let[n]=e;return n.replace(/-[^-]+$/,"")===t})).flatMap((e=>{let[,t]=e;return Object.values((0,K.c)(t))}));var t}));return Promise.all(t.map((e=>{const t=n.gca(e);return t&&!t.includes("undefined")?Q(t).catch((()=>{})):Promise.resolve()})))},preload:e=>!!(e=>!J()&&!Z.has(e))(e)&&(Z.add(e),N(e))},te=Object.freeze(ee),ne=Boolean(!0);if(s.c.canUseDOM){window.docusaurus=te;const e=document.getElementById("__docusaurus"),t=(0,p.jsx)(i.EN,{children:(0,p.jsx)(a.kn,{children:(0,p.jsx)(V,{})})}),n=(e,t)=>{console.error("Docusaurus React Root onRecoverableError:",e,t)},s=()=>{if(ne)r.startTransition((()=>{o.hydrateRoot(e,t,{onRecoverableError:n})}));else{const a=o.createRoot(e,{onRecoverableError:n});r.startTransition((()=>{a.render(t)}))}};N(window.location.pathname).then(s)}},136:(e,t,n)=>{"use strict";n.d(t,{e:()=>d,y:()=>p});var r=n(11504),o=n(97768);const a=JSON.parse('{"docusaurus-plugin-content-docs":{"default":{"path":"/docs","versions":[{"name":"current","label":"Pr\xf3ximo","isLast":true,"path":"/docs","mainDocId":"sobre","docs":[{"id":"Badge/badge","path":"/docs/badge/badge","sidebar":"docs"},{"id":"FranzBoy/franzboy","path":"/docs/FranzBoy/franzboy","sidebar":"docs"},{"id":"FranzininhoDIY/bootloader/bootloader","path":"/docs/franzininho-diy/bootloader","sidebar":"docs"},{"id":"FranzininhoDIY/bootloader/drivers-micronucleus","path":"/docs/franzininho-diy/drivers-micronucleus","sidebar":"docs"},{"id":"FranzininhoDIY/exemplos-arduino/brilho-led","path":"/docs/franzininho-diy/brilho-led","sidebar":"docs"},{"id":"FranzininhoDIY/exemplos-arduino/elefante-colorido","path":"/docs/franzininho-diy/elefante-colorido","sidebar":"docs"},{"id":"FranzininhoDIY/exemplos-arduino/entradas-analogicas","path":"/docs/franzininho-diy/entradas-analogicas","sidebar":"docs"},{"id":"FranzininhoDIY/exemplos-arduino/entradas-saidas-digitais","path":"/docs/franzininho-diy/entradas-saidas-digitais","sidebar":"docs"},{"id":"FranzininhoDIY/exemplos-arduino/girassol-automatizado","path":"/docs/franzininho-diy/girassol-automatizado","sidebar":"docs"},{"id":"FranzininhoDIY/exemplos-arduino/led-rgb","path":"/docs/franzininho-diy/led-rgb","sidebar":"docs"},{"id":"FranzininhoDIY/exemplos-arduino/leitura-tecla","path":"/docs/franzininho-diy/leitura-tecla","sidebar":"docs"},{"id":"FranzininhoDIY/exemplos-arduino/pacote","path":"/docs/franzininho-diy/pacote","sidebar":"docs"},{"id":"FranzininhoDIY/exemplos-arduino/pisca-led","path":"/docs/franzininho-diy/pisca-led","sidebar":"docs"},{"id":"FranzininhoDIY/exemplos-arduino/saidas-pwm","path":"/docs/franzininho-diy/saidas-pwm","sidebar":"docs"},{"id":"FranzininhoDIY/exemplos-arduino/semaforo","path":"/docs/franzininho-diy/semaforo","sidebar":"docs"},{"id":"FranzininhoDIY/exemplos-arduino/sensor-luz-ldr","path":"/docs/franzininho-diy/sensor-luz-ldr","sidebar":"docs"},{"id":"FranzininhoDIY/exemplos-arduino/tecla-liga-desliga","path":"/docs/franzininho-diy/tecla-liga-desliga","sidebar":"docs"},{"id":"FranzininhoDIY/exemplos-arduino/theremim","path":"/docs/franzininho-diy/theremim","sidebar":"docs"},{"id":"FranzininhoDIY/exemplos-arduino/tutoriais-i2c","path":"/docs/franzininho-diy/tutoriais-i2c"},{"id":"FranzininhoDIY/exemplos-arduino/tutoriais-introducao","path":"/docs/programacao/tutoriais-introducao"},{"id":"FranzininhoDIY/exemplos-avr-libc/avr-libc-todo","path":"/docs/franzininho-diy/exemplos-avr-libc/todo","sidebar":"docs"},{"id":"FranzininhoDIY/exemplos-avr-libc/buzzer","path":"/docs/franzininho-diy/exemplos-avr-libc/buzzer","sidebar":"docs"},{"id":"FranzininhoDIY/exemplos-avr-libc/contadores","path":"/docs/franzininho-diy/exemplos-avr-libc/contadores","sidebar":"docs"},{"id":"FranzininhoDIY/exemplos-avr-libc/entrada-digital","path":"/docs/franzininho-diy/exemplos-avr-libc/entrada-digital","sidebar":"docs"},{"id":"FranzininhoDIY/exemplos-avr-libc/hello-world","path":"/docs/franzininho-diy/exemplos-avr-libc/hello-world","sidebar":"docs"},{"id":"FranzininhoDIY/exemplos-avr-libc/int-externa","path":"/docs/franzininho-diy/exemplos-avr-libc/int-ext","sidebar":"docs"},{"id":"FranzininhoDIY/exemplos-avr-libc/primeiros-passos","path":"/docs/franzininho-diy/exemplos-avr-libc/primeiros-passos","sidebar":"docs"},{"id":"FranzininhoDIY/exemplos-avr-libc/saida-digital","path":"/docs/franzininho-diy/exemplos-avr-libc/saida-digital","sidebar":"docs"},{"id":"FranzininhoDIY/exemplos-avr-libc/timer0","path":"/docs/franzininho-diy/exemplos-avr-libc/timer0","sidebar":"docs"},{"id":"FranzininhoDIY/exemplos-avr-libc/timer0-int","path":"/docs/franzininho-diy/exemplos-avr-libc/timer0-int","sidebar":"docs"},{"id":"FranzininhoDIY/franzininho-diy","path":"/docs/franzininho-diy/sobre","sidebar":"docs"},{"id":"FranzininhoDIY/identificando-componentes","path":"/docs/franzininho-diy/identificando-componentes","sidebar":"docs"},{"id":"FranzininhoDIY/lista-de-materiais","path":"/docs/franzininho-diy/lista-de-materiais","sidebar":"docs"},{"id":"FranzininhoDIY/montagem","path":"/docs/franzininho-diy/montagem","sidebar":"docs"},{"id":"FranzininhoDIY/picsimlab/picsimlab-intro","path":"/docs/franzininho-diy/picsimlab/primeiros-passos","sidebar":"docs"},{"id":"FranzininhoDIY/wokwi/wokwi-intro","path":"/docs/franzininho-diy/wokwi/primeiros-passos","sidebar":"docs"},{"id":"franzininhoSTM32C0/exemplos-arduino/franzininhoc0-arduino-identificacao-pinos","path":"/docs/franzininho-c0/arduino-identificacao-pinos","sidebar":"docs"},{"id":"franzininhoSTM32C0/exemplos-arduino/franzininhoc0-arduino-primeiros-passos","path":"/docs/franzininho-c0/arduino-primeiros-passos","sidebar":"docs"},{"id":"franzininhoSTM32C0/exemplos-arduino/franzininhoc0-arduino-todolist","path":"/docs/franzininho-c0/arduino-todolist","sidebar":"docs"},{"id":"franzininhoSTM32C0/exemplos-stm32cube-IDE/config-franzininho-c0-stm32cubeide","path":"/docs/franzininho-c0/config-franzininho-c0-stm32cubeide","sidebar":"docs"},{"id":"franzininhoSTM32C0/exemplos-stm32cube-IDE/franzininho-stm32c0-stm32cubeide-todolist","path":"/docs/franzininho-c0/franzininho-c0-stm32cubeide-todolist","sidebar":"docs"},{"id":"franzininhoSTM32C0/franzininho-stm32c0","path":"/docs/franzininho-c0/franzininho-c0-board","sidebar":"docs"},{"id":"FranzininhoTiny/franzininho-tiny","path":"/docs/franzininho-tiny/franzininho-tiny","sidebar":"docs"},{"id":"FranzininhoWifi/exemplos-arduino/arduino","path":"/docs/franzininho-wifi/exemplos-arduino/primeiros-passos","sidebar":"docs"},{"id":"FranzininhoWifi/exemplos-arduino/arduino-blink","path":"/docs/franzininho-wifi/exemplos-arduino/blink","sidebar":"docs"},{"id":"FranzininhoWifi/exemplos-arduino/arduino-dht11","path":"/docs/franzininho-wifi/exemplos-arduino/dht11","sidebar":"docs"},{"id":"FranzininhoWifi/exemplos-arduino/arduino-neopixel","path":"/docs/franzininho-wifi/exemplos-arduino/neopixel-onboard","sidebar":"docs"},{"id":"FranzininhoWifi/exemplos-circuitpython/circuitpython-dht11","path":"/docs/franzininho-wifi/exemplos-circuitpython/dht11","sidebar":"docs"},{"id":"FranzininhoWifi/exemplos-circuitpython/circuitpython-display-oled-i2c","path":"/docs/franzininho-wifi/exemplos-circuitpython/display-oled-i2c","sidebar":"docs"},{"id":"FranzininhoWifi/exemplos-circuitpython/circuitpython-entradas-analogicas","path":"/docs/franzininho-wifi/exemplos-circuitpython/entradas-analogicas","sidebar":"docs"},{"id":"FranzininhoWifi/exemplos-circuitpython/circuitpython-entradas-saidas-digitais","path":"/docs/franzininho-wifi/exemplos-circuitpython/entradas-saidas-digitais","sidebar":"docs"},{"id":"FranzininhoWifi/exemplos-circuitpython/circuitpython-ferramentas","path":"/docs/franzininho-wifi/exemplos-circuitpython/ferramentas","sidebar":"docs"},{"id":"FranzininhoWifi/exemplos-circuitpython/circuitpython-hello-world","path":"/docs/franzininho-wifi/exemplos-circuitpython/hello-world","sidebar":"docs"},{"id":"FranzininhoWifi/exemplos-circuitpython/circuitpython-primeiros-passos","path":"/docs/franzininho-wifi/exemplos-circuitpython/primeiros-passos","sidebar":"docs"},{"id":"FranzininhoWifi/exemplos-circuitpython/circuitpython-pwm","path":"/docs/franzininho-wifi/exemplos-circuitpython/pwm","sidebar":"docs"},{"id":"FranzininhoWifi/exemplos-circuitpython/circuitpython-sensor-hcsr04","path":"/docs/franzininho-wifi/exemplos-circuitpython/sensor-hcsr04","sidebar":"docs"},{"id":"FranzininhoWifi/exemplos-circuitpython/circuitpython-serial-console","path":"/docs/franzininho-wifi/exemplos-circuitpython/serial-console","sidebar":"docs"},{"id":"FranzininhoWifi/exemplos-circuitpython/circuitpython-servo-motor","path":"/docs/franzininho-wifi/exemplos-circuitpython/servo-motor","sidebar":"docs"},{"id":"FranzininhoWifi/exemplos-circuitpython/circuitpython-sistema-de-irriga\xe7\xe3o","path":"/docs/franzininho-wifi/exemplos-circuitpython/irrigacao","sidebar":"docs"},{"id":"FranzininhoWifi/exemplos-circuitpython/circuitpython-touch-capacitivo","path":"/docs/franzininho-wifi/exemplos-circuitpython/touch-capacitivo","sidebar":"docs"},{"id":"FranzininhoWifi/exemplos-espidf/franzininho-wifi-espidf-00","path":"/docs/franzininho-wifi/exemplos-espidf/primeiros-passos","sidebar":"docs"},{"id":"FranzininhoWifi/exemplos-espidf/franzininho-wifi-espidf-01","path":"/docs/franzininho-wifi/exemplos-espidf/hello-world-esp-idf","sidebar":"docs"},{"id":"FranzininhoWifi/exemplos-espidf/franzininho-wifi-espidf-02","path":"/docs/franzininho-wifi/exemplos-espidf/entrada-digital","sidebar":"docs"},{"id":"FranzininhoWifi/exemplos-espidf/franzininho-wifi-espidf-03","path":"/docs/franzininho-wifi/exemplos-espidf/entrada-analogica","sidebar":"docs"},{"id":"FranzininhoWifi/exemplos-espidf/franzininho-wifi-espidf-04","path":"/docs/franzininho-wifi/exemplos-espidf/ledc","sidebar":"docs"},{"id":"FranzininhoWifi/exemplos-espidf/franzininho-wifi-espidf-05","path":"/docs/franzininho-wifi/exemplos-espidf/aws","sidebar":"docs"},{"id":"FranzininhoWifi/exemplos-micropython/micropython-entradas-saidas-digitais","path":"/docs/franzininho-wifi/exemplos-micropython/entradas-saidas-digitais","sidebar":"docs"},{"id":"FranzininhoWifi/exemplos-micropython/micropython-primeiros-passos","path":"/docs/franzininho-wifi/exemplos-micropython/primeiros-passos","sidebar":"docs"},{"id":"FranzininhoWifi/franzininho-wifi","path":"/docs/franzininho-wifi/franzininho-wifi","sidebar":"docs"},{"id":"FranzininhoWifi/franzininho-wifi-dev-edition","path":"/docs/franzininho-wifi/franzininho-wifi-dev-edition","sidebar":"docs"},{"id":"FranzininhoWifi/wokwi/franzininho-wifi-wokwi-intro","path":"/docs/franzininho-wifi/wokwi/primeiros-passos","sidebar":"docs"},{"id":"FranzininhoWiFiLAB01/franzininho-wifi-lab01","path":"/docs/franzininho-wifi-lab01","sidebar":"docs"},{"id":"Franzino/franzino","path":"/docs/Franzino/franzino","sidebar":"docs"},{"id":"Franzino/upload-com-arduino-uno","path":"/docs/Franzino/upload-com-arduino-uno","sidebar":"docs"},{"id":"Franzino/upload-conversor-serial","path":"/docs/Franzino/upload-conversor-serial","sidebar":"docs"},{"id":"FranzMakey/franzmakey","path":"/docs/FranzMakey/franzmakey","sidebar":"docs"},{"id":"FranzMakey/primeiros-passos","path":"/docs/FranzMakey/primeiros-passos","sidebar":"docs"},{"id":"LaboratorioSistemasIot/adaptadores/adaptador-arduino","path":"/docs/LaboratorioSistemasIot/adaptadores/arduino-uno","sidebar":"docs"},{"id":"LaboratorioSistemasIot/bibliotecas/biblioteca-laboratorioFW","path":"/docs/LaboratorioSistemasIot/bibliotecas/biblioteca-laboratorioFW","sidebar":"docs"},{"id":"LaboratorioSistemasIot/bibliotecas/biblioteca-laboratorioFW-ARDUNO","path":"/docs/LaboratorioSistemasIot/bibliotecas/biblioteca-laboratorioFW_ARDUNO","sidebar":"docs"},{"id":"LaboratorioSistemasIot/laboratorio-sistemas-iot","path":"/docs/LaboratorioSistemasIot/LaboratorioSistemasIot","sidebar":"docs"},{"id":"sobre","path":"/docs/","sidebar":"docs"}],"draftIds":[],"sidebars":{"docs":{"link":{"path":"/docs/","label":"sobre"}}}}],"breadcrumbs":true}}}'),i=JSON.parse('{"defaultLocale":"pt-BR","locales":["pt-BR","en"],"path":"i18n","currentLocale":"pt-BR","localeConfigs":{"pt-BR":{"label":"Portugu\xeas (Brasil)","direction":"ltr","htmlLang":"pt-BR","calendar":"gregory","path":"pt-BR"},"en":{"label":"English","direction":"ltr","htmlLang":"en","calendar":"gregory","path":"en"}}}');var s=n(60144);const l=JSON.parse('{"docusaurusVersion":"3.2.1","siteVersion":"1.0.0","pluginVersions":{"docusaurus-plugin-content-docs":{"type":"package","name":"@docusaurus/plugin-content-docs","version":"3.2.1"},"docusaurus-plugin-content-blog":{"type":"package","name":"@docusaurus/plugin-content-blog","version":"3.2.1"},"docusaurus-plugin-content-pages":{"type":"package","name":"@docusaurus/plugin-content-pages","version":"3.2.1"},"docusaurus-plugin-sitemap":{"type":"package","name":"@docusaurus/plugin-sitemap","version":"3.2.1"},"docusaurus-theme-classic":{"type":"package","name":"@docusaurus/theme-classic","version":"3.2.1"}}}');var c=n(17624);const u={siteConfig:o.default,siteMetadata:l,globalData:a,i18n:i,codeTranslations:s},d=r.createContext(u);function p(e){let{children:t}=e;return(0,c.jsx)(d.Provider,{value:u,children:t})}},75852:(e,t,n)=>{"use strict";n.d(t,{c:()=>h});var r=n(11504),o=n(98684),a=n(56952),i=n(15684),s=n(99012),l=n(25548),c=n(17624);function u(e){let{error:t,tryAgain:n}=e;return(0,c.jsxs)("div",{style:{display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"flex-start",minHeight:"100vh",width:"100%",maxWidth:"80ch",fontSize:"20px",margin:"0 auto",padding:"1rem"},children:[(0,c.jsx)("h1",{style:{fontSize:"3rem"},children:"This page crashed"}),(0,c.jsx)("button",{type:"button",onClick:n,style:{margin:"1rem 0",fontSize:"2rem",cursor:"pointer",borderRadius:20,padding:"1rem"},children:"Try again"}),(0,c.jsx)(d,{error:t})]})}function d(e){let{error:t}=e;const n=(0,i.getErrorCausalChain)(t).map((e=>e.message)).join("\n\nCause:\n");return(0,c.jsx)("p",{style:{whiteSpace:"pre-wrap"},children:n})}function p(e){let{children:t}=e;return(0,c.jsx)(l.Y,{value:{plugin:{name:"docusaurus-core-error-boundary",id:"default"}},children:t})}function f(e){let{error:t,tryAgain:n}=e;return(0,c.jsx)(p,{children:(0,c.jsxs)(h,{fallback:()=>(0,c.jsx)(u,{error:t,tryAgain:n}),children:[(0,c.jsx)(a.c,{children:(0,c.jsx)("title",{children:"Page Error"})}),(0,c.jsx)(s.c,{children:(0,c.jsx)(u,{error:t,tryAgain:n})})]})})}const m=e=>(0,c.jsx)(f,{...e});class h extends r.Component{constructor(e){super(e),this.state={error:null}}componentDidCatch(e){o.c.canUseDOM&&this.setState({error:e})}render(){const{children:e}=this.props,{error:t}=this.state;if(t){const e={error:t,tryAgain:()=>this.setState({error:null})};return(this.props.fallback??m)(e)}return e??null}}},98684:(e,t,n)=>{"use strict";n.d(t,{c:()=>o});const r="undefined"!=typeof window&&"document"in window&&"createElement"in window.document,o={canUseDOM:r,canUseEventListeners:r&&("addEventListener"in window||"attachEvent"in window),canUseIntersectionObserver:r&&"IntersectionObserver"in window,canUseViewport:r&&"screen"in window}},56952:(e,t,n)=>{"use strict";n.d(t,{c:()=>a});n(11504);var r=n(32160),o=n(17624);function a(e){return(0,o.jsx)(r.So,{...e})}},10867:(e,t,n)=>{"use strict";n.d(t,{c:()=>f});var r=n(11504),o=n(70440),a=n(15684),i=n(28264),s=n(18136),l=n(98684),c=n(5976),u=n(70964),d=n(17624);function p(e,t){let{isNavLink:n,to:p,href:f,activeClassName:m,isActive:h,"data-noBrokenLinkCheck":g,autoAddBaseUrl:b=!0,...y}=e;const{siteConfig:{trailingSlash:v,baseUrl:w}}=(0,i.c)(),{withBaseUrl:x}=(0,u.E)(),k=(0,c.c)(),S=(0,r.useRef)(null);(0,r.useImperativeHandle)(t,(()=>S.current));const E=p||f;const _=(0,s.c)(E),C=E?.replace("pathname://","");let z=void 0!==C?(T=C,b&&(e=>e.startsWith("/"))(T)?x(T):T):void 0;var T;z&&_&&(z=(0,a.applyTrailingSlash)(z,{trailingSlash:v,baseUrl:w}));const L=(0,r.useRef)(!1),j=n?o.Af:o.cH,A=l.c.canUseIntersectionObserver,F=(0,r.useRef)(),P=()=>{L.current||null==z||(window.docusaurus.preload(z),L.current=!0)};(0,r.useEffect)((()=>(!A&&_&&null!=z&&window.docusaurus.prefetch(z),()=>{A&&F.current&&F.current.disconnect()})),[F,z,A,_]);const N=z?.startsWith("#")??!1,R=!y.target||"_self"===y.target,D=!z||!_||!R||N;return g||!N&&D||k.collectLink(z),y.id&&k.collectAnchor(y.id),D?(0,d.jsx)("a",{ref:S,href:z,...E&&!_&&{target:"_blank",rel:"noopener noreferrer"},...y}):(0,d.jsx)(j,{...y,onMouseEnter:P,onTouchStart:P,innerRef:e=>{S.current=e,A&&e&&_&&(F.current=new window.IntersectionObserver((t=>{t.forEach((t=>{e===t.target&&(t.isIntersecting||t.intersectionRatio>0)&&(F.current.unobserve(e),F.current.disconnect(),null!=z&&window.docusaurus.prefetch(z))}))})),F.current.observe(e))},to:z,...n&&{isActive:h,activeClassName:m}})}const f=r.forwardRef(p)},82944:(e,t,n)=>{"use strict";n.d(t,{c:()=>r});const r=()=>null},84357:(e,t,n)=>{"use strict";n.d(t,{c:()=>c,G:()=>l});var r=n(11504),o=n(17624);function a(e,t){const n=e.split(/(\{\w+\})/).map(((e,n)=>{if(n%2==1){const n=t?.[e.slice(1,-1)];if(void 0!==n)return n}return e}));return n.some((e=>(0,r.isValidElement)(e)))?n.map(((e,t)=>(0,r.isValidElement)(e)?r.cloneElement(e,{key:t}):e)).filter((e=>""!==e)):n.join("")}var i=n(60144);function s(e){let{id:t,message:n}=e;if(void 0===t&&void 0===n)throw new Error("Docusaurus translation declarations must have at least a translation id or a default translation message");return i[t??n]??n??t}function l(e,t){let{message:n,id:r}=e;return a(s({message:n,id:r}),t)}function c(e){let{children:t,id:n,values:r}=e;if(t&&"string"!=typeof t)throw console.warn("Illegal children",t),new Error("The Docusaurus component only accept simple string values");const i=s({message:t,id:n});return(0,o.jsx)(o.Fragment,{children:a(i,r)})}},52488:(e,t,n)=>{"use strict";n.d(t,{M:()=>r});const r="default"},18136:(e,t,n)=>{"use strict";function r(e){return/^(?:\w*:|\/\/)/.test(e)}function o(e){return void 0!==e&&!r(e)}n.d(t,{_:()=>r,c:()=>o})},70964:(e,t,n)=>{"use strict";n.d(t,{E:()=>i,c:()=>s});var r=n(11504),o=n(28264),a=n(18136);function i(){const{siteConfig:{baseUrl:e,url:t}}=(0,o.c)(),n=(0,r.useCallback)(((n,r)=>function(e,t,n,r){let{forcePrependBaseUrl:o=!1,absolute:i=!1}=void 0===r?{}:r;if(!n||n.startsWith("#")||(0,a._)(n))return n;if(o)return t+n.replace(/^\//,"");if(n===t.replace(/\/$/,""))return t;const s=n.startsWith(t)?n:t+n.replace(/^\//,"");return i?e+s:s}(t,e,n,r)),[t,e]);return{withBaseUrl:n}}function s(e,t){void 0===t&&(t={});const{withBaseUrl:n}=i();return n(e,t)}},5976:(e,t,n)=>{"use strict";n.d(t,{c:()=>i});var r=n(11504);n(17624);const o=r.createContext({collectAnchor:()=>{},collectLink:()=>{}}),a=()=>(0,r.useContext)(o);function i(){return a()}},28264:(e,t,n)=>{"use strict";n.d(t,{c:()=>a});var r=n(11504),o=n(136);function a(){return(0,r.useContext)(o.e)}},93664:(e,t,n)=>{"use strict";n.d(t,{c:()=>a});var r=n(11504),o=n(30240);function a(){return(0,r.useContext)(o.e)}},95288:(e,t,n)=>{"use strict";n.d(t,{c:()=>o});var r=n(11504);const o=n(98684).c.canUseDOM?r.useLayoutEffect:r.useEffect},85308:(e,t,n)=>{"use strict";n.d(t,{c:()=>a});var r=n(11504),o=n(25548);function a(){const e=r.useContext(o.e);if(!e)throw new Error("Unexpected: no Docusaurus route context found");return e}},78120:(e,t,n)=>{"use strict";n.d(t,{c:()=>o});const r=e=>"object"==typeof e&&!!e&&Object.keys(e).length>0;function o(e){const t={};return function e(n,o){Object.entries(n).forEach((n=>{let[a,i]=n;const s=o?`${o}.${a}`:a;r(i)?e(i,s):t[s]=i}))}(e),t}},25548:(e,t,n)=>{"use strict";n.d(t,{Y:()=>i,e:()=>a});var r=n(11504),o=n(17624);const a=r.createContext(null);function i(e){let{children:t,value:n}=e;const i=r.useContext(a),s=(0,r.useMemo)((()=>function(e){let{parent:t,value:n}=e;if(!t){if(!n)throw new Error("Unexpected: no Docusaurus route context found");if(!("plugin"in n))throw new Error("Unexpected: Docusaurus topmost route context has no `plugin` attribute");return n}const r={...t.data,...n?.data};return{plugin:t.plugin,data:r}}({parent:i,value:n})),[i,n]);return(0,o.jsx)(a.Provider,{value:s,children:t})}},62840:(e,t,n)=>{"use strict";n.d(t,{wB:()=>h,UF:()=>p,L0:()=>u,i8:()=>g,OK:()=>d,aA:()=>m,gN:()=>f});var r=n(55592),o=n(28264),a=n(52488);function i(e,t){void 0===t&&(t={});const n=function(){const{globalData:e}=(0,o.c)();return e}()[e];if(!n&&t.failfast)throw new Error(`Docusaurus plugin global data not found for "${e}" plugin.`);return n}const s=e=>e.versions.find((e=>e.isLast));function l(e,t){const n=function(e,t){const n=s(e);return[...e.versions.filter((e=>e!==n)),n].find((e=>!!(0,r.ot)(t,{path:e.path,exact:!1,strict:!1})))}(e,t),o=n?.docs.find((e=>!!(0,r.ot)(t,{path:e.path,exact:!0,strict:!1})));return{activeVersion:n,activeDoc:o,alternateDocVersions:o?function(t){const n={};return e.versions.forEach((e=>{e.docs.forEach((r=>{r.id===t&&(n[e.name]=r)}))})),n}(o.id):{}}}const c={},u=()=>i("docusaurus-plugin-content-docs")??c,d=e=>{try{return function(e,t,n){void 0===t&&(t=a.M),void 0===n&&(n={});const r=i(e),o=r?.[t];if(!o&&n.failfast)throw new Error(`Docusaurus plugin global data not found for "${e}" plugin with id "${t}".`);return o}("docusaurus-plugin-content-docs",e,{failfast:!0})}catch(t){throw new Error("You are using a feature of the Docusaurus docs plugin, but this plugin does not seem to be enabled"+("Default"===e?"":` (pluginId=${e}`),{cause:t})}};function p(e){void 0===e&&(e={});const t=u(),{pathname:n}=(0,r.IT)();return function(e,t,n){void 0===n&&(n={});const o=Object.entries(e).sort(((e,t)=>t[1].path.localeCompare(e[1].path))).find((e=>{let[,n]=e;return!!(0,r.ot)(t,{path:n.path,exact:!1,strict:!1})})),a=o?{pluginId:o[0],pluginData:o[1]}:void 0;if(!a&&n.failfast)throw new Error(`Can't find active docs plugin for "${t}" pathname, while it was expected to be found. Maybe you tried to use a docs feature that can only be used on a docs-related page? Existing docs plugin paths are: ${Object.values(e).map((e=>e.path)).join(", ")}`);return a}(t,n,e)}function f(e){return d(e).versions}function m(e){const t=d(e);return s(t)}function h(e){const t=d(e),{pathname:n}=(0,r.IT)();return l(t,n)}function g(e){const t=d(e),{pathname:n}=(0,r.IT)();return function(e,t){const n=s(e);return{latestDocSuggestion:l(e,t).alternateDocVersions[n.name],latestVersionSuggestion:n}}(t,n)}},31976:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>a});var r=n(22272),o=n.n(r);o().configure({showSpinner:!1});const a={onRouteUpdate(e){let{location:t,previousLocation:n}=e;if(n&&t.pathname!==n.pathname){const e=window.setTimeout((()=>{o().start()}),200);return()=>window.clearTimeout(e)}},onRouteDidUpdate(){o().done()}}},85396:(e,t,n)=>{"use strict";n.r(t);var r=n(46756),o=n(97768);!function(e){const{themeConfig:{prism:t}}=o.default,{additionalLanguages:r}=t;globalThis.Prism=e,r.forEach((e=>{"php"===e&&n(71808),n(58660)(`./prism-${e}`)})),delete globalThis.Prism}(r.sp)},56448:(e,t,n)=>{"use strict";n.d(t,{c:()=>u});n(11504);var r=n(34064),o=n(84357),a=n(21824),i=n(10867),s=n(5976);const l={anchorWithStickyNavbar:"anchorWithStickyNavbar_LWe7",anchorWithHideOnScrollNavbar:"anchorWithHideOnScrollNavbar_WYt5"};var c=n(17624);function u(e){let{as:t,id:n,...u}=e;const d=(0,s.c)(),{navbar:{hideOnScroll:p}}=(0,a.y)();if("h1"===t||!n)return(0,c.jsx)(t,{...u,id:void 0});d.collectAnchor(n);const f=(0,o.G)({id:"theme.common.headingLinkTitle",message:"Direct link to {heading}",description:"Title for link to heading"},{heading:"string"==typeof u.children?u.children:n});return(0,c.jsxs)(t,{...u,className:(0,r.c)("anchor",p?l.anchorWithHideOnScrollNavbar:l.anchorWithStickyNavbar,u.className),id:n,children:[u.children,(0,c.jsx)(i.c,{className:"hash-link",to:`#${n}`,"aria-label":f,title:f,children:"\u200b"})]})}},3232:(e,t,n)=>{"use strict";n.d(t,{c:()=>a});n(11504);const r={iconExternalLink:"iconExternalLink_nPIU"};var o=n(17624);function a(e){let{width:t=13.5,height:n=13.5}=e;return(0,o.jsx)("svg",{width:t,height:n,"aria-hidden":"true",viewBox:"0 0 24 24",className:r.iconExternalLink,children:(0,o.jsx)("path",{fill:"currentColor",d:"M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"})})}},99012:(e,t,n)=>{"use strict";n.d(t,{c:()=>ft});var r=n(11504),o=n(34064),a=n(75852),i=n(68900),s=n(55592),l=n(84357),c=n(27124),u=n(17624);const d="__docusaurus_skipToContent_fallback";function p(e){e.setAttribute("tabindex","-1"),e.focus(),e.removeAttribute("tabindex")}function f(){const e=(0,r.useRef)(null),{action:t}=(0,s.Uz)(),n=(0,r.useCallback)((e=>{e.preventDefault();const t=document.querySelector("main:first-of-type")??document.getElementById(d);t&&p(t)}),[]);return(0,c.c)((n=>{let{location:r}=n;e.current&&!r.hash&&"PUSH"===t&&p(e.current)})),{containerRef:e,onClick:n}}const m=(0,l.G)({id:"theme.common.skipToMainContent",description:"The skip to content label used for accessibility, allowing to rapidly navigate to main content with keyboard tab/enter navigation",message:"Skip to main content"});function h(e){const t=e.children??m,{containerRef:n,onClick:r}=f();return(0,u.jsx)("div",{ref:n,role:"region","aria-label":m,children:(0,u.jsx)("a",{...e,href:`#${d}`,onClick:r,children:t})})}var g=n(45864),b=n(60204);const y={skipToContent:"skipToContent_fXgn"};function v(){return(0,u.jsx)(h,{className:y.skipToContent})}var w=n(21824),x=n(43868);function k(e){let{width:t=21,height:n=21,color:r="currentColor",strokeWidth:o=1.2,className:a,...i}=e;return(0,u.jsx)("svg",{viewBox:"0 0 15 15",width:t,height:n,...i,children:(0,u.jsx)("g",{stroke:r,strokeWidth:o,children:(0,u.jsx)("path",{d:"M.75.75l13.5 13.5M14.25.75L.75 14.25"})})})}const S={closeButton:"closeButton_CVFx"};function E(e){return(0,u.jsx)("button",{type:"button","aria-label":(0,l.G)({id:"theme.AnnouncementBar.closeButtonAriaLabel",message:"Close",description:"The ARIA label for close button of announcement bar"}),...e,className:(0,o.c)("clean-btn close",S.closeButton,e.className),children:(0,u.jsx)(k,{width:14,height:14,strokeWidth:3.1})})}const _={content:"content_knG7"};function C(e){const{announcementBar:t}=(0,w.y)(),{content:n}=t;return(0,u.jsx)("div",{...e,className:(0,o.c)(_.content,e.className),dangerouslySetInnerHTML:{__html:n}})}const z={announcementBar:"announcementBar_mb4j",announcementBarPlaceholder:"announcementBarPlaceholder_vyr4",announcementBarClose:"announcementBarClose_gvF7",announcementBarContent:"announcementBarContent_xLdY"};function T(){const{announcementBar:e}=(0,w.y)(),{isActive:t,close:n}=(0,x.el)();if(!t)return null;const{backgroundColor:r,textColor:o,isCloseable:a}=e;return(0,u.jsxs)("div",{className:z.announcementBar,style:{backgroundColor:r,color:o},role:"banner",children:[a&&(0,u.jsx)("div",{className:z.announcementBarPlaceholder}),(0,u.jsx)(C,{className:z.announcementBarContent}),a&&(0,u.jsx)(E,{onClick:n,className:z.announcementBarClose})]})}var L=n(41336),j=n(53943);var A=n(91100),F=n(45168);const P=r.createContext(null);function N(e){let{children:t}=e;const n=function(){const e=(0,L.q)(),t=(0,F.MF)(),[n,o]=(0,r.useState)(!1),a=null!==t.component,i=(0,A.i0)(a);return(0,r.useEffect)((()=>{a&&!i&&o(!0)}),[a,i]),(0,r.useEffect)((()=>{a?e.shown||o(!0):o(!1)}),[e.shown,a]),(0,r.useMemo)((()=>[n,o]),[n])}();return(0,u.jsx)(P.Provider,{value:n,children:t})}function R(e){if(e.component){const t=e.component;return(0,u.jsx)(t,{...e.props})}}function D(){const e=(0,r.useContext)(P);if(!e)throw new A.AH("NavbarSecondaryMenuDisplayProvider");const[t,n]=e,o=(0,r.useCallback)((()=>n(!1)),[n]),a=(0,F.MF)();return(0,r.useMemo)((()=>({shown:t,hide:o,content:R(a)})),[o,a,t])}function I(e){let{header:t,primaryMenu:n,secondaryMenu:r}=e;const{shown:a}=D();return(0,u.jsxs)("div",{className:"navbar-sidebar",children:[t,(0,u.jsxs)("div",{className:(0,o.c)("navbar-sidebar__items",{"navbar-sidebar__items--show-secondary":a}),children:[(0,u.jsx)("div",{className:"navbar-sidebar__item menu",children:n}),(0,u.jsx)("div",{className:"navbar-sidebar__item menu",children:r})]})]})}var O=n(66528),M=n(93664);function B(e){return(0,u.jsx)("svg",{viewBox:"0 0 24 24",width:24,height:24,...e,children:(0,u.jsx)("path",{fill:"currentColor",d:"M12,9c1.65,0,3,1.35,3,3s-1.35,3-3,3s-3-1.35-3-3S10.35,9,12,9 M12,7c-2.76,0-5,2.24-5,5s2.24,5,5,5s5-2.24,5-5 S14.76,7,12,7L12,7z M2,13l2,0c0.55,0,1-0.45,1-1s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S1.45,13,2,13z M20,13l2,0c0.55,0,1-0.45,1-1 s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S19.45,13,20,13z M11,2v2c0,0.55,0.45,1,1,1s1-0.45,1-1V2c0-0.55-0.45-1-1-1S11,1.45,11,2z M11,20v2c0,0.55,0.45,1,1,1s1-0.45,1-1v-2c0-0.55-0.45-1-1-1C11.45,19,11,19.45,11,20z M5.99,4.58c-0.39-0.39-1.03-0.39-1.41,0 c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0s0.39-1.03,0-1.41L5.99,4.58z M18.36,16.95 c-0.39-0.39-1.03-0.39-1.41,0c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0c0.39-0.39,0.39-1.03,0-1.41 L18.36,16.95z M19.42,5.99c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06c-0.39,0.39-0.39,1.03,0,1.41 s1.03,0.39,1.41,0L19.42,5.99z M7.05,18.36c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06 c-0.39,0.39-0.39,1.03,0,1.41s1.03,0.39,1.41,0L7.05,18.36z"})})}function U(e){return(0,u.jsx)("svg",{viewBox:"0 0 24 24",width:24,height:24,...e,children:(0,u.jsx)("path",{fill:"currentColor",d:"M9.37,5.51C9.19,6.15,9.1,6.82,9.1,7.5c0,4.08,3.32,7.4,7.4,7.4c0.68,0,1.35-0.09,1.99-0.27C17.45,17.19,14.93,19,12,19 c-3.86,0-7-3.14-7-7C5,9.07,6.81,6.55,9.37,5.51z M12,3c-4.97,0-9,4.03-9,9s4.03,9,9,9s9-4.03,9-9c0-0.46-0.04-0.92-0.1-1.36 c-0.98,1.37-2.58,2.26-4.4,2.26c-2.98,0-5.4-2.42-5.4-5.4c0-1.81,0.89-3.42,2.26-4.4C12.92,3.04,12.46,3,12,3L12,3z"})})}const $={toggle:"toggle_vylO",toggleButton:"toggleButton_gllP",darkToggleIcon:"darkToggleIcon_wfgR",lightToggleIcon:"lightToggleIcon_pyhR",toggleButtonDisabled:"toggleButtonDisabled_aARS"};function q(e){let{className:t,buttonClassName:n,value:r,onChange:a}=e;const i=(0,M.c)(),s=(0,l.G)({message:"Switch between dark and light mode (currently {mode})",id:"theme.colorToggle.ariaLabel",description:"The ARIA label for the navbar color mode toggle"},{mode:"dark"===r?(0,l.G)({message:"dark mode",id:"theme.colorToggle.ariaLabel.mode.dark",description:"The name for the dark color mode"}):(0,l.G)({message:"light mode",id:"theme.colorToggle.ariaLabel.mode.light",description:"The name for the light color mode"})});return(0,u.jsx)("div",{className:(0,o.c)($.toggle,t),children:(0,u.jsxs)("button",{className:(0,o.c)("clean-btn",$.toggleButton,!i&&$.toggleButtonDisabled,n),type:"button",onClick:()=>a("dark"===r?"light":"dark"),disabled:!i,title:s,"aria-label":s,"aria-live":"polite",children:[(0,u.jsx)(B,{className:(0,o.c)($.toggleIcon,$.lightToggleIcon)}),(0,u.jsx)(U,{className:(0,o.c)($.toggleIcon,$.darkToggleIcon)})]})})}const W=r.memo(q),H={darkNavbarColorModeToggle:"darkNavbarColorModeToggle_X3D1"};function G(e){let{className:t}=e;const n=(0,w.y)().navbar.style,r=(0,w.y)().colorMode.disableSwitch,{colorMode:o,setColorMode:a}=(0,O.U)();return r?null:(0,u.jsx)(W,{className:t,buttonClassName:"dark"===n?H.darkNavbarColorModeToggle:void 0,value:o,onChange:a})}var V=n(68164);function Y(){return(0,u.jsx)(V.c,{className:"navbar__brand",imageClassName:"navbar__logo",titleClassName:"navbar__title text--truncate"})}function Q(){const e=(0,L.q)();return(0,u.jsx)("button",{type:"button","aria-label":(0,l.G)({id:"theme.docs.sidebar.closeSidebarButtonAriaLabel",message:"Close navigation bar",description:"The ARIA label for close button of mobile sidebar"}),className:"clean-btn navbar-sidebar__close",onClick:()=>e.toggle(),children:(0,u.jsx)(k,{color:"var(--ifm-color-emphasis-600)"})})}function K(){return(0,u.jsxs)("div",{className:"navbar-sidebar__brand",children:[(0,u.jsx)(Y,{}),(0,u.jsx)(G,{className:"margin-right--md"}),(0,u.jsx)(Q,{})]})}var X=n(10867),Z=n(70964),J=n(18136);function ee(e,t){return void 0!==e&&void 0!==t&&new RegExp(e,"gi").test(t)}var te=n(3232);function ne(e){let{activeBasePath:t,activeBaseRegex:n,to:r,href:o,label:a,html:i,isDropdownLink:s,prependBaseUrlToHref:l,...c}=e;const d=(0,Z.c)(r),p=(0,Z.c)(t),f=(0,Z.c)(o,{forcePrependBaseUrl:!0}),m=a&&o&&!(0,J.c)(o),h=i?{dangerouslySetInnerHTML:{__html:i}}:{children:(0,u.jsxs)(u.Fragment,{children:[a,m&&(0,u.jsx)(te.c,{...s&&{width:12,height:12}})]})};return o?(0,u.jsx)(X.c,{href:l?f:o,...c,...h}):(0,u.jsx)(X.c,{to:d,isNavLink:!0,...(t||n)&&{isActive:(e,t)=>n?ee(n,t.pathname):t.pathname.startsWith(p)},...c,...h})}function re(e){let{className:t,isDropdownItem:n=!1,...r}=e;const a=(0,u.jsx)(ne,{className:(0,o.c)(n?"dropdown__link":"navbar__item navbar__link",t),isDropdownLink:n,...r});return n?(0,u.jsx)("li",{children:a}):a}function oe(e){let{className:t,isDropdownItem:n,...r}=e;return(0,u.jsx)("li",{className:"menu__list-item",children:(0,u.jsx)(ne,{className:(0,o.c)("menu__link",t),...r})})}function ae(e){let{mobile:t=!1,position:n,...r}=e;const o=t?oe:re;return(0,u.jsx)(o,{...r,activeClassName:r.activeClassName??(t?"menu__link--active":"navbar__link--active")})}var ie=n(58448),se=n(13376),le=n(28264);const ce={dropdownNavbarItemMobile:"dropdownNavbarItemMobile_S0Fm"};function ue(e,t){return e.some((e=>function(e,t){return!!(0,se.Sc)(e.to,t)||!!ee(e.activeBaseRegex,t)||!(!e.activeBasePath||!t.startsWith(e.activeBasePath))}(e,t)))}function de(e){let{items:t,position:n,className:a,onClick:i,...s}=e;const l=(0,r.useRef)(null),[c,d]=(0,r.useState)(!1);return(0,r.useEffect)((()=>{const e=e=>{l.current&&!l.current.contains(e.target)&&d(!1)};return document.addEventListener("mousedown",e),document.addEventListener("touchstart",e),document.addEventListener("focusin",e),()=>{document.removeEventListener("mousedown",e),document.removeEventListener("touchstart",e),document.removeEventListener("focusin",e)}}),[l]),(0,u.jsxs)("div",{ref:l,className:(0,o.c)("navbar__item","dropdown","dropdown--hoverable",{"dropdown--right":"right"===n,"dropdown--show":c}),children:[(0,u.jsx)(ne,{"aria-haspopup":"true","aria-expanded":c,role:"button",href:s.to?void 0:"#",className:(0,o.c)("navbar__link",a),...s,onClick:s.to?void 0:e=>e.preventDefault(),onKeyDown:e=>{"Enter"===e.key&&(e.preventDefault(),d(!c))},children:s.children??s.label}),(0,u.jsx)("ul",{className:"dropdown__menu",children:t.map(((e,t)=>(0,r.createElement)(_e,{isDropdownItem:!0,activeClassName:"dropdown__link--active",...e,key:t})))})]})}function pe(e){let{items:t,className:n,position:a,onClick:i,...l}=e;const c=function(){const{siteConfig:{baseUrl:e}}=(0,le.c)(),{pathname:t}=(0,s.IT)();return t.replace(e,"/")}(),d=ue(t,c),{collapsed:p,toggleCollapsed:f,setCollapsed:m}=(0,ie.a)({initialState:()=>!d});return(0,r.useEffect)((()=>{d&&m(!d)}),[c,d,m]),(0,u.jsxs)("li",{className:(0,o.c)("menu__list-item",{"menu__list-item--collapsed":p}),children:[(0,u.jsx)(ne,{role:"button",className:(0,o.c)(ce.dropdownNavbarItemMobile,"menu__link menu__link--sublist menu__link--sublist-caret",n),...l,onClick:e=>{e.preventDefault(),f()},children:l.children??l.label}),(0,u.jsx)(ie.U,{lazy:!0,as:"ul",className:"menu__list",collapsed:p,children:t.map(((e,t)=>(0,r.createElement)(_e,{mobile:!0,isDropdownItem:!0,onClick:i,activeClassName:"menu__link--active",...e,key:t})))})]})}function fe(e){let{mobile:t=!1,...n}=e;const r=t?pe:de;return(0,u.jsx)(r,{...n})}var me=n(1616);function he(e){let{width:t=20,height:n=20,...r}=e;return(0,u.jsx)("svg",{viewBox:"0 0 24 24",width:t,height:n,"aria-hidden":!0,...r,children:(0,u.jsx)("path",{fill:"currentColor",d:"M12.87 15.07l-2.54-2.51.03-.03c1.74-1.94 2.98-4.17 3.71-6.53H17V4h-7V2H8v2H1v1.99h11.17C11.5 7.92 10.44 9.75 9 11.35 8.07 10.32 7.3 9.19 6.69 8h-2c.73 1.63 1.73 3.17 2.98 4.56l-5.09 5.02L4 19l5-5 3.11 3.11.76-2.04zM18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2l-4.5-12zm-2.62 7l1.62-4.33L19.12 17h-3.24z"})})}const ge="iconLanguage_nlXk";var be=n(82944);const ye={navbarSearchContainer:"navbarSearchContainer_Bca1"};function ve(e){let{children:t,className:n}=e;return(0,u.jsx)("div",{className:(0,o.c)(n,ye.navbarSearchContainer),children:t})}var we=n(62840),xe=n(79940);var ke=n(94592);const Se=e=>e.docs.find((t=>t.id===e.mainDocId));const Ee={default:ae,localeDropdown:function(e){let{mobile:t,dropdownItemsBefore:n,dropdownItemsAfter:r,queryString:o="",...a}=e;const{i18n:{currentLocale:i,locales:c,localeConfigs:d}}=(0,le.c)(),p=(0,me.D)(),{search:f,hash:m}=(0,s.IT)(),h=[...n,...c.map((e=>{const n=`${`pathname://${p.createUrl({locale:e,fullyQualified:!1})}`}${f}${m}${o}`;return{label:d[e].label,lang:d[e].htmlLang,to:n,target:"_self",autoAddBaseUrl:!1,className:e===i?t?"menu__link--active":"dropdown__link--active":""}})),...r],g=t?(0,l.G)({message:"Languages",id:"theme.navbar.mobileLanguageDropdown.label",description:"The label for the mobile language switcher dropdown"}):d[i].label;return(0,u.jsx)(fe,{...a,mobile:t,label:(0,u.jsxs)(u.Fragment,{children:[(0,u.jsx)(he,{className:ge}),g]}),items:h})},search:function(e){let{mobile:t,className:n}=e;return t?null:(0,u.jsx)(ve,{className:n,children:(0,u.jsx)(be.c,{})})},dropdown:fe,html:function(e){let{value:t,className:n,mobile:r=!1,isDropdownItem:a=!1}=e;const i=a?"li":"div";return(0,u.jsx)(i,{className:(0,o.c)({navbar__item:!r&&!a,"menu__list-item":r},n),dangerouslySetInnerHTML:{__html:t}})},doc:function(e){let{docId:t,label:n,docsPluginId:r,...o}=e;const{activeDoc:a}=(0,we.wB)(r),i=(0,xe.Qf)(t,r),s=a?.path===i?.path;return null===i||i.unlisted&&!s?null:(0,u.jsx)(ae,{exact:!0,...o,isActive:()=>s||!!a?.sidebar&&a.sidebar===i.sidebar,label:n??i.id,to:i.path})},docSidebar:function(e){let{sidebarId:t,label:n,docsPluginId:r,...o}=e;const{activeDoc:a}=(0,we.wB)(r),i=(0,xe.Ab)(t,r).link;if(!i)throw new Error(`DocSidebarNavbarItem: Sidebar with ID "${t}" doesn't have anything to be linked to.`);return(0,u.jsx)(ae,{exact:!0,...o,isActive:()=>a?.sidebar===t,label:n??i.label,to:i.path})},docsVersion:function(e){let{label:t,to:n,docsPluginId:r,...o}=e;const a=(0,xe.b7)(r)[0],i=t??a.label,s=n??(e=>e.docs.find((t=>t.id===e.mainDocId)))(a).path;return(0,u.jsx)(ae,{...o,label:i,to:s})},docsVersionDropdown:function(e){let{mobile:t,docsPluginId:n,dropdownActiveClassDisabled:r,dropdownItemsBefore:o,dropdownItemsAfter:a,...i}=e;const{search:c,hash:d}=(0,s.IT)(),p=(0,we.wB)(n),f=(0,we.gN)(n),{savePreferredVersionName:m}=(0,ke.iy)(n),h=[...o,...f.map((e=>{const t=p.alternateDocVersions[e.name]??Se(e);return{label:e.label,to:`${t.path}${c}${d}`,isActive:()=>e===p.activeVersion,onClick:()=>m(e.name)}})),...a],g=(0,xe.b7)(n)[0],b=t&&h.length>1?(0,l.G)({id:"theme.navbar.mobileVersionsDropdown.label",message:"Versions",description:"The label for the navbar versions dropdown on mobile view"}):g.label,y=t&&h.length>1?void 0:Se(g).path;return h.length<=1?(0,u.jsx)(ae,{...i,mobile:t,label:b,to:y,isActive:r?()=>!1:void 0}):(0,u.jsx)(fe,{...i,mobile:t,label:b,to:y,items:h,isActive:r?()=>!1:void 0})}};function _e(e){let{type:t,...n}=e;const r=function(e,t){return e&&"default"!==e?e:"items"in t?"dropdown":"default"}(t,n),o=Ee[r];if(!o)throw new Error(`No NavbarItem component found for type "${t}".`);return(0,u.jsx)(o,{...n})}function Ce(){const e=(0,L.q)(),t=(0,w.y)().navbar.items;return(0,u.jsx)("ul",{className:"menu__list",children:t.map(((t,n)=>(0,r.createElement)(_e,{mobile:!0,...t,onClick:()=>e.toggle(),key:n})))})}function ze(e){return(0,u.jsx)("button",{...e,type:"button",className:"clean-btn navbar-sidebar__back",children:(0,u.jsx)(l.c,{id:"theme.navbar.mobileSidebarSecondaryMenu.backButtonLabel",description:"The label of the back button to return to main menu, inside the mobile navbar sidebar secondary menu (notably used to display the docs sidebar)",children:"\u2190 Back to main menu"})})}function Te(){const e=0===(0,w.y)().navbar.items.length,t=D();return(0,u.jsxs)(u.Fragment,{children:[!e&&(0,u.jsx)(ze,{onClick:()=>t.hide()}),t.content]})}function Le(){const e=(0,L.q)();var t;return void 0===(t=e.shown)&&(t=!0),(0,r.useEffect)((()=>(document.body.style.overflow=t?"hidden":"visible",()=>{document.body.style.overflow="visible"})),[t]),e.shouldRender?(0,u.jsx)(I,{header:(0,u.jsx)(K,{}),primaryMenu:(0,u.jsx)(Ce,{}),secondaryMenu:(0,u.jsx)(Te,{})}):null}const je={navbarHideable:"navbarHideable_m1mJ",navbarHidden:"navbarHidden_jGov"};function Ae(e){return(0,u.jsx)("div",{role:"presentation",...e,className:(0,o.c)("navbar-sidebar__backdrop",e.className)})}function Fe(e){let{children:t}=e;const{navbar:{hideOnScroll:n,style:a}}=(0,w.y)(),i=(0,L.q)(),{navbarRef:s,isNavbarVisible:d}=function(e){const[t,n]=(0,r.useState)(e),o=(0,r.useRef)(!1),a=(0,r.useRef)(0),i=(0,r.useCallback)((e=>{null!==e&&(a.current=e.getBoundingClientRect().height)}),[]);return(0,j.SM)(((t,r)=>{let{scrollY:i}=t;if(!e)return;if(i=s?n(!1):i+c{if(!e)return;const r=t.location.hash;if(r?document.getElementById(r.substring(1)):void 0)return o.current=!0,void n(!1);n(!0)})),{navbarRef:i,isNavbarVisible:t}}(n);return(0,u.jsxs)("nav",{ref:s,"aria-label":(0,l.G)({id:"theme.NavBar.navAriaLabel",message:"Main",description:"The ARIA label for the main navigation"}),className:(0,o.c)("navbar","navbar--fixed-top",n&&[je.navbarHideable,!d&&je.navbarHidden],{"navbar--dark":"dark"===a,"navbar--primary":"primary"===a,"navbar-sidebar--show":i.shown}),children:[t,(0,u.jsx)(Ae,{onClick:i.toggle}),(0,u.jsx)(Le,{})]})}var Pe=n(15684);const Ne={errorBoundaryError:"errorBoundaryError_a6uf",errorBoundaryFallback:"errorBoundaryFallback_VBag"};function Re(e){return(0,u.jsx)("button",{type:"button",...e,children:(0,u.jsx)(l.c,{id:"theme.ErrorPageContent.tryAgain",description:"The label of the button to try again rendering when the React error boundary captures an error",children:"Try again"})})}function De(e){let{error:t}=e;const n=(0,Pe.getErrorCausalChain)(t).map((e=>e.message)).join("\n\nCause:\n");return(0,u.jsx)("p",{className:Ne.errorBoundaryError,children:n})}class Ie extends r.Component{componentDidCatch(e,t){throw this.props.onError(e,t)}render(){return this.props.children}}const Oe="right";function Me(e){let{width:t=30,height:n=30,className:r,...o}=e;return(0,u.jsx)("svg",{className:r,width:t,height:n,viewBox:"0 0 30 30","aria-hidden":"true",...o,children:(0,u.jsx)("path",{stroke:"currentColor",strokeLinecap:"round",strokeMiterlimit:"10",strokeWidth:"2",d:"M4 7h22M4 15h22M4 23h22"})})}function Be(){const{toggle:e,shown:t}=(0,L.q)();return(0,u.jsx)("button",{onClick:e,"aria-label":(0,l.G)({id:"theme.docs.sidebar.toggleSidebarButtonAriaLabel",message:"Toggle navigation bar",description:"The ARIA label for hamburger menu button of mobile navigation"}),"aria-expanded":t,className:"navbar__toggle clean-btn",type:"button",children:(0,u.jsx)(Me,{})})}const Ue={colorModeToggle:"colorModeToggle_DEke"};function $e(e){let{items:t}=e;return(0,u.jsx)(u.Fragment,{children:t.map(((e,t)=>(0,u.jsx)(Ie,{onError:t=>new Error(`A theme navbar item failed to render.\nPlease double-check the following navbar item (themeConfig.navbar.items) of your Docusaurus config:\n${JSON.stringify(e,null,2)}`,{cause:t}),children:(0,u.jsx)(_e,{...e})},t)))})}function qe(e){let{left:t,right:n}=e;return(0,u.jsxs)("div",{className:"navbar__inner",children:[(0,u.jsx)("div",{className:"navbar__items",children:t}),(0,u.jsx)("div",{className:"navbar__items navbar__items--right",children:n})]})}function We(){const e=(0,L.q)(),t=(0,w.y)().navbar.items,[n,r]=function(e){function t(e){return"left"===(e.position??Oe)}return[e.filter(t),e.filter((e=>!t(e)))]}(t),o=t.find((e=>"search"===e.type));return(0,u.jsx)(qe,{left:(0,u.jsxs)(u.Fragment,{children:[!e.disabled&&(0,u.jsx)(Be,{}),(0,u.jsx)(Y,{}),(0,u.jsx)($e,{items:n})]}),right:(0,u.jsxs)(u.Fragment,{children:[(0,u.jsx)($e,{items:r}),(0,u.jsx)(G,{className:Ue.colorModeToggle}),!o&&(0,u.jsx)(ve,{children:(0,u.jsx)(be.c,{})})]})})}function He(){return(0,u.jsx)(Fe,{children:(0,u.jsx)(We,{})})}function Ge(e){let{item:t}=e;const{to:n,href:r,label:o,prependBaseUrlToHref:a,...i}=t,s=(0,Z.c)(n),l=(0,Z.c)(r,{forcePrependBaseUrl:!0});return(0,u.jsxs)(X.c,{className:"footer__link-item",...r?{href:a?l:r}:{to:s},...i,children:[o,r&&!(0,J.c)(r)&&(0,u.jsx)(te.c,{})]})}function Ve(e){let{item:t}=e;return t.html?(0,u.jsx)("li",{className:"footer__item",dangerouslySetInnerHTML:{__html:t.html}}):(0,u.jsx)("li",{className:"footer__item",children:(0,u.jsx)(Ge,{item:t})},t.href??t.to)}function Ye(e){let{column:t}=e;return(0,u.jsxs)("div",{className:"col footer__col",children:[(0,u.jsx)("div",{className:"footer__title",children:t.title}),(0,u.jsx)("ul",{className:"footer__items clean-list",children:t.items.map(((e,t)=>(0,u.jsx)(Ve,{item:e},t)))})]})}function Qe(e){let{columns:t}=e;return(0,u.jsx)("div",{className:"row footer__links",children:t.map(((e,t)=>(0,u.jsx)(Ye,{column:e},t)))})}function Ke(){return(0,u.jsx)("span",{className:"footer__link-separator",children:"\xb7"})}function Xe(e){let{item:t}=e;return t.html?(0,u.jsx)("span",{className:"footer__link-item",dangerouslySetInnerHTML:{__html:t.html}}):(0,u.jsx)(Ge,{item:t})}function Ze(e){let{links:t}=e;return(0,u.jsx)("div",{className:"footer__links text--center",children:(0,u.jsx)("div",{className:"footer__links",children:t.map(((e,n)=>(0,u.jsxs)(r.Fragment,{children:[(0,u.jsx)(Xe,{item:e}),t.length!==n+1&&(0,u.jsx)(Ke,{})]},n)))})})}function Je(e){let{links:t}=e;return function(e){return"title"in e[0]}(t)?(0,u.jsx)(Qe,{columns:t}):(0,u.jsx)(Ze,{links:t})}var et=n(61964);const tt={footerLogoLink:"footerLogoLink_BH7S"};function nt(e){let{logo:t}=e;const{withBaseUrl:n}=(0,Z.E)(),r={light:n(t.src),dark:n(t.srcDark??t.src)};return(0,u.jsx)(et.c,{className:(0,o.c)("footer__logo",t.className),alt:t.alt,sources:r,width:t.width,height:t.height,style:t.style})}function rt(e){let{logo:t}=e;return t.href?(0,u.jsx)(X.c,{href:t.href,className:tt.footerLogoLink,target:t.target,children:(0,u.jsx)(nt,{logo:t})}):(0,u.jsx)(nt,{logo:t})}function ot(e){let{copyright:t}=e;return(0,u.jsx)("div",{className:"footer__copyright",dangerouslySetInnerHTML:{__html:t}})}function at(e){let{style:t,links:n,logo:r,copyright:a}=e;return(0,u.jsx)("footer",{className:(0,o.c)("footer",{"footer--dark":"dark"===t}),children:(0,u.jsxs)("div",{className:"container container-fluid",children:[n,(r||a)&&(0,u.jsxs)("div",{className:"footer__bottom text--center",children:[r&&(0,u.jsx)("div",{className:"margin-bottom--sm",children:r}),a]})]})})}function it(){const{footer:e}=(0,w.y)();if(!e)return null;const{copyright:t,links:n,logo:r,style:o}=e;return(0,u.jsx)(at,{style:o,links:n&&n.length>0&&(0,u.jsx)(Je,{links:n}),logo:r&&(0,u.jsx)(rt,{logo:r}),copyright:t&&(0,u.jsx)(ot,{copyright:t})})}const st=r.memo(it),lt=(0,A.qY)([O.C,x.qu,j.S2,ke.gc,i.w7,function(e){let{children:t}=e;return(0,u.jsx)(F.Ub,{children:(0,u.jsx)(L.y,{children:(0,u.jsx)(N,{children:t})})})}]);function ct(e){let{children:t}=e;return(0,u.jsx)(lt,{children:t})}var ut=n(56448);function dt(e){let{error:t,tryAgain:n}=e;return(0,u.jsx)("main",{className:"container margin-vert--xl",children:(0,u.jsx)("div",{className:"row",children:(0,u.jsxs)("div",{className:"col col--6 col--offset-3",children:[(0,u.jsx)(ut.c,{as:"h1",className:"hero__title",children:(0,u.jsx)(l.c,{id:"theme.ErrorPageContent.title",description:"The title of the fallback page when the page crashed",children:"This page crashed."})}),(0,u.jsx)("div",{className:"margin-vert--lg",children:(0,u.jsx)(Re,{onClick:n,className:"button button--primary shadow--lw"})}),(0,u.jsx)("hr",{}),(0,u.jsx)("div",{className:"margin-vert--md",children:(0,u.jsx)(De,{error:t})})]})})})}const pt={mainWrapper:"mainWrapper_z2l0"};function ft(e){const{children:t,noFooter:n,wrapperClassName:r,title:s,description:l}=e;return(0,b.W)(),(0,u.jsxs)(ct,{children:[(0,u.jsx)(i.U7,{title:s,description:l}),(0,u.jsx)(v,{}),(0,u.jsx)(T,{}),(0,u.jsx)(He,{}),(0,u.jsx)("div",{id:d,className:(0,o.c)(g.W.wrapper.main,pt.mainWrapper,r),children:(0,u.jsx)(a.c,{fallback:e=>(0,u.jsx)(dt,{...e}),children:t})}),!n&&(0,u.jsx)(st,{})]})}},68164:(e,t,n)=>{"use strict";n.d(t,{c:()=>u});n(11504);var r=n(10867),o=n(70964),a=n(28264),i=n(21824),s=n(61964),l=n(17624);function c(e){let{logo:t,alt:n,imageClassName:r}=e;const a={light:(0,o.c)(t.src),dark:(0,o.c)(t.srcDark||t.src)},i=(0,l.jsx)(s.c,{className:t.className,sources:a,height:t.height,width:t.width,alt:n,style:t.style});return r?(0,l.jsx)("div",{className:r,children:i}):i}function u(e){const{siteConfig:{title:t}}=(0,a.c)(),{navbar:{title:n,logo:s}}=(0,i.y)(),{imageClassName:u,titleClassName:d,...p}=e,f=(0,o.c)(s?.href||"/"),m=n?"":t,h=s?.alt??m;return(0,l.jsxs)(r.c,{to:f,...p,...s?.target&&{target:s.target},children:[s&&(0,l.jsx)(c,{logo:s,alt:h,imageClassName:u}),null!=n&&(0,l.jsx)("b",{className:d,children:n})]})}},48712:(e,t,n)=>{"use strict";n.d(t,{c:()=>a});n(11504);var r=n(56952),o=n(17624);function a(e){let{locale:t,version:n,tag:a}=e;const i=t;return(0,o.jsxs)(r.c,{children:[t&&(0,o.jsx)("meta",{name:"docusaurus_locale",content:t}),n&&(0,o.jsx)("meta",{name:"docusaurus_version",content:n}),a&&(0,o.jsx)("meta",{name:"docusaurus_tag",content:a}),i&&(0,o.jsx)("meta",{name:"docsearch:language",content:i}),n&&(0,o.jsx)("meta",{name:"docsearch:version",content:n}),a&&(0,o.jsx)("meta",{name:"docsearch:docusaurus_tag",content:a})]})}},61964:(e,t,n)=>{"use strict";n.d(t,{c:()=>u});var r=n(11504),o=n(15420),a=n(93664),i=n(66528);const s={themedComponent:"themedComponent_mlkZ","themedComponent--light":"themedComponent--light_NVdE","themedComponent--dark":"themedComponent--dark_xIcU"};var l=n(17624);function c(e){let{className:t,children:n}=e;const c=(0,a.c)(),{colorMode:u}=(0,i.U)();return(0,l.jsx)(l.Fragment,{children:(c?"dark"===u?["dark"]:["light"]:["light","dark"]).map((e=>{const a=n({theme:e,className:(0,o.c)(t,s.themedComponent,s[`themedComponent--${e}`])});return(0,l.jsx)(r.Fragment,{children:a},e)}))})}function u(e){const{sources:t,className:n,alt:r,...o}=e;return(0,l.jsx)(c,{className:n,children:e=>{let{theme:n,className:a}=e;return(0,l.jsx)("img",{src:t[n],alt:r,className:a,...o})}})}},58448:(e,t,n)=>{"use strict";n.d(t,{U:()=>b,a:()=>c});var r=n(11504),o=n(98684),a=n(95288),i=n(13856),s=n(17624);const l="ease-in-out";function c(e){let{initialState:t}=e;const[n,o]=(0,r.useState)(t??!1),a=(0,r.useCallback)((()=>{o((e=>!e))}),[]);return{collapsed:n,setCollapsed:o,toggleCollapsed:a}}const u={display:"none",overflow:"hidden",height:"0px"},d={display:"block",overflow:"visible",height:"auto"};function p(e,t){const n=t?u:d;e.style.display=n.display,e.style.overflow=n.overflow,e.style.height=n.height}function f(e){let{collapsibleRef:t,collapsed:n,animation:o}=e;const a=(0,r.useRef)(!1);(0,r.useEffect)((()=>{const e=t.current;function r(){const t=e.scrollHeight,n=o?.duration??function(e){if((0,i.I)())return 1;const t=e/36;return Math.round(10*(4+15*t**.25+t/5))}(t);return{transition:`height ${n}ms ${o?.easing??l}`,height:`${t}px`}}function s(){const t=r();e.style.transition=t.transition,e.style.height=t.height}if(!a.current)return p(e,n),void(a.current=!0);return e.style.willChange="height",function(){const t=requestAnimationFrame((()=>{n?(s(),requestAnimationFrame((()=>{e.style.height=u.height,e.style.overflow=u.overflow}))):(e.style.display="block",requestAnimationFrame((()=>{s()})))}));return()=>cancelAnimationFrame(t)}()}),[t,n,o])}function m(e){if(!o.c.canUseDOM)return e?u:d}function h(e){let{as:t="div",collapsed:n,children:o,animation:a,onCollapseTransitionEnd:i,className:l,disableSSRStyle:c}=e;const u=(0,r.useRef)(null);return f({collapsibleRef:u,collapsed:n,animation:a}),(0,s.jsx)(t,{ref:u,style:c?void 0:m(n),onTransitionEnd:e=>{"height"===e.propertyName&&(p(u.current,n),i?.(n))},className:l,children:o})}function g(e){let{collapsed:t,...n}=e;const[o,i]=(0,r.useState)(!t),[l,c]=(0,r.useState)(t);return(0,a.c)((()=>{t||i(!0)}),[t]),(0,a.c)((()=>{o&&c(t)}),[o,t]),o?(0,s.jsx)(h,{...n,collapsed:l}):null}function b(e){let{lazy:t,...n}=e;const r=t?g:h;return(0,s.jsx)(r,{...n})}},43868:(e,t,n)=>{"use strict";n.d(t,{el:()=>h,qu:()=>m});var r=n(11504),o=n(93664),a=n(21148),i=n(91100),s=n(21824),l=n(17624);const c=(0,a.GS)("docusaurus.announcement.dismiss"),u=(0,a.GS)("docusaurus.announcement.id"),d=()=>"true"===c.get(),p=e=>c.set(String(e)),f=r.createContext(null);function m(e){let{children:t}=e;const n=function(){const{announcementBar:e}=(0,s.y)(),t=(0,o.c)(),[n,a]=(0,r.useState)((()=>!!t&&d()));(0,r.useEffect)((()=>{a(d())}),[]);const i=(0,r.useCallback)((()=>{p(!0),a(!0)}),[]);return(0,r.useEffect)((()=>{if(!e)return;const{id:t}=e;let n=u.get();"annoucement-bar"===n&&(n="announcement-bar");const r=t!==n;u.set(t),r&&p(!1),!r&&d()||a(!1)}),[e]),(0,r.useMemo)((()=>({isActive:!!e&&!n,close:i})),[e,n,i])}();return(0,l.jsx)(f.Provider,{value:n,children:t})}function h(){const e=(0,r.useContext)(f);if(!e)throw new i.AH("AnnouncementBarProvider");return e}},66528:(e,t,n)=>{"use strict";n.d(t,{C:()=>g,U:()=>b});var r=n(11504),o=n(98684),a=n(91100),i=n(21148),s=n(21824),l=n(17624);const c=r.createContext(void 0),u="theme",d=(0,i.GS)(u),p={light:"light",dark:"dark"},f=e=>e===p.dark?p.dark:p.light,m=e=>o.c.canUseDOM?f(document.documentElement.getAttribute("data-theme")):f(e),h=e=>{d.set(f(e))};function g(e){let{children:t}=e;const n=function(){const{colorMode:{defaultMode:e,disableSwitch:t,respectPrefersColorScheme:n}}=(0,s.y)(),[o,a]=(0,r.useState)(m(e));(0,r.useEffect)((()=>{t&&d.del()}),[t]);const i=(0,r.useCallback)((function(t,r){void 0===r&&(r={});const{persist:o=!0}=r;t?(a(t),o&&h(t)):(a(n?window.matchMedia("(prefers-color-scheme: dark)").matches?p.dark:p.light:e),d.del())}),[n,e]);(0,r.useEffect)((()=>{document.documentElement.setAttribute("data-theme",f(o))}),[o]),(0,r.useEffect)((()=>{if(t)return;const e=e=>{if(e.key!==u)return;const t=d.get();null!==t&&i(f(t))};return window.addEventListener("storage",e),()=>window.removeEventListener("storage",e)}),[t,i]);const l=(0,r.useRef)(!1);return(0,r.useEffect)((()=>{if(t&&!n)return;const e=window.matchMedia("(prefers-color-scheme: dark)"),r=()=>{window.matchMedia("print").matches||l.current?l.current=window.matchMedia("print").matches:i(null)};return e.addListener(r),()=>e.removeListener(r)}),[i,t,n]),(0,r.useMemo)((()=>({colorMode:o,setColorMode:i,get isDarkTheme(){return o===p.dark},setLightTheme(){i(p.light)},setDarkTheme(){i(p.dark)}})),[o,i])}();return(0,l.jsx)(c.Provider,{value:n,children:t})}function b(){const e=(0,r.useContext)(c);if(null==e)throw new a.AH("ColorModeProvider","Please see https://docusaurus.io/docs/api/themes/configuration#use-color-mode.");return e}},94592:(e,t,n)=>{"use strict";n.d(t,{gc:()=>b,iy:()=>v});var r=n(11504),o=n(62840),a=n(52488),i=n(21824),s=n(79940),l=n(91100),c=n(21148),u=n(17624);const d=e=>`docs-preferred-version-${e}`,p={save:(e,t,n)=>{(0,c.GS)(d(e),{persistence:t}).set(n)},read:(e,t)=>(0,c.GS)(d(e),{persistence:t}).get(),clear:(e,t)=>{(0,c.GS)(d(e),{persistence:t}).del()}},f=e=>Object.fromEntries(e.map((e=>[e,{preferredVersionName:null}])));const m=r.createContext(null);function h(){const e=(0,o.L0)(),t=(0,i.y)().docs.versionPersistence,n=(0,r.useMemo)((()=>Object.keys(e)),[e]),[a,s]=(0,r.useState)((()=>f(n)));(0,r.useEffect)((()=>{s(function(e){let{pluginIds:t,versionPersistence:n,allDocsData:r}=e;function o(e){const t=p.read(e,n);return r[e].versions.some((e=>e.name===t))?{preferredVersionName:t}:(p.clear(e,n),{preferredVersionName:null})}return Object.fromEntries(t.map((e=>[e,o(e)])))}({allDocsData:e,versionPersistence:t,pluginIds:n}))}),[e,t,n]);return[a,(0,r.useMemo)((()=>({savePreferredVersion:function(e,n){p.save(e,t,n),s((t=>({...t,[e]:{preferredVersionName:n}})))}})),[t])]}function g(e){let{children:t}=e;const n=h();return(0,u.jsx)(m.Provider,{value:n,children:t})}function b(e){let{children:t}=e;return s.c1?(0,u.jsx)(g,{children:t}):(0,u.jsx)(u.Fragment,{children:t})}function y(){const e=(0,r.useContext)(m);if(!e)throw new l.AH("DocsPreferredVersionContextProvider");return e}function v(e){void 0===e&&(e=a.M);const t=(0,o.OK)(e),[n,i]=y(),{preferredVersionName:s}=n[e];return{preferredVersion:t.versions.find((e=>e.name===s))??null,savePreferredVersionName:(0,r.useCallback)((t=>{i.savePreferredVersion(e,t)}),[i,e])}}},46192:(e,t,n)=>{"use strict";n.d(t,{m:()=>c,y:()=>l});var r=n(11504),o=n(91100),a=n(17624);const i=Symbol("EmptyContext"),s=r.createContext(i);function l(e){let{children:t,name:n,items:o}=e;const i=(0,r.useMemo)((()=>n&&o?{name:n,items:o}:null),[n,o]);return(0,a.jsx)(s.Provider,{value:i,children:t})}function c(){const e=(0,r.useContext)(s);if(e===i)throw new o.AH("DocsSidebarProvider");return e}},69920:(e,t,n)=>{"use strict";n.d(t,{E:()=>l,Q:()=>s});var r=n(11504),o=n(91100),a=n(17624);const i=r.createContext(null);function s(e){let{children:t,version:n}=e;return(0,a.jsx)(i.Provider,{value:n,children:t})}function l(){const e=(0,r.useContext)(i);if(null===e)throw new o.AH("DocsVersionProvider");return e}},41336:(e,t,n)=>{"use strict";n.d(t,{y:()=>f,q:()=>m});var r=n(11504),o=n(45168),a=n(11432),i=n(55592),s=n(91100);function l(e){!function(e){const t=(0,i.Uz)(),n=(0,s.yA)(e);(0,r.useEffect)((()=>t.block(((e,t)=>n(e,t)))),[t,n])}(((t,n)=>{if("POP"===n)return e(t,n)}))}var c=n(21824),u=n(17624);const d=r.createContext(void 0);function p(){const e=function(){const e=(0,o.MF)(),{items:t}=(0,c.y)().navbar;return 0===t.length&&!e.component}(),t=(0,a.U)(),n=!e&&"mobile"===t,[i,s]=(0,r.useState)(!1);l((()=>{if(i)return s(!1),!1}));const u=(0,r.useCallback)((()=>{s((e=>!e))}),[]);return(0,r.useEffect)((()=>{"desktop"===t&&s(!1)}),[t]),(0,r.useMemo)((()=>({disabled:e,shouldRender:n,toggle:u,shown:i})),[e,n,u,i])}function f(e){let{children:t}=e;const n=p();return(0,u.jsx)(d.Provider,{value:n,children:t})}function m(){const e=r.useContext(d);if(void 0===e)throw new s.AH("NavbarMobileSidebarProvider");return e}},45168:(e,t,n)=>{"use strict";n.d(t,{MF:()=>l,Mx:()=>c,Ub:()=>s});var r=n(11504),o=n(91100),a=n(17624);const i=r.createContext(null);function s(e){let{children:t}=e;const n=(0,r.useState)({component:null,props:null});return(0,a.jsx)(i.Provider,{value:n,children:t})}function l(){const e=(0,r.useContext)(i);if(!e)throw new o.AH("NavbarSecondaryMenuContentProvider");return e[0]}function c(e){let{component:t,props:n}=e;const a=(0,r.useContext)(i);if(!a)throw new o.AH("NavbarSecondaryMenuContentProvider");const[,s]=a,l=(0,o.Mh)(n);return(0,r.useEffect)((()=>{s({component:t,props:l})}),[s,t,l]),(0,r.useEffect)((()=>()=>s({component:null,props:null})),[s]),null}},60204:(e,t,n)=>{"use strict";n.d(t,{m:()=>o,W:()=>a});var r=n(11504);const o="navigation-with-keyboard";function a(){(0,r.useEffect)((()=>{function e(e){"keydown"===e.type&&"Tab"===e.key&&document.body.classList.add(o),"mousedown"===e.type&&document.body.classList.remove(o)}return document.addEventListener("keydown",e),document.addEventListener("mousedown",e),()=>{document.body.classList.remove(o),document.removeEventListener("keydown",e),document.removeEventListener("mousedown",e)}}),[])}},11432:(e,t,n)=>{"use strict";n.d(t,{U:()=>s});var r=n(11504),o=n(98684);const a={desktop:"desktop",mobile:"mobile",ssr:"ssr"},i=996;function s(e){let{desktopBreakpoint:t=i}=void 0===e?{}:e;const[n,s]=(0,r.useState)((()=>"ssr"));return(0,r.useEffect)((()=>{function e(){s(function(e){if(!o.c.canUseDOM)throw new Error("getWindowSize() should only be called after React hydration");return window.innerWidth>e?a.desktop:a.mobile}(t))}return e(),window.addEventListener("resize",e),()=>{window.removeEventListener("resize",e)}}),[t]),n}},45864:(e,t,n)=>{"use strict";n.d(t,{W:()=>r});const r={page:{blogListPage:"blog-list-page",blogPostPage:"blog-post-page",blogTagsListPage:"blog-tags-list-page",blogTagPostListPage:"blog-tags-post-list-page",docsDocPage:"docs-doc-page",docsTagsListPage:"docs-tags-list-page",docsTagDocListPage:"docs-tags-doc-list-page",mdxPage:"mdx-page"},wrapper:{main:"main-wrapper",blogPages:"blog-wrapper",docsPages:"docs-wrapper",mdxPages:"mdx-wrapper"},common:{editThisPage:"theme-edit-this-page",lastUpdated:"theme-last-updated",backToTopButton:"theme-back-to-top-button",codeBlock:"theme-code-block",admonition:"theme-admonition",unlistedBanner:"theme-unlisted-banner",admonitionType:e=>`theme-admonition-${e}`},layout:{},docs:{docVersionBanner:"theme-doc-version-banner",docVersionBadge:"theme-doc-version-badge",docBreadcrumbs:"theme-doc-breadcrumbs",docMarkdown:"theme-doc-markdown",docTocMobile:"theme-doc-toc-mobile",docTocDesktop:"theme-doc-toc-desktop",docFooter:"theme-doc-footer",docFooterTagsRow:"theme-doc-footer-tags-row",docFooterEditMetaRow:"theme-doc-footer-edit-meta-row",docSidebarContainer:"theme-doc-sidebar-container",docSidebarMenu:"theme-doc-sidebar-menu",docSidebarItemCategory:"theme-doc-sidebar-item-category",docSidebarItemLink:"theme-doc-sidebar-item-link",docSidebarItemCategoryLevel:e=>`theme-doc-sidebar-item-category-level-${e}`,docSidebarItemLinkLevel:e=>`theme-doc-sidebar-item-link-level-${e}`},blog:{blogFooterTagsRow:"theme-blog-footer-tags-row",blogFooterEditMetaRow:"theme-blog-footer-edit-meta-row"}}},13856:(e,t,n)=>{"use strict";function r(){return window.matchMedia("(prefers-reduced-motion: reduce)").matches}n.d(t,{I:()=>r})},79940:(e,t,n)=>{"use strict";n.d(t,{Gw:()=>f,Md:()=>g,c1:()=>p,Uj:()=>E,b7:()=>x,Qf:()=>S,Ab:()=>k,js:()=>w,mg:()=>y});var r=n(11504),o=n(55592),a=n(85464),i=n(62840),s=n(94592),l=n(69920),c=n(46192);function u(e){return Array.from(new Set(e))}var d=n(13376);const p=!!i.L0;function f(e){return"link"!==e.type||e.unlisted?"category"===e.type?function(e){if(e.href&&!e.linkUnlisted)return e.href;for(const t of e.items){const e=f(t);if(e)return e}}(e):void 0:e.href}const m=(e,t)=>void 0!==e&&(0,d.Sc)(e,t),h=(e,t)=>e.some((e=>g(e,t)));function g(e,t){return"link"===e.type?m(e.href,t):"category"===e.type&&(m(e.href,t)||h(e.items,t))}function b(e,t){switch(e.type){case"category":return g(e,t)||e.items.some((e=>b(e,t)));case"link":return!e.unlisted||g(e,t);default:return!0}}function y(e,t){return(0,r.useMemo)((()=>e.filter((e=>b(e,t)))),[e,t])}function v(e){let{sidebarItems:t,pathname:n,onlyCategories:r=!1}=e;const o=[];return function e(t){for(const a of t)if("category"===a.type&&((0,d.Sc)(a.href,n)||e(a.items))||"link"===a.type&&(0,d.Sc)(a.href,n)){return r&&"category"!==a.type||o.unshift(a),!0}return!1}(t),o}function w(){const e=(0,c.m)(),{pathname:t}=(0,o.IT)(),n=(0,i.UF)()?.pluginData.breadcrumbs;return!1!==n&&e?v({sidebarItems:e.items,pathname:t}):null}function x(e){const{activeVersion:t}=(0,i.wB)(e),{preferredVersion:n}=(0,s.iy)(e),o=(0,i.aA)(e);return(0,r.useMemo)((()=>u([t,n,o].filter(Boolean))),[t,n,o])}function k(e,t){const n=x(t);return(0,r.useMemo)((()=>{const t=n.flatMap((e=>e.sidebars?Object.entries(e.sidebars):[])),r=t.find((t=>t[0]===e));if(!r)throw new Error(`Can't find any sidebar with id "${e}" in version${n.length>1?"s":""} ${n.map((e=>e.name)).join(", ")}".\nAvailable sidebar ids are:\n- ${t.map((e=>e[0])).join("\n- ")}`);return r[1]}),[e,n])}function S(e,t){const n=x(t);return(0,r.useMemo)((()=>{const t=n.flatMap((e=>e.docs)),r=t.find((t=>t.id===e));if(!r){if(n.flatMap((e=>e.draftIds)).includes(e))return null;throw new Error(`Couldn't find any doc with id "${e}" in version${n.length>1?"s":""} "${n.map((e=>e.name)).join(", ")}".\nAvailable doc ids are:\n- ${u(t.map((e=>e.id))).join("\n- ")}`)}return r}),[e,n])}function E(e){let{route:t}=e;const n=(0,o.IT)(),r=(0,l.E)(),i=t.routes,s=i.find((e=>(0,o.ot)(n.pathname,e)));if(!s)return null;const c=s.sidebar,u=c?r.docsSidebars[c]:void 0;return{docElement:(0,a.k)(i),sidebarName:c,sidebarItems:u}}},68900:(e,t,n)=>{"use strict";n.d(t,{cr:()=>p,U7:()=>u,w7:()=>f});var r=n(11504),o=n(15420),a=n(56952),i=n(85308),s=n(70964),l=n(28264);var c=n(17624);function u(e){let{title:t,description:n,keywords:r,image:o,children:i}=e;const u=function(e){const{siteConfig:t}=(0,l.c)(),{title:n,titleDelimiter:r}=t;return e?.trim().length?`${e.trim()} ${r} ${n}`:n}(t),{withBaseUrl:d}=(0,s.E)(),p=o?d(o,{absolute:!0}):void 0;return(0,c.jsxs)(a.c,{children:[t&&(0,c.jsx)("title",{children:u}),t&&(0,c.jsx)("meta",{property:"og:title",content:u}),n&&(0,c.jsx)("meta",{name:"description",content:n}),n&&(0,c.jsx)("meta",{property:"og:description",content:n}),r&&(0,c.jsx)("meta",{name:"keywords",content:Array.isArray(r)?r.join(","):r}),p&&(0,c.jsx)("meta",{property:"og:image",content:p}),p&&(0,c.jsx)("meta",{name:"twitter:image",content:p}),i]})}const d=r.createContext(void 0);function p(e){let{className:t,children:n}=e;const i=r.useContext(d),s=(0,o.c)(i,t);return(0,c.jsxs)(d.Provider,{value:s,children:[(0,c.jsx)(a.c,{children:(0,c.jsx)("html",{className:s})}),n]})}function f(e){let{children:t}=e;const n=(0,i.c)(),r=`plugin-${n.plugin.name.replace(/docusaurus-(?:plugin|theme)-(?:content-)?/gi,"")}`;const a=`plugin-id-${n.plugin.id}`;return(0,c.jsx)(p,{className:(0,o.c)(r,a),children:t})}},91100:(e,t,n)=>{"use strict";n.d(t,{AH:()=>l,Mh:()=>c,i0:()=>s,qY:()=>u,yA:()=>i});var r=n(11504),o=n(95288),a=n(17624);function i(e){const t=(0,r.useRef)(e);return(0,o.c)((()=>{t.current=e}),[e]),(0,r.useCallback)((function(){return t.current(...arguments)}),[])}function s(e){const t=(0,r.useRef)();return(0,o.c)((()=>{t.current=e})),t.current}class l extends Error{constructor(e,t){super(),this.name="ReactContextError",this.message=`Hook ${this.stack?.split("\n")[1]?.match(/at (?:\w+\.)?(?\w+)/)?.groups.name??""} is called outside the <${e}>. ${t??""}`}}function c(e){const t=Object.entries(e);return t.sort(((e,t)=>e[0].localeCompare(t[0]))),(0,r.useMemo)((()=>e),t.flat())}function u(e){return t=>{let{children:n}=t;return(0,a.jsx)(a.Fragment,{children:e.reduceRight(((e,t)=>(0,a.jsx)(t,{children:e})),n)})}}},13376:(e,t,n)=>{"use strict";n.d(t,{Sc:()=>i,Y5:()=>s});var r=n(11504),o=n(628),a=n(28264);function i(e,t){const n=e=>(!e||e.endsWith("/")?e:`${e}/`)?.toLowerCase();return n(e)===n(t)}function s(){const{baseUrl:e}=(0,a.c)().siteConfig;return(0,r.useMemo)((()=>function(e){let{baseUrl:t,routes:n}=e;function r(e){return e.path===t&&!0===e.exact}function o(e){return e.path===t&&!e.exact}return function e(t){if(0===t.length)return;return t.find(r)||e(t.filter(o).flatMap((e=>e.routes??[])))}(n)}({routes:o.c,baseUrl:e})),[e])}},53943:(e,t,n)=>{"use strict";n.d(t,{S2:()=>c,SM:()=>p,yI:()=>f});var r=n(11504),o=n(98684),a=n(93664),i=(n(95288),n(91100)),s=n(17624);const l=r.createContext(void 0);function c(e){let{children:t}=e;const n=function(){const e=(0,r.useRef)(!0);return(0,r.useMemo)((()=>({scrollEventsEnabledRef:e,enableScrollEvents:()=>{e.current=!0},disableScrollEvents:()=>{e.current=!1}})),[])}();return(0,s.jsx)(l.Provider,{value:n,children:t})}function u(){const e=(0,r.useContext)(l);if(null==e)throw new i.AH("ScrollControllerProvider");return e}const d=()=>o.c.canUseDOM?{scrollX:window.pageXOffset,scrollY:window.pageYOffset}:null;function p(e,t){void 0===t&&(t=[]);const{scrollEventsEnabledRef:n}=u(),o=(0,r.useRef)(d()),a=(0,i.yA)(e);(0,r.useEffect)((()=>{const e=()=>{if(!n.current)return;const e=d();a(e,o.current),o.current=e},t={passive:!0};return e(),window.addEventListener("scroll",e,t),()=>window.removeEventListener("scroll",e,t)}),[a,n,...t])}function f(){const e=(0,r.useRef)(null),t=(0,a.c)()&&"smooth"===getComputedStyle(document.documentElement).scrollBehavior;return{startScroll:n=>{e.current=t?function(e){return window.scrollTo({top:e,behavior:"smooth"}),()=>{}}(n):function(e){let t=null;const n=document.documentElement.scrollTop>e;return function r(){const o=document.documentElement.scrollTop;(n&&o>e||!n&&ot&&cancelAnimationFrame(t)}(n)},cancelScroll:()=>e.current?.()}}},14456:(e,t,n)=>{"use strict";n.d(t,{SE:()=>o,e6:()=>r});n(28264);const r="default";function o(e,t){return`docs-${e}-${t}`}},21148:(e,t,n)=>{"use strict";n.d(t,{GS:()=>l});n(11504);const r="localStorage";function o(e){let{key:t,oldValue:n,newValue:r,storage:o}=e;if(n===r)return;const a=document.createEvent("StorageEvent");a.initStorageEvent("storage",!1,!1,t,n,r,window.location.href,o),window.dispatchEvent(a)}function a(e){if(void 0===e&&(e=r),"undefined"==typeof window)throw new Error("Browser storage is not available on Node.js/Docusaurus SSR process.");if("none"===e)return null;try{return window[e]}catch(n){return t=n,i||(console.warn("Docusaurus browser storage is not available.\nPossible reasons: running Docusaurus in an iframe, in an incognito browser session, or using too strict browser privacy settings.",t),i=!0),null}var t}let i=!1;const s={get:()=>null,set:()=>{},del:()=>{},listen:()=>()=>{}};function l(e,t){if("undefined"==typeof window)return function(e){function t(){throw new Error(`Illegal storage API usage for storage key "${e}".\nDocusaurus storage APIs are not supposed to be called on the server-rendering process.\nPlease only call storage APIs in effects and event handlers.`)}return{get:t,set:t,del:t,listen:t}}(e);const n=a(t?.persistence);return null===n?s:{get:()=>{try{return n.getItem(e)}catch(t){return console.error(`Docusaurus storage error, can't get key=${e}`,t),null}},set:t=>{try{const r=n.getItem(e);n.setItem(e,t),o({key:e,oldValue:r,newValue:t,storage:n})}catch(r){console.error(`Docusaurus storage error, can't set ${e}=${t}`,r)}},del:()=>{try{const t=n.getItem(e);n.removeItem(e),o({key:e,oldValue:t,newValue:null,storage:n})}catch(t){console.error(`Docusaurus storage error, can't delete key=${e}`,t)}},listen:t=>{try{const r=r=>{r.storageArea===n&&r.key===e&&t(r)};return window.addEventListener("storage",r),()=>window.removeEventListener("storage",r)}catch(r){return console.error(`Docusaurus storage error, can't listen for changes of key=${e}`,r),()=>{}}}}}},1616:(e,t,n)=>{"use strict";n.d(t,{D:()=>i});var r=n(28264),o=n(55592),a=n(15684);function i(){const{siteConfig:{baseUrl:e,url:t,trailingSlash:n},i18n:{defaultLocale:i,currentLocale:s}}=(0,r.c)(),{pathname:l}=(0,o.IT)(),c=(0,a.applyTrailingSlash)(l,{trailingSlash:n,baseUrl:e}),u=s===i?e:e.replace(`/${s}/`,"/"),d=c.replace(e,"");return{createUrl:function(e){let{locale:n,fullyQualified:r}=e;return`${r?t:""}${function(e){return e===i?`${u}`:`${u}${e}/`}(n)}${d}`}}}},27124:(e,t,n)=>{"use strict";n.d(t,{c:()=>i});var r=n(11504),o=n(55592),a=n(91100);function i(e){const t=(0,o.IT)(),n=(0,a.i0)(t),i=(0,a.yA)(e);(0,r.useEffect)((()=>{n&&t!==n&&i({location:t,previousLocation:n})}),[i,t,n])}},21824:(e,t,n)=>{"use strict";n.d(t,{y:()=>o});var r=n(28264);function o(){return(0,r.c)().siteConfig.themeConfig}},21600:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.removeTrailingSlash=t.addLeadingSlash=t.addTrailingSlash=void 0;const r=n(32112);function o(e){return e.endsWith("/")?e:`${e}/`}function a(e){return(0,r.removeSuffix)(e,"/")}t.addTrailingSlash=o,t.default=function(e,t){const{trailingSlash:n,baseUrl:r}=t;if(e.startsWith("#"))return e;if(void 0===n)return e;const[i]=e.split(/[#?]/),s="/"===i||i===r?i:(l=i,n?o(l):a(l));var l;return e.replace(i,s)},t.addLeadingSlash=function(e){return(0,r.addPrefix)(e,"/")},t.removeTrailingSlash=a},64292:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getErrorCausalChain=void 0,t.getErrorCausalChain=function e(t){return t.cause?[t,...e(t.cause)]:[t]}},15684:function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.getErrorCausalChain=t.removePrefix=t.addSuffix=t.removeSuffix=t.addPrefix=t.removeTrailingSlash=t.addLeadingSlash=t.addTrailingSlash=t.applyTrailingSlash=t.blogPostContainerID=void 0,t.blogPostContainerID="__blog-post-container";var o=n(21600);Object.defineProperty(t,"applyTrailingSlash",{enumerable:!0,get:function(){return r(o).default}}),Object.defineProperty(t,"addTrailingSlash",{enumerable:!0,get:function(){return o.addTrailingSlash}}),Object.defineProperty(t,"addLeadingSlash",{enumerable:!0,get:function(){return o.addLeadingSlash}}),Object.defineProperty(t,"removeTrailingSlash",{enumerable:!0,get:function(){return o.removeTrailingSlash}});var a=n(32112);Object.defineProperty(t,"addPrefix",{enumerable:!0,get:function(){return a.addPrefix}}),Object.defineProperty(t,"removeSuffix",{enumerable:!0,get:function(){return a.removeSuffix}}),Object.defineProperty(t,"addSuffix",{enumerable:!0,get:function(){return a.addSuffix}}),Object.defineProperty(t,"removePrefix",{enumerable:!0,get:function(){return a.removePrefix}});var i=n(64292);Object.defineProperty(t,"getErrorCausalChain",{enumerable:!0,get:function(){return i.getErrorCausalChain}})},32112:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.removePrefix=t.addSuffix=t.removeSuffix=t.addPrefix=void 0,t.addPrefix=function(e,t){return e.startsWith(t)?e:`${t}${e}`},t.removeSuffix=function(e,t){return""===t?e:e.endsWith(t)?e.slice(0,-t.length):e},t.addSuffix=function(e,t){return e.endsWith(t)?e:`${e}${t}`},t.removePrefix=function(e,t){return e.startsWith(t)?e.slice(t.length):e}},58064:(e,t,n)=>{"use strict";n.d(t,{iU:()=>w,Yf:()=>C,gh:()=>f,Wi:()=>T,Ep:()=>p});var r=n(86404);function o(e){return"/"===e.charAt(0)}function a(e,t){for(var n=t,r=n+1,o=e.length;r=0;p--){var f=i[p];"."===f?a(i,p):".."===f?(a(i,p),d++):d&&(a(i,p),d--)}if(!c)for(;d--;d)i.unshift("..");!c||""===i[0]||i[0]&&o(i[0])||i.unshift("");var m=i.join("/");return n&&"/"!==m.substr(-1)&&(m+="/"),m};var s=n(66136);function l(e){return"/"===e.charAt(0)?e:"/"+e}function c(e){return"/"===e.charAt(0)?e.substr(1):e}function u(e,t){return function(e,t){return 0===e.toLowerCase().indexOf(t.toLowerCase())&&-1!=="/?#".indexOf(e.charAt(t.length))}(e,t)?e.substr(t.length):e}function d(e){return"/"===e.charAt(e.length-1)?e.slice(0,-1):e}function p(e){var t=e.pathname,n=e.search,r=e.hash,o=t||"/";return n&&"?"!==n&&(o+="?"===n.charAt(0)?n:"?"+n),r&&"#"!==r&&(o+="#"===r.charAt(0)?r:"#"+r),o}function f(e,t,n,o){var a;"string"==typeof e?(a=function(e){var t=e||"/",n="",r="",o=t.indexOf("#");-1!==o&&(r=t.substr(o),t=t.substr(0,o));var a=t.indexOf("?");return-1!==a&&(n=t.substr(a),t=t.substr(0,a)),{pathname:t,search:"?"===n?"":n,hash:"#"===r?"":r}}(e),a.state=t):(void 0===(a=(0,r.c)({},e)).pathname&&(a.pathname=""),a.search?"?"!==a.search.charAt(0)&&(a.search="?"+a.search):a.search="",a.hash?"#"!==a.hash.charAt(0)&&(a.hash="#"+a.hash):a.hash="",void 0!==t&&void 0===a.state&&(a.state=t));try{a.pathname=decodeURI(a.pathname)}catch(s){throw s instanceof URIError?new URIError('Pathname "'+a.pathname+'" could not be decoded. This is likely caused by an invalid percent-encoding.'):s}return n&&(a.key=n),o?a.pathname?"/"!==a.pathname.charAt(0)&&(a.pathname=i(a.pathname,o.pathname)):a.pathname=o.pathname:a.pathname||(a.pathname="/"),a}function m(){var e=null;var t=[];return{setPrompt:function(t){return e=t,function(){e===t&&(e=null)}},confirmTransitionTo:function(t,n,r,o){if(null!=e){var a="function"==typeof e?e(t,n):e;"string"==typeof a?"function"==typeof r?r(a,o):o(!0):o(!1!==a)}else o(!0)},appendListener:function(e){var n=!0;function r(){n&&e.apply(void 0,arguments)}return t.push(r),function(){n=!1,t=t.filter((function(e){return e!==r}))}},notifyListeners:function(){for(var e=arguments.length,n=new Array(e),r=0;rt?n.splice(t,n.length-t,o):n.push(o),d({action:r,location:o,index:t,entries:n})}}))},replace:function(e,t){var r="REPLACE",o=f(e,t,h(),w.location);u.confirmTransitionTo(o,r,n,(function(e){e&&(w.entries[w.index]=o,d({action:r,location:o}))}))},go:v,goBack:function(){v(-1)},goForward:function(){v(1)},canGo:function(e){var t=w.index+e;return t>=0&&t{"use strict";var r=n(62168),o={childContextTypes:!0,contextType:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDefaultProps:!0,getDerivedStateFromError:!0,getDerivedStateFromProps:!0,mixins:!0,propTypes:!0,type:!0},a={name:!0,length:!0,prototype:!0,caller:!0,callee:!0,arguments:!0,arity:!0},i={$$typeof:!0,compare:!0,defaultProps:!0,displayName:!0,propTypes:!0,type:!0},s={};function l(e){return r.isMemo(e)?i:s[e.$$typeof]||o}s[r.ForwardRef]={$$typeof:!0,render:!0,defaultProps:!0,displayName:!0,propTypes:!0},s[r.Memo]=i;var c=Object.defineProperty,u=Object.getOwnPropertyNames,d=Object.getOwnPropertySymbols,p=Object.getOwnPropertyDescriptor,f=Object.getPrototypeOf,m=Object.prototype;e.exports=function e(t,n,r){if("string"!=typeof n){if(m){var o=f(n);o&&o!==m&&e(t,o,r)}var i=u(n);d&&(i=i.concat(d(n)));for(var s=l(t),h=l(n),g=0;g{"use strict";e.exports=function(e,t,n,r,o,a,i,s){if(!e){var l;if(void 0===t)l=new Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var c=[n,r,o,a,i,s],u=0;(l=new Error(t.replace(/%s/g,(function(){return c[u++]})))).name="Invariant Violation"}throw l.framesToPop=1,l}}},59600:e=>{e.exports=Array.isArray||function(e){return"[object Array]"==Object.prototype.toString.call(e)}},1462:(e,t,n)=>{"use strict";n.r(t)},71496:(e,t,n)=>{"use strict";n.r(t)},22272:function(e,t,n){var r,o;r=function(){var e,t,n={version:"0.2.0"},r=n.settings={minimum:.08,easing:"ease",positionUsing:"",speed:200,trickle:!0,trickleRate:.02,trickleSpeed:800,showSpinner:!0,barSelector:'[role="bar"]',spinnerSelector:'[role="spinner"]',parent:"body",template:'
'};function o(e,t,n){return en?n:e}function a(e){return 100*(-1+e)}function i(e,t,n){var o;return(o="translate3d"===r.positionUsing?{transform:"translate3d("+a(e)+"%,0,0)"}:"translate"===r.positionUsing?{transform:"translate("+a(e)+"%,0)"}:{"margin-left":a(e)+"%"}).transition="all "+t+"ms "+n,o}n.configure=function(e){var t,n;for(t in e)void 0!==(n=e[t])&&e.hasOwnProperty(t)&&(r[t]=n);return this},n.status=null,n.set=function(e){var t=n.isStarted();e=o(e,r.minimum,1),n.status=1===e?null:e;var a=n.render(!t),c=a.querySelector(r.barSelector),u=r.speed,d=r.easing;return a.offsetWidth,s((function(t){""===r.positionUsing&&(r.positionUsing=n.getPositioningCSS()),l(c,i(e,u,d)),1===e?(l(a,{transition:"none",opacity:1}),a.offsetWidth,setTimeout((function(){l(a,{transition:"all "+u+"ms linear",opacity:0}),setTimeout((function(){n.remove(),t()}),u)}),u)):setTimeout(t,u)})),this},n.isStarted=function(){return"number"==typeof n.status},n.start=function(){n.status||n.set(0);var e=function(){setTimeout((function(){n.status&&(n.trickle(),e())}),r.trickleSpeed)};return r.trickle&&e(),this},n.done=function(e){return e||n.status?n.inc(.3+.5*Math.random()).set(1):this},n.inc=function(e){var t=n.status;return t?("number"!=typeof e&&(e=(1-t)*o(Math.random()*t,.1,.95)),t=o(t+e,0,.994),n.set(t)):n.start()},n.trickle=function(){return n.inc(Math.random()*r.trickleRate)},e=0,t=0,n.promise=function(r){return r&&"resolved"!==r.state()?(0===t&&n.start(),e++,t++,r.always((function(){0==--t?(e=0,n.done()):n.set((e-t)/e)})),this):this},n.render=function(e){if(n.isRendered())return document.getElementById("nprogress");u(document.documentElement,"nprogress-busy");var t=document.createElement("div");t.id="nprogress",t.innerHTML=r.template;var o,i=t.querySelector(r.barSelector),s=e?"-100":a(n.status||0),c=document.querySelector(r.parent);return l(i,{transition:"all 0 linear",transform:"translate3d("+s+"%,0,0)"}),r.showSpinner||(o=t.querySelector(r.spinnerSelector))&&f(o),c!=document.body&&u(c,"nprogress-custom-parent"),c.appendChild(t),t},n.remove=function(){d(document.documentElement,"nprogress-busy"),d(document.querySelector(r.parent),"nprogress-custom-parent");var e=document.getElementById("nprogress");e&&f(e)},n.isRendered=function(){return!!document.getElementById("nprogress")},n.getPositioningCSS=function(){var e=document.body.style,t="WebkitTransform"in e?"Webkit":"MozTransform"in e?"Moz":"msTransform"in e?"ms":"OTransform"in e?"O":"";return t+"Perspective"in e?"translate3d":t+"Transform"in e?"translate":"margin"};var s=function(){var e=[];function t(){var n=e.shift();n&&n(t)}return function(n){e.push(n),1==e.length&&t()}}(),l=function(){var e=["Webkit","O","Moz","ms"],t={};function n(e){return e.replace(/^-ms-/,"ms-").replace(/-([\da-z])/gi,(function(e,t){return t.toUpperCase()}))}function r(t){var n=document.body.style;if(t in n)return t;for(var r,o=e.length,a=t.charAt(0).toUpperCase()+t.slice(1);o--;)if((r=e[o]+a)in n)return r;return t}function o(e){return e=n(e),t[e]||(t[e]=r(e))}function a(e,t,n){t=o(t),e.style[t]=n}return function(e,t){var n,r,o=arguments;if(2==o.length)for(n in t)void 0!==(r=t[n])&&t.hasOwnProperty(n)&&a(e,n,r);else a(e,o[1],o[2])}}();function c(e,t){return("string"==typeof e?e:p(e)).indexOf(" "+t+" ")>=0}function u(e,t){var n=p(e),r=n+t;c(n,t)||(e.className=r.substring(1))}function d(e,t){var n,r=p(e);c(e,t)&&(n=r.replace(" "+t+" "," "),e.className=n.substring(1,n.length-1))}function p(e){return(" "+(e.className||"")+" ").replace(/\s+/gi," ")}function f(e){e&&e.parentNode&&e.parentNode.removeChild(e)}return n},void 0===(o="function"==typeof r?r.call(t,n,t,e):r)||(e.exports=o)},37248:e=>{e.exports&&(e.exports={core:{meta:{path:"components/prism-core.js",option:"mandatory"},core:"Core"},themes:{meta:{path:"themes/{id}.css",link:"index.html?theme={id}",exclusive:!0},prism:{title:"Default",option:"default"},"prism-dark":"Dark","prism-funky":"Funky","prism-okaidia":{title:"Okaidia",owner:"ocodia"},"prism-twilight":{title:"Twilight",owner:"remybach"},"prism-coy":{title:"Coy",owner:"tshedor"},"prism-solarizedlight":{title:"Solarized Light",owner:"hectormatos2011 "},"prism-tomorrow":{title:"Tomorrow Night",owner:"Rosey"}},languages:{meta:{path:"components/prism-{id}",noCSS:!0,examplesPath:"examples/prism-{id}",addCheckAll:!0},markup:{title:"Markup",alias:["html","xml","svg","mathml","ssml","atom","rss"],aliasTitles:{html:"HTML",xml:"XML",svg:"SVG",mathml:"MathML",ssml:"SSML",atom:"Atom",rss:"RSS"},option:"default"},css:{title:"CSS",option:"default",modify:"markup"},clike:{title:"C-like",option:"default"},javascript:{title:"JavaScript",require:"clike",modify:"markup",optional:"regex",alias:"js",option:"default"},abap:{title:"ABAP",owner:"dellagustin"},abnf:{title:"ABNF",owner:"RunDevelopment"},actionscript:{title:"ActionScript",require:"javascript",modify:"markup",owner:"Golmote"},ada:{title:"Ada",owner:"Lucretia"},agda:{title:"Agda",owner:"xy-ren"},al:{title:"AL",owner:"RunDevelopment"},antlr4:{title:"ANTLR4",alias:"g4",owner:"RunDevelopment"},apacheconf:{title:"Apache Configuration",owner:"GuiTeK"},apex:{title:"Apex",require:["clike","sql"],owner:"RunDevelopment"},apl:{title:"APL",owner:"ngn"},applescript:{title:"AppleScript",owner:"Golmote"},aql:{title:"AQL",owner:"RunDevelopment"},arduino:{title:"Arduino",require:"cpp",alias:"ino",owner:"dkern"},arff:{title:"ARFF",owner:"Golmote"},armasm:{title:"ARM Assembly",alias:"arm-asm",owner:"RunDevelopment"},arturo:{title:"Arturo",alias:"art",optional:["bash","css","javascript","markup","markdown","sql"],owner:"drkameleon"},asciidoc:{alias:"adoc",title:"AsciiDoc",owner:"Golmote"},aspnet:{title:"ASP.NET (C#)",require:["markup","csharp"],owner:"nauzilus"},asm6502:{title:"6502 Assembly",owner:"kzurawel"},asmatmel:{title:"Atmel AVR Assembly",owner:"cerkit"},autohotkey:{title:"AutoHotkey",owner:"aviaryan"},autoit:{title:"AutoIt",owner:"Golmote"},avisynth:{title:"AviSynth",alias:"avs",owner:"Zinfidel"},"avro-idl":{title:"Avro IDL",alias:"avdl",owner:"RunDevelopment"},awk:{title:"AWK",alias:"gawk",aliasTitles:{gawk:"GAWK"},owner:"RunDevelopment"},bash:{title:"Bash",alias:["sh","shell"],aliasTitles:{sh:"Shell",shell:"Shell"},owner:"zeitgeist87"},basic:{title:"BASIC",owner:"Golmote"},batch:{title:"Batch",owner:"Golmote"},bbcode:{title:"BBcode",alias:"shortcode",aliasTitles:{shortcode:"Shortcode"},owner:"RunDevelopment"},bbj:{title:"BBj",owner:"hyyan"},bicep:{title:"Bicep",owner:"johnnyreilly"},birb:{title:"Birb",require:"clike",owner:"Calamity210"},bison:{title:"Bison",require:"c",owner:"Golmote"},bnf:{title:"BNF",alias:"rbnf",aliasTitles:{rbnf:"RBNF"},owner:"RunDevelopment"},bqn:{title:"BQN",owner:"yewscion"},brainfuck:{title:"Brainfuck",owner:"Golmote"},brightscript:{title:"BrightScript",owner:"RunDevelopment"},bro:{title:"Bro",owner:"wayward710"},bsl:{title:"BSL (1C:Enterprise)",alias:"oscript",aliasTitles:{oscript:"OneScript"},owner:"Diversus23"},c:{title:"C",require:"clike",owner:"zeitgeist87"},csharp:{title:"C#",require:"clike",alias:["cs","dotnet"],owner:"mvalipour"},cpp:{title:"C++",require:"c",owner:"zeitgeist87"},cfscript:{title:"CFScript",require:"clike",alias:"cfc",owner:"mjclemente"},chaiscript:{title:"ChaiScript",require:["clike","cpp"],owner:"RunDevelopment"},cil:{title:"CIL",owner:"sbrl"},cilkc:{title:"Cilk/C",require:"c",alias:"cilk-c",owner:"OpenCilk"},cilkcpp:{title:"Cilk/C++",require:"cpp",alias:["cilk-cpp","cilk"],owner:"OpenCilk"},clojure:{title:"Clojure",owner:"troglotit"},cmake:{title:"CMake",owner:"mjrogozinski"},cobol:{title:"COBOL",owner:"RunDevelopment"},coffeescript:{title:"CoffeeScript",require:"javascript",alias:"coffee",owner:"R-osey"},concurnas:{title:"Concurnas",alias:"conc",owner:"jasontatton"},csp:{title:"Content-Security-Policy",owner:"ScottHelme"},cooklang:{title:"Cooklang",owner:"ahue"},coq:{title:"Coq",owner:"RunDevelopment"},crystal:{title:"Crystal",require:"ruby",owner:"MakeNowJust"},"css-extras":{title:"CSS Extras",require:"css",modify:"css",owner:"milesj"},csv:{title:"CSV",owner:"RunDevelopment"},cue:{title:"CUE",owner:"RunDevelopment"},cypher:{title:"Cypher",owner:"RunDevelopment"},d:{title:"D",require:"clike",owner:"Golmote"},dart:{title:"Dart",require:"clike",owner:"Golmote"},dataweave:{title:"DataWeave",owner:"machaval"},dax:{title:"DAX",owner:"peterbud"},dhall:{title:"Dhall",owner:"RunDevelopment"},diff:{title:"Diff",owner:"uranusjr"},django:{title:"Django/Jinja2",require:"markup-templating",alias:"jinja2",owner:"romanvm"},"dns-zone-file":{title:"DNS zone file",owner:"RunDevelopment",alias:"dns-zone"},docker:{title:"Docker",alias:"dockerfile",owner:"JustinBeckwith"},dot:{title:"DOT (Graphviz)",alias:"gv",optional:"markup",owner:"RunDevelopment"},ebnf:{title:"EBNF",owner:"RunDevelopment"},editorconfig:{title:"EditorConfig",owner:"osipxd"},eiffel:{title:"Eiffel",owner:"Conaclos"},ejs:{title:"EJS",require:["javascript","markup-templating"],owner:"RunDevelopment",alias:"eta",aliasTitles:{eta:"Eta"}},elixir:{title:"Elixir",owner:"Golmote"},elm:{title:"Elm",owner:"zwilias"},etlua:{title:"Embedded Lua templating",require:["lua","markup-templating"],owner:"RunDevelopment"},erb:{title:"ERB",require:["ruby","markup-templating"],owner:"Golmote"},erlang:{title:"Erlang",owner:"Golmote"},"excel-formula":{title:"Excel Formula",alias:["xlsx","xls"],owner:"RunDevelopment"},fsharp:{title:"F#",require:"clike",owner:"simonreynolds7"},factor:{title:"Factor",owner:"catb0t"},false:{title:"False",owner:"edukisto"},"firestore-security-rules":{title:"Firestore security rules",require:"clike",owner:"RunDevelopment"},flow:{title:"Flow",require:"javascript",owner:"Golmote"},fortran:{title:"Fortran",owner:"Golmote"},ftl:{title:"FreeMarker Template Language",require:"markup-templating",owner:"RunDevelopment"},gml:{title:"GameMaker Language",alias:"gamemakerlanguage",require:"clike",owner:"LiarOnce"},gap:{title:"GAP (CAS)",owner:"RunDevelopment"},gcode:{title:"G-code",owner:"RunDevelopment"},gdscript:{title:"GDScript",owner:"RunDevelopment"},gedcom:{title:"GEDCOM",owner:"Golmote"},gettext:{title:"gettext",alias:"po",owner:"RunDevelopment"},gherkin:{title:"Gherkin",owner:"hason"},git:{title:"Git",owner:"lgiraudel"},glsl:{title:"GLSL",require:"c",owner:"Golmote"},gn:{title:"GN",alias:"gni",owner:"RunDevelopment"},"linker-script":{title:"GNU Linker Script",alias:"ld",owner:"RunDevelopment"},go:{title:"Go",require:"clike",owner:"arnehormann"},"go-module":{title:"Go module",alias:"go-mod",owner:"RunDevelopment"},gradle:{title:"Gradle",require:"clike",owner:"zeabdelkhalek-badido18"},graphql:{title:"GraphQL",optional:"markdown",owner:"Golmote"},groovy:{title:"Groovy",require:"clike",owner:"robfletcher"},haml:{title:"Haml",require:"ruby",optional:["css","css-extras","coffeescript","erb","javascript","less","markdown","scss","textile"],owner:"Golmote"},handlebars:{title:"Handlebars",require:"markup-templating",alias:["hbs","mustache"],aliasTitles:{mustache:"Mustache"},owner:"Golmote"},haskell:{title:"Haskell",alias:"hs",owner:"bholst"},haxe:{title:"Haxe",require:"clike",optional:"regex",owner:"Golmote"},hcl:{title:"HCL",owner:"outsideris"},hlsl:{title:"HLSL",require:"c",owner:"RunDevelopment"},hoon:{title:"Hoon",owner:"matildepark"},http:{title:"HTTP",optional:["csp","css","hpkp","hsts","javascript","json","markup","uri"],owner:"danielgtaylor"},hpkp:{title:"HTTP Public-Key-Pins",owner:"ScottHelme"},hsts:{title:"HTTP Strict-Transport-Security",owner:"ScottHelme"},ichigojam:{title:"IchigoJam",owner:"BlueCocoa"},icon:{title:"Icon",owner:"Golmote"},"icu-message-format":{title:"ICU Message Format",owner:"RunDevelopment"},idris:{title:"Idris",alias:"idr",owner:"KeenS",require:"haskell"},ignore:{title:".ignore",owner:"osipxd",alias:["gitignore","hgignore","npmignore"],aliasTitles:{gitignore:".gitignore",hgignore:".hgignore",npmignore:".npmignore"}},inform7:{title:"Inform 7",owner:"Golmote"},ini:{title:"Ini",owner:"aviaryan"},io:{title:"Io",owner:"AlesTsurko"},j:{title:"J",owner:"Golmote"},java:{title:"Java",require:"clike",owner:"sherblot"},javadoc:{title:"JavaDoc",require:["markup","java","javadoclike"],modify:"java",optional:"scala",owner:"RunDevelopment"},javadoclike:{title:"JavaDoc-like",modify:["java","javascript","php"],owner:"RunDevelopment"},javastacktrace:{title:"Java stack trace",owner:"RunDevelopment"},jexl:{title:"Jexl",owner:"czosel"},jolie:{title:"Jolie",require:"clike",owner:"thesave"},jq:{title:"JQ",owner:"RunDevelopment"},jsdoc:{title:"JSDoc",require:["javascript","javadoclike","typescript"],modify:"javascript",optional:["actionscript","coffeescript"],owner:"RunDevelopment"},"js-extras":{title:"JS Extras",require:"javascript",modify:"javascript",optional:["actionscript","coffeescript","flow","n4js","typescript"],owner:"RunDevelopment"},json:{title:"JSON",alias:"webmanifest",aliasTitles:{webmanifest:"Web App Manifest"},owner:"CupOfTea696"},json5:{title:"JSON5",require:"json",owner:"RunDevelopment"},jsonp:{title:"JSONP",require:"json",owner:"RunDevelopment"},jsstacktrace:{title:"JS stack trace",owner:"sbrl"},"js-templates":{title:"JS Templates",require:"javascript",modify:"javascript",optional:["css","css-extras","graphql","markdown","markup","sql"],owner:"RunDevelopment"},julia:{title:"Julia",owner:"cdagnino"},keepalived:{title:"Keepalived Configure",owner:"dev-itsheng"},keyman:{title:"Keyman",owner:"mcdurdin"},kotlin:{title:"Kotlin",alias:["kt","kts"],aliasTitles:{kts:"Kotlin Script"},require:"clike",owner:"Golmote"},kumir:{title:"KuMir (\u041a\u0443\u041c\u0438\u0440)",alias:"kum",owner:"edukisto"},kusto:{title:"Kusto",owner:"RunDevelopment"},latex:{title:"LaTeX",alias:["tex","context"],aliasTitles:{tex:"TeX",context:"ConTeXt"},owner:"japborst"},latte:{title:"Latte",require:["clike","markup-templating","php"],owner:"nette"},less:{title:"Less",require:"css",optional:"css-extras",owner:"Golmote"},lilypond:{title:"LilyPond",require:"scheme",alias:"ly",owner:"RunDevelopment"},liquid:{title:"Liquid",require:"markup-templating",owner:"cinhtau"},lisp:{title:"Lisp",alias:["emacs","elisp","emacs-lisp"],owner:"JuanCaicedo"},livescript:{title:"LiveScript",owner:"Golmote"},llvm:{title:"LLVM IR",owner:"porglezomp"},log:{title:"Log file",optional:"javastacktrace",owner:"RunDevelopment"},lolcode:{title:"LOLCODE",owner:"Golmote"},lua:{title:"Lua",owner:"Golmote"},magma:{title:"Magma (CAS)",owner:"RunDevelopment"},makefile:{title:"Makefile",owner:"Golmote"},markdown:{title:"Markdown",require:"markup",optional:"yaml",alias:"md",owner:"Golmote"},"markup-templating":{title:"Markup templating",require:"markup",owner:"Golmote"},mata:{title:"Mata",owner:"RunDevelopment"},matlab:{title:"MATLAB",owner:"Golmote"},maxscript:{title:"MAXScript",owner:"RunDevelopment"},mel:{title:"MEL",owner:"Golmote"},mermaid:{title:"Mermaid",owner:"RunDevelopment"},metafont:{title:"METAFONT",owner:"LaeriExNihilo"},mizar:{title:"Mizar",owner:"Golmote"},mongodb:{title:"MongoDB",owner:"airs0urce",require:"javascript"},monkey:{title:"Monkey",owner:"Golmote"},moonscript:{title:"MoonScript",alias:"moon",owner:"RunDevelopment"},n1ql:{title:"N1QL",owner:"TMWilds"},n4js:{title:"N4JS",require:"javascript",optional:"jsdoc",alias:"n4jsd",owner:"bsmith-n4"},"nand2tetris-hdl":{title:"Nand To Tetris HDL",owner:"stephanmax"},naniscript:{title:"Naninovel Script",owner:"Elringus",alias:"nani"},nasm:{title:"NASM",owner:"rbmj"},neon:{title:"NEON",owner:"nette"},nevod:{title:"Nevod",owner:"nezaboodka"},nginx:{title:"nginx",owner:"volado"},nim:{title:"Nim",owner:"Golmote"},nix:{title:"Nix",owner:"Golmote"},nsis:{title:"NSIS",owner:"idleberg"},objectivec:{title:"Objective-C",require:"c",alias:"objc",owner:"uranusjr"},ocaml:{title:"OCaml",owner:"Golmote"},odin:{title:"Odin",owner:"edukisto"},opencl:{title:"OpenCL",require:"c",modify:["c","cpp"],owner:"Milania1"},openqasm:{title:"OpenQasm",alias:"qasm",owner:"RunDevelopment"},oz:{title:"Oz",owner:"Golmote"},parigp:{title:"PARI/GP",owner:"Golmote"},parser:{title:"Parser",require:"markup",owner:"Golmote"},pascal:{title:"Pascal",alias:"objectpascal",aliasTitles:{objectpascal:"Object Pascal"},owner:"Golmote"},pascaligo:{title:"Pascaligo",owner:"DefinitelyNotAGoat"},psl:{title:"PATROL Scripting Language",owner:"bertysentry"},pcaxis:{title:"PC-Axis",alias:"px",owner:"RunDevelopment"},peoplecode:{title:"PeopleCode",alias:"pcode",owner:"RunDevelopment"},perl:{title:"Perl",owner:"Golmote"},php:{title:"PHP",require:"markup-templating",owner:"milesj"},phpdoc:{title:"PHPDoc",require:["php","javadoclike"],modify:"php",owner:"RunDevelopment"},"php-extras":{title:"PHP Extras",require:"php",modify:"php",owner:"milesj"},"plant-uml":{title:"PlantUML",alias:"plantuml",owner:"RunDevelopment"},plsql:{title:"PL/SQL",require:"sql",owner:"Golmote"},powerquery:{title:"PowerQuery",alias:["pq","mscript"],owner:"peterbud"},powershell:{title:"PowerShell",owner:"nauzilus"},processing:{title:"Processing",require:"clike",owner:"Golmote"},prolog:{title:"Prolog",owner:"Golmote"},promql:{title:"PromQL",owner:"arendjr"},properties:{title:".properties",owner:"Golmote"},protobuf:{title:"Protocol Buffers",require:"clike",owner:"just-boris"},pug:{title:"Pug",require:["markup","javascript"],optional:["coffeescript","ejs","handlebars","less","livescript","markdown","scss","stylus","twig"],owner:"Golmote"},puppet:{title:"Puppet",owner:"Golmote"},pure:{title:"Pure",optional:["c","cpp","fortran"],owner:"Golmote"},purebasic:{title:"PureBasic",require:"clike",alias:"pbfasm",owner:"HeX0R101"},purescript:{title:"PureScript",require:"haskell",alias:"purs",owner:"sriharshachilakapati"},python:{title:"Python",alias:"py",owner:"multipetros"},qsharp:{title:"Q#",require:"clike",alias:"qs",owner:"fedonman"},q:{title:"Q (kdb+ database)",owner:"Golmote"},qml:{title:"QML",require:"javascript",owner:"RunDevelopment"},qore:{title:"Qore",require:"clike",owner:"temnroegg"},r:{title:"R",owner:"Golmote"},racket:{title:"Racket",require:"scheme",alias:"rkt",owner:"RunDevelopment"},cshtml:{title:"Razor C#",alias:"razor",require:["markup","csharp"],optional:["css","css-extras","javascript","js-extras"],owner:"RunDevelopment"},jsx:{title:"React JSX",require:["markup","javascript"],optional:["jsdoc","js-extras","js-templates"],owner:"vkbansal"},tsx:{title:"React TSX",require:["jsx","typescript"]},reason:{title:"Reason",require:"clike",owner:"Golmote"},regex:{title:"Regex",owner:"RunDevelopment"},rego:{title:"Rego",owner:"JordanSh"},renpy:{title:"Ren'py",alias:"rpy",owner:"HyuchiaDiego"},rescript:{title:"ReScript",alias:"res",owner:"vmarcosp"},rest:{title:"reST (reStructuredText)",owner:"Golmote"},rip:{title:"Rip",owner:"ravinggenius"},roboconf:{title:"Roboconf",owner:"Golmote"},robotframework:{title:"Robot Framework",alias:"robot",owner:"RunDevelopment"},ruby:{title:"Ruby",require:"clike",alias:"rb",owner:"samflores"},rust:{title:"Rust",owner:"Golmote"},sas:{title:"SAS",optional:["groovy","lua","sql"],owner:"Golmote"},sass:{title:"Sass (Sass)",require:"css",optional:"css-extras",owner:"Golmote"},scss:{title:"Sass (SCSS)",require:"css",optional:"css-extras",owner:"MoOx"},scala:{title:"Scala",require:"java",owner:"jozic"},scheme:{title:"Scheme",owner:"bacchus123"},"shell-session":{title:"Shell session",require:"bash",alias:["sh-session","shellsession"],owner:"RunDevelopment"},smali:{title:"Smali",owner:"RunDevelopment"},smalltalk:{title:"Smalltalk",owner:"Golmote"},smarty:{title:"Smarty",require:"markup-templating",optional:"php",owner:"Golmote"},sml:{title:"SML",alias:"smlnj",aliasTitles:{smlnj:"SML/NJ"},owner:"RunDevelopment"},solidity:{title:"Solidity (Ethereum)",alias:"sol",require:"clike",owner:"glachaud"},"solution-file":{title:"Solution file",alias:"sln",owner:"RunDevelopment"},soy:{title:"Soy (Closure Template)",require:"markup-templating",owner:"Golmote"},sparql:{title:"SPARQL",require:"turtle",owner:"Triply-Dev",alias:"rq"},"splunk-spl":{title:"Splunk SPL",owner:"RunDevelopment"},sqf:{title:"SQF: Status Quo Function (Arma 3)",require:"clike",owner:"RunDevelopment"},sql:{title:"SQL",owner:"multipetros"},squirrel:{title:"Squirrel",require:"clike",owner:"RunDevelopment"},stan:{title:"Stan",owner:"RunDevelopment"},stata:{title:"Stata Ado",require:["mata","java","python"],owner:"RunDevelopment"},iecst:{title:"Structured Text (IEC 61131-3)",owner:"serhioromano"},stylus:{title:"Stylus",owner:"vkbansal"},supercollider:{title:"SuperCollider",alias:"sclang",owner:"RunDevelopment"},swift:{title:"Swift",owner:"chrischares"},systemd:{title:"Systemd configuration file",owner:"RunDevelopment"},"t4-templating":{title:"T4 templating",owner:"RunDevelopment"},"t4-cs":{title:"T4 Text Templates (C#)",require:["t4-templating","csharp"],alias:"t4",owner:"RunDevelopment"},"t4-vb":{title:"T4 Text Templates (VB)",require:["t4-templating","vbnet"],owner:"RunDevelopment"},tap:{title:"TAP",owner:"isaacs",require:"yaml"},tcl:{title:"Tcl",owner:"PeterChaplin"},tt2:{title:"Template Toolkit 2",require:["clike","markup-templating"],owner:"gflohr"},textile:{title:"Textile",require:"markup",optional:"css",owner:"Golmote"},toml:{title:"TOML",owner:"RunDevelopment"},tremor:{title:"Tremor",alias:["trickle","troy"],owner:"darach",aliasTitles:{trickle:"trickle",troy:"troy"}},turtle:{title:"Turtle",alias:"trig",aliasTitles:{trig:"TriG"},owner:"jakubklimek"},twig:{title:"Twig",require:"markup-templating",owner:"brandonkelly"},typescript:{title:"TypeScript",require:"javascript",optional:"js-templates",alias:"ts",owner:"vkbansal"},typoscript:{title:"TypoScript",alias:"tsconfig",aliasTitles:{tsconfig:"TSConfig"},owner:"dkern"},unrealscript:{title:"UnrealScript",alias:["uscript","uc"],owner:"RunDevelopment"},uorazor:{title:"UO Razor Script",owner:"jaseowns"},uri:{title:"URI",alias:"url",aliasTitles:{url:"URL"},owner:"RunDevelopment"},v:{title:"V",require:"clike",owner:"taggon"},vala:{title:"Vala",require:"clike",optional:"regex",owner:"TemplarVolk"},vbnet:{title:"VB.Net",require:"basic",owner:"Bigsby"},velocity:{title:"Velocity",require:"markup",owner:"Golmote"},verilog:{title:"Verilog",owner:"a-rey"},vhdl:{title:"VHDL",owner:"a-rey"},vim:{title:"vim",owner:"westonganger"},"visual-basic":{title:"Visual Basic",alias:["vb","vba"],aliasTitles:{vba:"VBA"},owner:"Golmote"},warpscript:{title:"WarpScript",owner:"RunDevelopment"},wasm:{title:"WebAssembly",owner:"Golmote"},"web-idl":{title:"Web IDL",alias:"webidl",owner:"RunDevelopment"},wgsl:{title:"WGSL",owner:"Dr4gonthree"},wiki:{title:"Wiki markup",require:"markup",owner:"Golmote"},wolfram:{title:"Wolfram language",alias:["mathematica","nb","wl"],aliasTitles:{mathematica:"Mathematica",nb:"Mathematica Notebook"},owner:"msollami"},wren:{title:"Wren",owner:"clsource"},xeora:{title:"Xeora",require:"markup",alias:"xeoracube",aliasTitles:{xeoracube:"XeoraCube"},owner:"freakmaxi"},"xml-doc":{title:"XML doc (.net)",require:"markup",modify:["csharp","fsharp","vbnet"],owner:"RunDevelopment"},xojo:{title:"Xojo (REALbasic)",owner:"Golmote"},xquery:{title:"XQuery",require:"markup",owner:"Golmote"},yaml:{title:"YAML",alias:"yml",owner:"hason"},yang:{title:"YANG",owner:"RunDevelopment"},zig:{title:"Zig",owner:"RunDevelopment"}},plugins:{meta:{path:"plugins/{id}/prism-{id}",link:"plugins/{id}/"},"line-highlight":{title:"Line Highlight",description:"Highlights specific lines and/or line ranges."},"line-numbers":{title:"Line Numbers",description:"Line number at the beginning of code lines.",owner:"kuba-kubula"},"show-invisibles":{title:"Show Invisibles",description:"Show hidden characters such as tabs and line breaks.",optional:["autolinker","data-uri-highlight"]},autolinker:{title:"Autolinker",description:"Converts URLs and emails in code to clickable links. Parses Markdown links in comments."},wpd:{title:"WebPlatform Docs",description:'Makes tokens link to WebPlatform.org documentation. The links open in a new tab.'},"custom-class":{title:"Custom Class",description:"This plugin allows you to prefix Prism's default classes (.comment can become .namespace--comment) or replace them with your defined ones (like .editor__comment). You can even add new classes.",owner:"dvkndn",noCSS:!0},"file-highlight":{title:"File Highlight",description:"Fetch external files and highlight them with Prism. Used on the Prism website itself.",noCSS:!0},"show-language":{title:"Show Language",description:"Display the highlighted language in code blocks (inline code does not show the label).",owner:"nauzilus",noCSS:!0,require:"toolbar"},"jsonp-highlight":{title:"JSONP Highlight",description:"Fetch content with JSONP and highlight some interesting content (e.g. GitHub/Gists or Bitbucket API).",noCSS:!0,owner:"nauzilus"},"highlight-keywords":{title:"Highlight Keywords",description:"Adds special CSS classes for each keyword for fine-grained highlighting.",owner:"vkbansal",noCSS:!0},"remove-initial-line-feed":{title:"Remove initial line feed",description:"Removes the initial line feed in code blocks.",owner:"Golmote",noCSS:!0},"inline-color":{title:"Inline color",description:"Adds a small inline preview for colors in style sheets.",require:"css-extras",owner:"RunDevelopment"},previewers:{title:"Previewers",description:"Previewers for angles, colors, gradients, easing and time.",require:"css-extras",owner:"Golmote"},autoloader:{title:"Autoloader",description:"Automatically loads the needed languages to highlight the code blocks.",owner:"Golmote",noCSS:!0},"keep-markup":{title:"Keep Markup",description:"Prevents custom markup from being dropped out during highlighting.",owner:"Golmote",optional:"normalize-whitespace",noCSS:!0},"command-line":{title:"Command Line",description:"Display a command line with a prompt and, optionally, the output/response from the commands.",owner:"chriswells0"},"unescaped-markup":{title:"Unescaped Markup",description:"Write markup without having to escape anything."},"normalize-whitespace":{title:"Normalize Whitespace",description:"Supports multiple operations to normalize whitespace in code blocks.",owner:"zeitgeist87",optional:"unescaped-markup",noCSS:!0},"data-uri-highlight":{title:"Data-URI Highlight",description:"Highlights data-URI contents.",owner:"Golmote",noCSS:!0},toolbar:{title:"Toolbar",description:"Attach a toolbar for plugins to easily register buttons on the top of a code block.",owner:"mAAdhaTTah"},"copy-to-clipboard":{title:"Copy to Clipboard Button",description:"Add a button that copies the code block to the clipboard when clicked.",owner:"mAAdhaTTah",require:"toolbar",noCSS:!0},"download-button":{title:"Download Button",description:"A button in the toolbar of a code block adding a convenient way to download a code file.",owner:"Golmote",require:"toolbar",noCSS:!0},"match-braces":{title:"Match braces",description:"Highlights matching braces.",owner:"RunDevelopment"},"diff-highlight":{title:"Diff Highlight",description:"Highlights the code inside diff blocks.",owner:"RunDevelopment",require:"diff"},"filter-highlight-all":{title:"Filter highlightAll",description:"Filters the elements the highlightAll and highlightAllUnder methods actually highlight.",owner:"RunDevelopment",noCSS:!0},treeview:{title:"Treeview",description:"A language with special styles to highlight file system tree structures.",owner:"Golmote"}}})},90452:(e,t,n)=>{const r=n(37248),o=n(88284),a=new Set;function i(e){void 0===e?e=Object.keys(r.languages).filter((e=>"meta"!=e)):Array.isArray(e)||(e=[e]);const t=[...a,...Object.keys(Prism.languages)];o(r,e,t).load((e=>{if(!(e in r.languages))return void(i.silent||console.warn("Language does not exist: "+e));const t="./prism-"+e;delete n.c[n(51976).resolve(t)],delete Prism.languages[e],n(51976)(t),a.add(e)}))}i.silent=!1,e.exports=i},71808:()=>{!function(e){function t(e,t){return"___"+e.toUpperCase()+t+"___"}Object.defineProperties(e.languages["markup-templating"]={},{buildPlaceholders:{value:function(n,r,o,a){if(n.language===r){var i=n.tokenStack=[];n.code=n.code.replace(o,(function(e){if("function"==typeof a&&!a(e))return e;for(var o,s=i.length;-1!==n.code.indexOf(o=t(r,s));)++s;return i[s]=e,o})),n.grammar=e.languages.markup}}},tokenizePlaceholders:{value:function(n,r){if(n.language===r&&n.tokenStack){n.grammar=e.languages[r];var o=0,a=Object.keys(n.tokenStack);!function i(s){for(var l=0;l=a.length);l++){var c=s[l];if("string"==typeof c||c.content&&"string"==typeof c.content){var u=a[o],d=n.tokenStack[u],p="string"==typeof c?c:c.content,f=t(r,u),m=p.indexOf(f);if(m>-1){++o;var h=p.substring(0,m),g=new e.Token(r,e.tokenize(d,n.grammar),"language-"+r,d),b=p.substring(m+f.length),y=[];h&&y.push.apply(y,i([h])),y.push(g),b&&y.push.apply(y,i([b])),"string"==typeof c?s.splice.apply(s,[l,1].concat(y)):c.content=y}}else c.content&&i(c.content)}return s}(n.tokens)}}}})}(Prism)},58660:(e,t,n)=>{var r={"./":90452};function o(e){var t=a(e);return n(t)}function a(e){if(!n.o(r,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return r[e]}o.keys=function(){return Object.keys(r)},o.resolve=a,e.exports=o,o.id=58660},51976:(e,t,n)=>{var r={"./":90452};function o(e){var t=a(e);return n(t)}function a(e){if(!n.o(r,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return r[e]}o.keys=function(){return Object.keys(r)},o.resolve=a,e.exports=o,o.id=51976},88284:e=>{"use strict";var t=function(){var e=function(){};function t(e,t){Array.isArray(e)?e.forEach(t):null!=e&&t(e,0)}function n(e){for(var t={},n=0,r=e.length;n "));var s={},l=e[r];if(l){function c(t){if(!(t in e))throw new Error(r+" depends on an unknown component "+t);if(!(t in s))for(var i in o(t,a),s[t]=!0,n[t])s[i]=!0}t(l.require,c),t(l.optional,c),t(l.modify,c)}n[r]=s,a.pop()}}return function(e){var t=n[e];return t||(o(e,r),t=n[e]),t}}function o(e){for(var t in e)return!0;return!1}return function(a,i,s){var l=function(e){var t={};for(var n in e){var r=e[n];for(var o in r)if("meta"!=o){var a=r[o];t[o]="string"==typeof a?{title:a}:a}}return t}(a),c=function(e){var n;return function(r){if(r in e)return r;if(!n)for(var o in n={},e){var a=e[o];t(a&&a.alias,(function(t){if(t in n)throw new Error(t+" cannot be alias for both "+o+" and "+n[t]);if(t in e)throw new Error(t+" cannot be alias of "+o+" because it is a component.");n[t]=o}))}return n[r]||r}}(l);i=i.map(c),s=(s||[]).map(c);var u=n(i),d=n(s);i.forEach((function e(n){var r=l[n];t(r&&r.require,(function(t){t in d||(u[t]=!0,e(t))}))}));for(var p,f=r(l),m=u;o(m);){for(var h in p={},m){var g=l[h];t(g&&g.modify,(function(e){e in d&&(p[e]=!0)}))}for(var b in d)if(!(b in u))for(var y in f(b))if(y in u){p[b]=!0;break}for(var v in m=p)u[v]=!0}var w={getIds:function(){var e=[];return w.load((function(t){e.push(t)})),e},load:function(t,n){return function(t,n,r,o){var a=o?o.series:void 0,i=o?o.parallel:e,s={},l={};function c(e){if(e in s)return s[e];l[e]=!0;var o,u=[];for(var d in t(e))d in n&&u.push(d);if(0===u.length)o=r(e);else{var p=i(u.map((function(e){var t=c(e);return delete l[e],t})));a?o=a(p,(function(){return r(e)})):r(e)}return s[e]=o}for(var u in n)c(u);var d=[];for(var p in l)d.push(s[p]);return i(d)}(f,u,t,n)}};return w}}();e.exports=t},39776:(e,t,n)=>{"use strict";var r=n(69143);function o(){}function a(){}a.resetWarningCache=o,e.exports=function(){function e(e,t,n,o,a,i){if(i!==r){var s=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw s.name="Invariant Violation",s}}function t(){return e}e.isRequired=e;var n={array:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:a,resetWarningCache:o};return n.PropTypes=n,n}},3268:(e,t,n)=>{e.exports=n(39776)()},69143:e=>{"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},79516:(e,t,n)=>{"use strict";var r=n(11504),o=n(14712);function a(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n