{"id":747,"date":"2018-09-11T11:53:06","date_gmt":"2018-09-11T11:53:06","guid":{"rendered":"http:\/\/leandroip.com\/?p=747"},"modified":"2018-09-12T14:22:04","modified_gmt":"2018-09-12T14:22:04","slug":"usando-code-blocks-e-arduino-from-scratch","status":"publish","type":"post","link":"https:\/\/www.leandroip.com\/?p=747","title":{"rendered":"Usando Code Blocks e Arduino (From Scratch)"},"content":{"rendered":"<p>O Arduino \u00e9 uma grande plataforma de software que abstrai diversos detalhes de hardware, isso possibilita que usu\u00e1rios iniciantes programem os microcontroladores da linha AVR sem praticamente nenhum conhecimento do mesmo. Esse tipo de abstra\u00e7\u00e3o \u00e9 extremamente \u00fatil na hora de criar uma aplica\u00e7\u00e3o ou resolver problemas rapidamente. Por\u00e9m, algumas aplica\u00e7\u00f5es v\u00e3o exigir mais do hardware e, nesses casos, a abstra\u00e7\u00e3o e falta de conhecimento do mesmo pode dificultar o desenvolvimento. Por exemplo, utilizando o c\u00f3digo com a abstra\u00e7\u00e3o do arduino a seguir:<\/p>\n<pre class=\"lang:c decode:true \" title=\"C\u00f3digo arduino blink\">void setup() {\r\n  pinMode(LED_BUILTIN, OUTPUT);\r\n}\r\nvoid loop() {\r\n  digitalWrite(LED_BUILTIN, HIGH);  \r\n  digitalWrite(LED_BUILTIN, LOW);   \r\n}<\/pre>\n<p>A forma de onda observada na sa\u00edda 13, atrav\u00e9s do <a href=\"http:\/\/www.oshonsoft.com\/avr.html\">AVR Simulator<\/a>, altera seu estado de n\u00edvel baixo para alto em ~3.44us. Enquanto que o c\u00f3digo a seguir faz o mesmo mas com um tempo de ~0.18us:<\/p>\n<pre class=\"lang:c decode:true \" title=\"C\u00f3digo C avr-gcc\">#define PIN_B5_H PORTB |= 0b00100000\r\n#define PIN_B5_L PORTB &amp;= 0b11011111\r\n#define LED_H PIN_B5_H\r\n#define LED_L PIN_B5_L\r\n#include &lt;avr\/io.h&gt;\r\nint main(void)\r\n{\r\n    DDRB = 0b11111111;\r\n    for(;;) {\r\n        LED_H;\r\n        LED_L;\r\n    }\r\n    return 0;\r\n}<\/pre>\n<p>Assim, neste Post ser\u00e1 mostrado como configurar a IDE Code Blocks e o compilador avr-gcc para trabalhar &#8220;diretamente com os registradores do microcontrolador&#8221;.<\/p>\n<p>Aqui a instala\u00e7\u00e3o ser\u00e1 feita no OS Windows, mas para Linux, a instala\u00e7\u00e3o \u00e9 similar. Exceto que o avr-gcc pode ser instalado diretamente por ferramentas como apt-get.<\/p>\n<h3>Instala\u00e7\u00e3o<\/h3>\n<ol>\n<li>Baixe e instale o <a href=\"https:\/\/sourceforge.net\/projects\/winavr\/\">WinAvr<\/a><\/li>\n<li>Baixe e instale o <a href=\"http:\/\/www.codeblocks.org\/\">CodeBlocks<\/a><\/li>\n<li>Para facilitar a configura\u00e7\u00e3o do CodeBlocks, j\u00e1 coloco aqui um projeto do codeblocks j\u00e1 testado:\u00a0<a href=\"http:\/\/leandroip.com\/wp-content\/uploads\/2018\/09\/omic-serial-adc.zip\">omic-serial-adc<\/a>\n<ol>\n<li>Descompacte esse zip e abra no CodeBlocks o arquivo omic.cbp. Esse &#8220;.cbp&#8221; \u00e9 o arquivo de projeto do codeblocks, ele contem toda a configura\u00e7\u00e3o necess\u00e1ria para compilar o projeto<\/li>\n<li>Voc\u00ea pode explorar as configura\u00e7\u00f5es em Project-&gt;Build Options e tamb\u00e9m em Settings Compiler como na Figura abaixo:<\/li>\n<\/ol>\n<\/li>\n<\/ol>\n<figure id=\"attachment_750\" aria-describedby=\"caption-attachment-750\" style=\"width: 300px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/leandroip.com\/wp-content\/uploads\/2018\/09\/cbconfig.png\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-750 size-medium\" src=\"http:\/\/leandroip.com\/wp-content\/uploads\/2018\/09\/cbconfig-300x229.png\" alt=\"\" width=\"300\" height=\"229\" srcset=\"https:\/\/www.leandroip.com\/wp-content\/uploads\/2018\/09\/cbconfig-300x229.png 300w, https:\/\/www.leandroip.com\/wp-content\/uploads\/2018\/09\/cbconfig-600x458.png 600w, https:\/\/www.leandroip.com\/wp-content\/uploads\/2018\/09\/cbconfig.png 757w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><figcaption id=\"caption-attachment-750\" class=\"wp-caption-text\">Configura\u00e7\u00e3o do CodeBlocks em Settings-&gt;Compiler<\/figcaption><\/figure>\n<p>Para compilar o c\u00f3digo clique em Build-&gt;Build. Ser\u00e1 gerado um arquivo omic.hex na pasta bin\/Release\/<\/p>\n<h3>Grava\u00e7\u00e3o<\/h3>\n<p>Para gravar o c\u00f3digo compilado siga estes passos:<\/p>\n<ol>\n<li>Conecte seu arduino na porta USB;<\/li>\n<li>Descubra qual a porta COM do mesmo atrav\u00e9s do gerenciador de dispositivos;<\/li>\n<li>Edite o arquivo BURN.bat que veio junto no zip compactado. Mude a porta COM11 para a sua porta. Salve o arquivo;<\/li>\n<li>Clique duas vezes sobre o mesmo. A grava\u00e7\u00e3o deve iniciar e terminar com \u00eaxito.<\/li>\n<\/ol>\n<p>Caso apare\u00e7am mensagens de falha em algum lugar, deixe um coment\u00e1rio ou me envie um email =]<\/p>\n<h3>Drivers<\/h3>\n<p>Alguns Arduinos podem vir com o componente CH340, como abaixo<a href=\"http:\/\/leandroip.com\/wp-content\/uploads\/2018\/09\/ardCH340.png\"><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-762 aligncenter\" src=\"http:\/\/leandroip.com\/wp-content\/uploads\/2018\/09\/ardCH340-300x229.png\" alt=\"\" width=\"300\" height=\"229\" srcset=\"https:\/\/www.leandroip.com\/wp-content\/uploads\/2018\/09\/ardCH340-300x229.png 300w, https:\/\/www.leandroip.com\/wp-content\/uploads\/2018\/09\/ardCH340.png 365w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p>Nesse caso, voc\u00ea vai precisar instalar o Driver desse componentes que est\u00e1 nesse link:\u00a0https:\/\/pandoralab.com.br\/arduino\/driver-ch340-para-arduino\/ (NOTA, Clique em INSTALL e aguarde aparecer a mensagem instalado com sucesso antes de fechar!!)<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>O Arduino \u00e9 uma grande plataforma de software que abstrai diversos detalhes de hardware, isso [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-747","post","type-post","status-publish","format-standard","hentry","category-uncategorized","entry","grid"],"_links":{"self":[{"href":"https:\/\/www.leandroip.com\/index.php?rest_route=\/wp\/v2\/posts\/747","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.leandroip.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.leandroip.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.leandroip.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.leandroip.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=747"}],"version-history":[{"count":5,"href":"https:\/\/www.leandroip.com\/index.php?rest_route=\/wp\/v2\/posts\/747\/revisions"}],"predecessor-version":[{"id":763,"href":"https:\/\/www.leandroip.com\/index.php?rest_route=\/wp\/v2\/posts\/747\/revisions\/763"}],"wp:attachment":[{"href":"https:\/\/www.leandroip.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=747"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.leandroip.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=747"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.leandroip.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=747"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}