<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom">
    <title>Diego Manenti Martins' blog</title>
    <updated>2011-07-13T22:48:36Z</updated>
    <id>http://dmmartins.appspot.com/</id>
    <icon>http://dmmartins.appspot.com/favicon.ico</icon>
    <link rel="alternate" href="http://dmmartins.appspot.com/" title="Diego Manenti Martins' blog" type="text/html" />
    
    <author><name>Diego Manenti Martins</name></author>
  
    <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/dmmartins" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="dmmartins" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry>
      <id>http://dmmartins.appspot.com/blog/pil-e-libjpeg-no-snow-leopard-mac-os-x-106</id>
      <title>PIL e libjpeg no Snow Leopard (Mac OS X 10.6)</title>
      <link href="http://dmmartins.appspot.com/blog/pil-e-libjpeg-no-snow-leopard-mac-os-x-106" rel="alternate" type="text/html" />
      <updated>2010-12-18T00:06:20Z</updated>
      <published>2010-12-18T00:06:20Z</published>
      <content type="xhtml" xml:base="http://dmmartins.appspot.com/">
        <div xmlns="http://www.w3.org/1999/xhtml">
          <p>Tentando instalar a Python Imaging Library (<a href="http://www.pythonware.com/products/pil/">PIL</a>) no Mac OS X 10.6 obtia o seguinte erro:</p>

<pre><code>Symbol not found: _jpeg_resync_to_restart
</code></pre>

<p>Depois de pesquisar um pouco e não achar nada que resolvesse o problema, resolvi tentar compilar a <a href="http://www.ijg.org/">libjpeg</a> para x86_64.</p>

<pre><code>$ CC="gcc -arch x86_64" ./configure --enable-static --enable-shared
$ make
$ sudo make install
</code></pre>

<p>Depois é só instalar a PIL:</p>

<pre><code>$ python setup.py build
</code></pre>

<p>Verifique se o suporte a JPEG foi habilitado, então:</p>

<pre><code>$ sudo python setup.py install
</code></pre>

<p>Utilizei a versão padrão do python no sistema (2.6), <a href="http://www.ijg.org/files/jpegsrc.v8b.tar.gz">libjpeg 8b</a> e <a href="http://effbot.org/downloads/Imaging-1.1.7.tar.gz">PIL 1.1.7</a>.</p>

<p>Agora tudo funcionando:</p>

<pre><code>$ python
Python 2.6.1 (r261:67515, Jun 24 2010, 21:47:49) 
[GCC 4.2.1 (Apple Inc. build 5646)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
&gt;&gt;&gt; import PIL
&gt;&gt;&gt; import Image
&gt;&gt;&gt; import _imaging
&gt;&gt;&gt;
</code></pre>

        </div>
      </content>
      
      <category term="user-tag" label="python" />
      
    </entry>
  
    <entry>
      <id>http://dmmartins.appspot.com/blog/dosbox</id>
      <title>DOSBox</title>
      <link href="http://dmmartins.appspot.com/blog/dosbox" rel="alternate" type="text/html" />
      <updated>2010-04-29T05:30:05Z</updated>
      <published>2010-04-12T12:42:57Z</published>
      <content type="xhtml" xml:base="http://dmmartins.appspot.com/">
        <div xmlns="http://www.w3.org/1999/xhtml">
          <p>Descobri o <a href="http://www.dosbox.com">DOSBox</a> quando precisei rodar um programa em modo DOS no
Windows Vista e descobri que este não suporta console DOS fullscreen.</p>

<p>Funciona bem, inclusive com o conversor USB/Serial, já que o programa que eu
precisava rodar usa a porta serial para enviar dados para um CNC.</p>

<p>Para quem, em 2010, ainda precisa usar softwares mal feitos em DOS é uma mão
na roda.</p>

<p><a href="http://www.dosbox.com">http://www.dosbox.com</a></p>

        </div>
      </content>
      
      <category term="user-tag" label="DOSBox" />
      
    </entry>
  
    <entry>
      <id>http://dmmartins.appspot.com/blog/arduino-e-lcd</id>
      <title>Arduino e LCD</title>
      <link href="http://dmmartins.appspot.com/blog/arduino-e-lcd" rel="alternate" type="text/html" />
      <updated>2011-07-13T22:48:36Z</updated>
      <published>2010-04-12T11:01:21Z</published>
      <content type="xhtml" xml:base="http://dmmartins.appspot.com/">
        <div xmlns="http://www.w3.org/1999/xhtml">
          <p>Depois de botar pra funcionar meu <a href="http://dmmartins.appspot.com/blog/arduino-feito-em-casa">arduino feito em casa</a> abri o exemplo da biblioteca LiquidCrystal, que vem na instalação padrão do arduino.</p>

<p>A utilização da biblioteca é bem simples, basta indicar os pinos RS, RW, EN e os pinos de dados. Pode ser utilizado o controle em 4 bits e 8 bits.</p>

<p>Liguei os pinos do LCD no arduino, configurado para controle com 4 bits, baixei o programa e … não funionou! Azarado.</p>

<p>Verifiquei as ligações, tudo certo. Resetei a placa algumas vezes e o tal do
'hello, world!' apareceu.</p>

<p>Olhando o código da LiquidCrystal, vi que faltavam alguns comandos de inicialização para o controlador do display (HD44780). Deixei uma mensagem no forum Bugs &amp; Sugestions mas não teve nenhuma resposta.</p>

<p>Resolvi os problemas de inicialização do LCD e coloquei o código em <a href="http://code.google.com/p/arduinolcd/">http://code.google.com/p/arduinolcd/</a>. Para utilizar baixe o arquivo ZIP, descompacte e copie a pasta 'HD47660′ para a pasta 'hardware/libraries/' da instalação do Arduino.</p>

<p>Depois de instalada a biblioteca, vamos aos exemplos.</p>

<p>Abra o exempl HelloWorld em 'File&gt;Sketchbook&gt;Examples&gt;Library&gt;HD44780&gt;HelloWorld',  baixe para a placa, …</p>

<p><img src="https://lh5.googleusercontent.com/-R2zdJ4R5OBQ/Th4f1t0cjRI/AAAAAAAAAQg/Msb2DJBNc7c/s640/23-03-09_1613.jpg" alt="HD44780" title="HD44780" /></p>

<p>… agora sim. :)</p>

<p>O exemplo SerialDisplay também funcionou. Demorei um pouco pra testar pois não tinha achado ainda um cristal de 16 MHz e queria também testar a porta serial. Como moro em Santa Catarina e longe da capital, não é muito fácil encontrar componentes eletrônicos por aqui. Não estava disposto a pagar mais pelo frete que pelo componente  e não tinha nenhuma compra em vista para incluir alguns cristais. Achei em uma placa <a href="http://www.evbplus.com/minidragonplus_hc12_68hc12_9s12_hcs12.html">MiniDrangon</a> que tenho aqui e agora posso testar as bibliotecas corretamente (as que utilizam temporização e porta serial).</p>

<p>Estou esperando chegar os fios para wire wrap para montar a placa ethernet e ver o que dá pra fazer com o Arduino na rede.</p>

        </div>
      </content>
      
      <category term="user-tag" label="arduino" />
      
      <category term="user-tag" label="embedded" />
      
      <category term="user-tag" label="lcd" />
      
    </entry>
  
    <entry>
      <id>http://dmmartins.appspot.com/blog/arduino-feito-em-casa</id>
      <title>Arduino feito em casa</title>
      <link href="http://dmmartins.appspot.com/blog/arduino-feito-em-casa" rel="alternate" type="text/html" />
      <updated>2010-04-30T00:06:40Z</updated>
      <published>2010-04-09T20:35:32Z</published>
      <content type="xhtml" xml:base="http://dmmartins.appspot.com/">
        <div xmlns="http://www.w3.org/1999/xhtml">
          <p>Há algum tempo estava querendo testar o Arduino, pelo menos descobrir o que era e por que chamava tanto a atenção do pessoal.</p>

<p>Depois de descobrir do que se tratava, a vontade de testar passou um pouco, não comprei um arduino pronto, pois mesmo o preço não sendo muito alto lá fora, com os impostos de importação  mais o frete acaba ficando um preço bem alto por uma placa tão simples.</p>

<h2>Montagem</h2>

<p>Decidi montar meu próprio arduino. Tinha um Atmega8 sobrando, uma placa padrão para montagem do circuito e o resto é regulador de tensão, alguns resistores e um max232 para comunicação serial (no arduino oficial usa apenas alguns transistores, mas eu prefiro soldar um max232 :). Ah, acrescentei um display LCD e algumas chaves que também tinha à disposição.</p>

<p><img src="http://farm5.static.flickr.com/4057/4506349866_54a6d0253b.jpg" alt="componentes" title="Componentes utilizados para montagem do Arduino." /></p>

<p>Depois de algumas horas soldando, cortando fios, resoldando, mudando componentes de lugar, surge o Arduino:</p>

<p><img src="http://farm5.static.flickr.com/4049/4506400040_b022d88bcc.jpg" alt="frente" title="A parte &quot;bonita&quot;." /></p>

<p>E o trabalho sujo:</p>

<p><img src="http://farm5.static.flickr.com/4002/4506384462_5e87dd23ce.jpg" alt="13-03-09_0013" title="A parte feia." /></p>

<p>As fotos ficaram bem ruins, estava sem câmera e utilizei a do celular. Mas dá pra ter uma idéia do trabalho.</p>

<h2>Problemas</h2>

<p>Depois de montado, o primeiro problema. Eu não tinha um cristal de 16Mhz. No lugar dele, usei um de 12Mhz, mas o arquivo hex do bootloader não funcionaria. Tudo bem, só recompilar, certo? Errado!</p>

<p>Já tinha o avr-gcc instalado, tinha o código fonte, botei pra compilar e:</p>

<pre><code>../../avr/bin/ld.exe: address 0x205e of ATmegaBOOT.elf section .text is not with in region text

make: *** [ATmegaBOOT.elf] Error 1
</code></pre>

<p>Isto é,  o arquivo bootloader ultrapassava a memória do arduino. Pesquisei em alguns fóruns e vi que era culpa da versão mais nova do gcc que gerava arquivos maiores. Resolvi utilizar o gcc que vem no arduino e descobri que era a mesma versão que eu tinha instalado.</p>

<p>Mais algumas pesquisas e resolvi mudando uma linha do Makefile. Onde tem:</p>

<pre><code>OPTIMIZE = -Os
</code></pre>

<p>Substituí por:</p>

<pre><code>OPTIMIZE = -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums \

    -ffunction-sections -fdata-sections -fno-split-wide-types -Wl,--relax \

    -fno-inline-small-functions -mcall-prologues
</code></pre>

<p>Resolvido o problema, funcionou o bootloader e comecei a brincadeira, que contarei outra hora.</p>

<h2>Conclusão</h2>

<p>Confesso que tinha um certo preconceito contra o Arduino. Depois de mexer um pouco com ele, descobri que a brincadeira é bem divertida.</p>

<p>Uma coisa interessante no Arduino, é que as bibliotecas são escritas em C++, pelo menos as que dei uma olhada. Nos meus projetos microcontrolados, uso sempre C e, quando não tem outra saída, assembly.  Usar orientação a objetos, mesmo que minimamente, parece interessante.</p>

        </div>
      </content>
      
      <category term="user-tag" label="arduino" />
      
      <category term="user-tag" label="embedded" />
      
    </entry>
  
</feed>

