<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Nerd, who?</title>
	<atom:link href="http://www.nerdwho.com/blog/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.nerdwho.com/blog</link>
	<description>Programação, Arduino, Fotografia e muito mais por Jonatas Oliveira</description>
	<lastBuildDate>Fri, 13 Jan 2012 17:44:22 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Enviando arquivos e dados ao mesmo tempo via HTTP POST usando UTF-8</title>
		<link>http://www.nerdwho.com/blog/57/enviando-arquivos-e-dados-ao-mesmo-tempo-via-http-post-usando-utf-8/</link>
		<comments>http://www.nerdwho.com/blog/57/enviando-arquivos-e-dados-ao-mesmo-tempo-via-http-post-usando-utf-8/#comments</comments>
		<pubDate>Fri, 13 Jan 2012 17:41:30 +0000</pubDate>
		<dc:creator>Jonatas Oliveira</dc:creator>
				<category><![CDATA[Python]]></category>
		<category><![CDATA[http]]></category>
		<category><![CDATA[httplib]]></category>
		<category><![CDATA[iso-8859-1]]></category>
		<category><![CDATA[latin1]]></category>
		<category><![CDATA[post]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[urllib]]></category>
		<category><![CDATA[urllib2]]></category>
		<category><![CDATA[utf-8]]></category>
		<category><![CDATA[utf8]]></category>

		<guid isPermaLink="false">http://www.nerdwho.com/blog/?p=57</guid>
		<description><![CDATA[Um problema que sempre enfrento é enviar arquivos e dados (parâmetros, variáveis) usando python via HTTP POST. Existem soluções para enviar somente arquivos ou somente parâmetros que servem para a maior parte do uso, mas não para o meu. Um &#8230; <a href="http://www.nerdwho.com/blog/57/enviando-arquivos-e-dados-ao-mesmo-tempo-via-http-post-usando-utf-8/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Um problema que sempre enfrento é enviar arquivos e dados (parâmetros, variáveis) usando python via HTTP POST. Existem soluções para enviar somente arquivos ou somente parâmetros que servem para a maior parte do uso, mas não para o meu. Um é exemplo enviar uma foto com título e descrição. Uma das únicas boas referências que eu achei foi <a href="http://code.activestate.com/recipes/146306-http-client-to-post-using-multipartform-data/">este post no ActiveState feito em 2002</a>, mas o problema é que ele não funcionar com UTF-8.</p>
<p>Este post é para mostrar um código que funciona para o envio de arquivos e parâmetros ao mesmo tempo em qualquer codificação.</p>
<blockquote><p>In english:</p>
<p>One problem I ever face is when sending files and data (parameters, variables) using python via HTTP POST.</p>
<p>There are solutions to send only files or only parameters that are suitable for most use, but not mine. One example is sending a photo with title and description. One of the only good reference I found was <a href="http://code.activestate.com/recipes/146306-http-client-to-post-using-multipartform-data/">this post on ActiveState made ​​in 2002</a>, but the problem is that it does not work with UTF-8.</p>
<p>This post is to show a code that works for sending files and parameters simultaneously in any encoding.</p></blockquote>
<p>Abaixo segue o código:</p>
<pre class="prettyprint language-python">import httplib
import mimetypes
import base64

def post_multipart(host, selector, fields, files, encoding='utf-8'):
    &quot;&quot;&quot;
    Post fields and files to an http host as multipart/form-data.
    fields is a sequence of (name, value) elements for regular form fields.
    files is a sequence of (name, filename, value) elements for data to be uploaded as files
    Return the server's response page.
    &quot;&quot;&quot;
    content_type, body = encode_multipart_formdata(fields, files)
    body = body.encode(encoding)

    h = httplib.HTTP(host)
    h.putrequest(u'POST', selector)
    h.putheader(u'Content-Type', content_type)
    h.putheader(u'Charset', encoding)
    h.putheader(u'Content-Length', str(len(body)))
    h.endheaders()
    h.send(body)

    errcode, errmsg, headers = h.getreply()
    return h.file.read()

def encode_multipart_formdata(fields, files, encoding='utf-8'):
    &quot;&quot;&quot;
    fields is a sequence of (name, value) elements for regular form fields.
    files is a sequence of (name, filename, value) elements for data to be uploaded as files
    Return (content_type, body) ready for httplib.HTTP instance
    &quot;&quot;&quot;
    BOUNDARY = u'----------ThIs_Is_tHe_bouNdaRY_$'
    CRLF = u'rn'
    L = []

    for (key, value) in fields:
        L.append(u'--' + BOUNDARY)
        L.append(u'Content-Disposition: form-data; name=&quot;%s&quot;' % key)
        L.append(u'Content-Type: text/plain;charset=%s' % encoding)
        L.append(u'Content-Transfer-Encoding: 8bit')
        L.append(u'')
        L.append(value)

    for (key, filename, value) in files:
        L.append(u'--' + BOUNDARY)
        L.append(u'Content-Disposition: form-data; name=&quot;%s&quot;; filename=&quot;%s&quot;' % (key, filename))
        L.append(u'Content-Type: %s;charset=%s' % (get_content_type(filename), encoding))
        L.append(u'Content-Transfer-Encoding: base64')
        L.append(u'')
        L.append(base64.b64encode(value).decode())

    L.append(u'--' + BOUNDARY + u'--')
    L.append(u'')
    body = CRLF.join(L)
    content_type = u'multipart/form-data; boundary=%s' % BOUNDARY

    return content_type, body

def get_content_type(filename):
    return mimetypes.guess_type(filename)[0] or 'application/octet-stream'</pre>
<p>As diferenças entro o meu código e o código original são:</p>
<ul>
<li>Uso de strings unicode e a codificação é feita apenas no momento do envio da requisição.</li>
<li>Uso da variável encoding para definir o encoding que será enviada a requisição.</li>
<li>Codificando o arquivo em base64 para não ter problemas com acentuação interna.</li>
<li>Indicando no cabeçalho do boundary que o arquivo está codificado em base64.</li>
<li>Adicionando Charset no cabeçalho da requisição e nos cabeçalhos do boundary.</li>
</ul>
<div>Na variável encoding você pode usar UTF-8, ISO-8859-1 (latin1) ou qualquer outra codificação, desde que o suas strings sejam sempre unicode, ou seja, o valor das seus parâmetros deve ser unicode.</div>
]]></content:encoded>
			<wfw:commentRss>http://www.nerdwho.com/blog/57/enviando-arquivos-e-dados-ao-mesmo-tempo-via-http-post-usando-utf-8/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Usando o sensor ultrasônico HC-SR05 como um theremin</title>
		<link>http://www.nerdwho.com/blog/46/usando-o-sensor-ultrasonico-hc-sr05-como-um-theremin/</link>
		<comments>http://www.nerdwho.com/blog/46/usando-o-sensor-ultrasonico-hc-sr05-como-um-theremin/#comments</comments>
		<pubDate>Sat, 17 Sep 2011 19:53:08 +0000</pubDate>
		<dc:creator>Jonatas Oliveira</dc:creator>
				<category><![CDATA[Arduino]]></category>
		<category><![CDATA[buzzer]]></category>
		<category><![CDATA[hc-sr05]]></category>
		<category><![CDATA[sensor]]></category>
		<category><![CDATA[ultrasom]]></category>
		<category><![CDATA[ultrasonic]]></category>
		<category><![CDATA[ultrasonico]]></category>

		<guid isPermaLink="false">http://www.nerdwho.com/blog/?p=46</guid>
		<description><![CDATA[Depois de entender como reproduzir som com o Arduino, vou dar um exemplo de como usar um sensor ping (HC-SR05) para modificar o som que está sendo reproduzidor, este exemplo é muito parecido com o funcionamento de um Theremim simplificado. &#8230; <a href="http://www.nerdwho.com/blog/46/usando-o-sensor-ultrasonico-hc-sr05-como-um-theremin/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.nerdwho.com/blog/wp-content/uploads/2011/09/arduino_theremim.jpg"><img class="alignnone size-large wp-image-48" title="arduino_theremim" src="http://www.nerdwho.com/blog/wp-content/uploads/2011/09/arduino_theremim-1024x576.jpg" alt="" width="584" height="328" /></a></p>
<p>Depois de entender como reproduzir som com o Arduino, vou dar um exemplo de como usar um sensor ping (HC-SR05) para modificar o som que está sendo reproduzidor, este exemplo é muito parecido com o funcionamento de um Theremim simplificado.</p>
<p><a title="Veja o vídeo deste projeto no YouTube." href="http://www.youtube.com/watch?v=_ZytWCZzVWU">Veja o vídeo no YouTube</a>.</p>
<p><span id="more-46"></span></p>
<h2>O que é um sensor ping  (HC-SR05)?</h2>
<p>O sensor ping é constituido por duas partes: um gatilho (emissor) e o eco (receptor), funcionando basicamente como um sonar, emitimos um pulso ultrasônico e aguardamos o seu eco no receptor, quanto mais tempo demorar o eco, maior a distânica, e vice-versa. A partir deste dispositivo conseguimos medir a distância entre um objeto qualquer e o sensor, lembrando que sua medida nativa é o tempo decorrido entre a emissão e a recepção, é necessário transformar esta duração de tempo em distância.</p>
<h2>Esquema</h2>
<p>O esquema é simples, o sensor HC-SR05 necessita de +5V, GND (terra) e duas portas digitais, uma para o gatilho (saída) e outra para o eco (entrada), já o buzzer necessita de uma porta digital com PWM (Pulse with modulation) e um GND (terra). Segue o esquema que montei como exemplo:</p>
<p><a href="http://www.nerdwho.com/blog/wp-content/uploads/2011/09/arduino_theremim_esquema.jpg"><img class="alignnone size-full wp-image-49" title="arduino_theremim_esquema" src="http://www.nerdwho.com/blog/wp-content/uploads/2011/09/arduino_theremim_esquema.jpg" alt="" width="617" height="347" /></a></p>
<p>Baixe o <a href="https://bitbucket.org/jonatasoliveira/arduino/src/6a14369d1038/theremim/theremim.fz">esquema do Theremim para Fritzing</a>.</p>
<p>Alguns sensores ultrasônicos tem apenas três pinos, sendo os pinos das pontas +5V e GND e o pino central o gatilho e o eco ao mesmo tempo. Neste caso durante a programação você tem que especificar o que o pino será, saída (gatilho) ou entrada (eco) a cada vez que precisa usar o sensor. Veja a especificação do seu sensor antes de conectá-lo na breadboard.</p>
<h2>Programação</h2>
<p>Desta vez o programa é um pouco maior, mas é tão simples quanto os anteriores.</p>
<p>Este código está <a href="https://bitbucket.org/jonatasoliveira/arduino/src/6a14369d1038/theremim/theremim.pde">versionado no meu repostório do bitbucket</a>.</p>
<pre class="prettyprint ">/*
  Theremim

  Esta &Atilde;&copy; uma implementa&Atilde;&sect;&Atilde;&pound;o simplificada que tenta copiar o
  instrumento musical Theremim. Usa um sensor ping (HC-SR05)
  e um buzzer, dependendo da dist&Atilde;&cent;ncia de um objeto qualquer
  sensor ping, ser&Atilde;&iexcl; reproduzida uma nota, quanto mais longe,
  mais aguda &Atilde;&copy; a nota.

  Esquema:
  - 5V de entrada em VCC.
  - Trigger (gatilho) no pino 2.
  - Echo (eco) o pino 3.
  - GND no terra.
  - Buzzer na porta 9.

  Algumas partes do c&Atilde;&sup3;digo foram retiradas de:

http://www.arduino.cc/en/Tutorial/Ping

*/

#define NOTA_DO  262
#define NOTA_RE  294
#define NOTA_MI  330
#define NOTA_FA  349
#define NOTA_SOL 392
#define NOTA_LA  440
#define NOTA_SI  494

int pinoGatilho = 2;
int pinoEco = 3;
int pinoBuzzer = 9;
int valor = 0;
int nota = 0;
int intervalo_intervalo_distancia = 7;

void setup() {
  // O pino do gatilho enviar&Atilde;&iexcl; energia.
  pinMode(pinoGatilho, OUTPUT);
  // O pino do eco receber&Atilde;&iexcl; o resultado.
  pinMode(pinoEco, INPUT);

  // O pino do buzzer enviar&Atilde;&iexcl; energia.
  pinMode(pinoBuzzer, OUTPUT);
}

void loop() {
  long duracao, cm;

  // Envia um ping, para tentar receber o eco.
  digitalWrite(pinoGatilho, LOW);
  delayMicroseconds(2);
  digitalWrite(pinoGatilho, HIGH);
  delayMicroseconds(5);
  digitalWrite(pinoGatilho, LOW);

  // Recebe o eco, j&Atilde;&iexcl; com o valor do intervalo de tempo tempo.
  duracao = pulseIn(pinoEco, HIGH);

  // Converte o tempo em dist&Atilde;&cent;ncia.
  cm = microsecondsToCentimeters(duracao);

  // Verifica qual nota ser&Atilde;&iexcl; tocada de acordo com a dist&Atilde;&cent;ncia.
  if (cm &amp;gt; (intervalo_distancia * 0) &amp;amp;&amp;amp; cm &amp;lt; (intervalo_distancia * 1)) {
    nota = NOTA_DO;
  } else if (cm &amp;gt;= (intervalo_distancia * 1) &amp;amp;&amp;amp; cm &amp;lt; (intervalo_distancia * 2)) {
    nota = NOTA_RE;
  } else if (cm &amp;gt;= (intervalo_distancia * 2) &amp;amp;&amp;amp; cm &amp;lt; (intervalo_distancia * 3)) {
    nota = NOTA_MI;
  } else if (cm &amp;gt;= (intervalo_distancia * 3) &amp;amp;&amp;amp; cm &amp;lt; (intervalo_distancia * 4)) {
    nota = NOTA_FA;
  } else if (cm &amp;gt;= (intervalo_distancia * 4) &amp;amp;&amp;amp; cm &amp;lt; (intervalo_distancia * 5)) {
    nota = NOTA_SOL;
  } else if (cm &amp;gt;= (intervalo_distancia * 5) &amp;amp;&amp;amp; cm &amp;lt; (intervalo_distancia * 6)) {
    nota = NOTA_LA;
  } else if (cm &amp;gt;= (intervalo_distancia * 6) &amp;amp;&amp;amp; cm &amp;lt; (intervalo_distancia * 7)) {
    nota = NOTA_SI;
  } else {
    nota = 0;
  } 

  // Toca a nota correspondente.
  if (nota) {
    tone(pinoBuzzer, nota);
  } else {
    noTone(pinoBuzzer);
  }

  // Aguarda 100ms para fazer novamente.
  delay(100);
}

long microsecondsToCentimeters(long microseconds)
{
  // A velocidade do som &Atilde;&copy; de 340 m/s ou 29 microsegundo por cent&Atilde;&shy;metro.
  // O ping vai e volta, ent&Atilde;&pound;o para encontrar a dist&Atilde;&cent;ncia do
  // objeto devemos dividir por dois a dist&Atilde;&cent;ncia viajada.
  return microseconds / 29 / 2;
}</pre>
<h2>Links interessantes</h2>
<ul>
<li><a href="http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1242689596">http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1242689596</a> (português)</li>
<li><a href="http://www.arduino.cc/en/Tutorial/Ping">http://www.arduino.cc/en/Tutorial/Ping</a> (inglês)</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.nerdwho.com/blog/46/usando-o-sensor-ultrasonico-hc-sr05-como-um-theremin/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tocando som com o Arduino</title>
		<link>http://www.nerdwho.com/blog/42/tocando-som-com-o-arduino/</link>
		<comments>http://www.nerdwho.com/blog/42/tocando-som-com-o-arduino/#comments</comments>
		<pubDate>Thu, 08 Sep 2011 00:23:59 +0000</pubDate>
		<dc:creator>Jonatas Oliveira</dc:creator>
				<category><![CDATA[Arduino]]></category>
		<category><![CDATA[buzzer]]></category>
		<category><![CDATA[frequencia]]></category>
		<category><![CDATA[frequency]]></category>
		<category><![CDATA[notone]]></category>
		<category><![CDATA[tone]]></category>

		<guid isPermaLink="false">http://www.nerdwho.com/blog/?p=42</guid>
		<description><![CDATA[A forma mais simples de reproduzir som no Arduino é usando um Buzzer ou um Piezo. O Buzzer é muito usado em computadores para emitir o sinal inicialização do sistema e para indicar possíveis erros. Quem nunca ouviu os 3 bips &#8230; <a href="http://www.nerdwho.com/blog/42/tocando-som-com-o-arduino/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.nerdwho.com/blog/wp-content/uploads/2011/09/arduino_buzzer_foto.jpg"><img class="alignnone size-large wp-image-43" title="Esquema montado com buzzer reproduzindo som." src="http://www.nerdwho.com/blog/wp-content/uploads/2011/09/arduino_buzzer_foto-1024x576.jpg" alt="" width="584" height="328" /></a></p>
<p>A forma mais simples de reproduzir som no Arduino é usando um Buzzer ou um Piezo. O Buzzer é muito usado em computadores para emitir o sinal inicialização do sistema e para indicar possíveis erros. Quem nunca ouviu os 3 bips infernais de erro de memória e teve que ficar o final de semana inteiro sem computador? Pois é, é pelo Buzzer que esse sinal sonoro é emitido.<span id="more-42"></span></p>
<h2>Como funciona o Buzzer?</h2>
<p>Dentro do buzzer existem duas camadas de metal e uma camada interna de cristal piezoelétrico, quando é enviada corrente através do buzzer a camada interna vibra na mesma frequência reproduzindo assim um som, por exemplo, se enviarmos corrente em uma frequência de 440Hz, ouviremos o som da nota Lá. Quanto maior a corrente maior o &#8220;volume&#8221; do som.</p>
<h2>Vamos ao esquema</h2>
<p>O Buzzer tem apenas dois conectores, um positivo (vermelho) e um negativo (preto). O positivo conectaremos a uma saída digital que tenha <a href="http://www.arduino.cc/en/Tutorial/PWM">PWM</a> (Pulse With Modulation) escrito nela e o negativo conectaremos ao terra (GND) assim como segue o esquema:</p>
<p><a href="http://www.nerdwho.com/blog/wp-content/uploads/2011/09/arduino_buzzer_esquema.jpg"><img class="alignnone size-full wp-image-44" title="Esquema de conexão do buzzer." src="http://www.nerdwho.com/blog/wp-content/uploads/2011/09/arduino_buzzer_esquema.jpg" alt="" width="706" height="397" /></a></p>
<p>Alguns buzzers são tão fracos que se você colocar um resistor não vai ouvir nada. Faça um teste no seu com resistor e sem resistor, ou se for possível teste vários resistores diferentes e veja qual é o melhor para o seu projeto.</p>
<h2>Código</h2>
<p>Para o nosso Buzzer reproduzir um som precisamos fazer com que um pino emita corrente e pare de emitir em uma determinada frequência, isso é um pouco complicado de ser fazer na mão (mas não é impossível). Por isso a linguagem de programação do Arduino vem com uma função chamada tone(). Esta função pede o número de um pino, a frequência e, opcionalmente, a duração.</p>
<p>Para usarmos a função tone(), o pino que estamos conectando o Buzzer deve ser um pino PWM.</p>
<p>Além da função tone() temos a função noTone(), que recebe o número de um pino e finaliza o som neste pino. Vamos ao código para tocarmos as notas musicais no Buzzer:</p>
<pre class="prettyprint ">/*
  Caixinha de m&Atilde;&ordm;sica.

  Reproduz as notas de D&Atilde;&sup3; at&Atilde;&copy; o S&Atilde;&shy;.

  Esquema:
  - Ligar o positivo do &Atilde;&iexcl;udio at&Atilde;&copy; o pino 3
    (ou qualquer outro com PWM).
  - Ligar o negativo do &Atilde;&iexcl;udio no terra (GND).
*/

// Notas de acordo com a vibra&Atilde;&sect;&Atilde;&pound;o em Hz.
// 440Hz &Atilde;&copy; o L&Atilde;&iexcl; central.
#define NOTA_DO  262
#define NOTA_RE  294
#define NOTA_MI  330
#define NOTA_FA  349
#define NOTA_SOL 392
#define NOTA_LA  440
#define NOTA_SI  494

// Indicar o pino que est&Atilde;&iexcl; o &Atilde;&iexcl;udio.
int pinoFalante = 3;

void setup() {
  // Definimos o pinoFalante como sa&Atilde;&shy;da.
  pinMode(pinoFalante, OUTPUT);
}

void loop() {

  // A cada volta do loop  ser&Atilde;&pound;o tocadas as notas.
  tone(pinoFalante, NOTA_DO);
  delay(500);
  tone(pinoFalante, NOTA_RE);
  delay(500);
  tone(pinoFalante, NOTA_MI);
  delay(500);
  tone(pinoFalante, NOTA_FA);
  delay(500);
  tone(pinoFalante, NOTA_SOL);
  delay(500);
  tone(pinoFalante, NOTA_LA);
  delay(500);
  tone(pinoFalante, NOTA_SI);
  delay(500);
  noTone(pinoFalante);
  delay(1000);

}</pre>
<p>Seguem algumas explicações.</p>
<p>No trecho a seguir definimos uma constante, estamos dizemos que sempre que usarmos a constante NOTA_LA, termos um valor inteiro de 440. Nunca poderá ser alterado o valor de uma constante em tempo de execução (por isso o nome é constante, e não variável!).</p>
<pre class="prettyprint ">#define NOTA_LA  440</pre>
<p>Dentro do loop começamos a reproduzir som com a função tone(). No trecho a seguir temos a função tone sendo executada com o pinoFalante e NOTA_LA como parâmetros, isso quer dizer que o pinoFalante emitirá corrente na frequência NOTA_LA, que tem valor 440. O pinoFalante receberá corrente em uma frequência de 440Hz.</p>
<p>Após isso temos o delay de 500ms (meio segundo). Quando executamos a função tone() o pino equivalente ficará enviando corrente na frequência indicada até que sejá enviado um noTone no mesmo pino.</p>
<p>Na linha 3 mudamos de frequência, em nenhum momento o som irá parar, haverá apenas a mudança de nota a cada meio segundo.</p>
<pre class="prettyprint ">tone(pinoFalante, NOTA_LA);
delay(500);
tone(pinoFalante, NOTA_SI);
delay(500);</pre>
<p>E por último temos a chamada do noTone(), aí sim, fazendo com que o som pare. O delay de 1 segundo na linha abaixo faz com que o Buzzer não toque nada por 1 segundo.</p>
<pre class="prettyprint ">noTone(pinoFalante);
delay(1000);</pre>
<p>Com esta base você pode fazer músicas mais complexas, é só ficar atento às frequências e tempo, para saber mais siga os links:</p>
<ul>
<li><a href="http://arduino.cc/en/Reference/Tone">http://arduino.cc/en/Reference/Tone</a> (inglês)</li>
<li><a href="http://arduino.cc/en/Reference/noTone">http://arduino.cc/en/Reference/noTone</a> (inglês)</li>
<li><a href="http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1231194692">http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1231194692</a> (inglês)</li>
</ul>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.nerdwho.com/blog/42/tocando-som-com-o-arduino/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Acendendo um led quando um botão é pressionado</title>
		<link>http://www.nerdwho.com/blog/25/acendendo-um-led-quando-um-botao-e-pressionado/</link>
		<comments>http://www.nerdwho.com/blog/25/acendendo-um-led-quando-um-botao-e-pressionado/#comments</comments>
		<pubDate>Wed, 07 Sep 2011 20:15:35 +0000</pubDate>
		<dc:creator>Jonatas Oliveira</dc:creator>
				<category><![CDATA[Arduino]]></category>
		<category><![CDATA[acender]]></category>
		<category><![CDATA[botão]]></category>
		<category><![CDATA[button]]></category>
		<category><![CDATA[led]]></category>
		<category><![CDATA[pressionado]]></category>
		<category><![CDATA[push]]></category>

		<guid isPermaLink="false">http://www.nerdwho.com/blog/?p=25</guid>
		<description><![CDATA[Usando quase o mesmo esquema do Led piscando, podemos inserir um botão no circuito e fazer com que o Led só acenda quando o botão é pressionado. Para isso precisamos deixar o botão no circuito entre o pino de saída &#8230; <a href="http://www.nerdwho.com/blog/25/acendendo-um-led-quando-um-botao-e-pressionado/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.nerdwho.com/blog/wp-content/uploads/2011/09/arduino_led_botao.jpg"><img class="alignnone size-large wp-image-24" title="Acendendo um led quando o botão está pressionado." src="http://www.nerdwho.com/blog/wp-content/uploads/2011/09/arduino_led_botao-1024x576.jpg" alt="" width="584" height="328" /></a></p>
<p>Usando quase o mesmo esquema do Led piscando, podemos inserir um botão no circuito e fazer com que o Led só acenda quando o botão é pressionado.<span id="more-25"></span></p>
<p>Para isso precisamos deixar o botão no circuito entre o pino de saída e o Led, desta forma como mostra o esquema:</p>
<p><a href="http://www.nerdwho.com/blog/wp-content/uploads/2011/09/arduino_led_botao_esquema.jpg"><img class="alignnone size-full wp-image-26" title="Esquema do led que acende quando um botão é pressionado." src="http://www.nerdwho.com/blog/wp-content/uploads/2011/09/arduino_led_botao_esquema.jpg" alt="" width="689" height="388" /></a></p>
<h2>Para entender um pouco mais sobre o botão</h2>
<p>O botão é uma pequena chave que quando pressionada conecta os seus dois lados. A maioria dos botões tem quatro pernas de conexão, embaixo do botão podemos ver uma linha central aprofundada (ver imagem abaixo), esta linha divide os dois lado do botão, isso quer dizer que de um lado da linha os pinos são interconectados e do outro lado também, e quando o botão é pressionado um lado é conectado ao outro, fazendo a corrente passar de um lado pro outro.</p>
<p><a href="http://www.nerdwho.com/blog/wp-content/uploads/2011/09/arduino_botao.jpg"><img class="alignnone size-large wp-image-31" title="arduino_botao" src="http://www.nerdwho.com/blog/wp-content/uploads/2011/09/arduino_botao-1024x298.jpg" alt="" width="584" height="169" /></a></p>
<p>E agora vamos fazer com que o pino do Led fique enviando corrente o tempo todo e quando o botão for pressionado, a corrente será enviada para o Led, fazendo com que ele acenda. Segue o código:</p>
<pre class="prettyprint dontquote">/*
  Led que liga quando o bot&Atilde;&pound;o &Atilde;&copy; apertado.

  Esquema:
  - Pino 2 como sa&Atilde;&shy;da, conectado a um resistor
    de 1k-ohm, conectado a uma das pernas do bot&Atilde;&pound;o.
  - Outra perna do bot&Atilde;&pound;o conectada ao positivo do Led.
  - Negativo do Led conectado ao terra (GND).
*/

// Definindo qual ser&Atilde;&iexcl; o pino do Led.
int pinoLed = 2;

void setup() {
  // Definindo o pino do Led como sa&Atilde;&shy;da (OUTPUT).
  pinMode(pinoLed, OUTPUT);
  // Deixando o pino do Led enviando +5V.
  digitalWrite(pinoLed, HIGH);
}

void loop() {
}</pre>
<p>Neste nosso código não temos nada no Loop, pois não mudamos em momento algum o comportamento dos pinos.</p>
<p>Bem simples, não é?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.nerdwho.com/blog/25/acendendo-um-led-quando-um-botao-e-pressionado/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Led piscando</title>
		<link>http://www.nerdwho.com/blog/12/led-piscando/</link>
		<comments>http://www.nerdwho.com/blog/12/led-piscando/#comments</comments>
		<pubDate>Wed, 07 Sep 2011 19:30:26 +0000</pubDate>
		<dc:creator>Jonatas Oliveira</dc:creator>
				<category><![CDATA[Arduino]]></category>
		<category><![CDATA[blink]]></category>
		<category><![CDATA[blinking]]></category>
		<category><![CDATA[led]]></category>
		<category><![CDATA[piscando]]></category>

		<guid isPermaLink="false">http://www.nerdwho.com/blog/?p=12</guid>
		<description><![CDATA[Fazer um led piscar com o Arduino é muito simples, vou mostrar aqui o esquema e a programação de como fazer isso com o seu arduino. Primeiro você vai precisar de um LED e um resistor de 1kΩ, você deve &#8230; <a href="http://www.nerdwho.com/blog/12/led-piscando/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.nerdwho.com/blog/wp-content/uploads/2011/09/arduino_led_piscando.jpg"><img class="alignnone size-large wp-image-13" title="Arduino foto do esquema de led piscando." src="http://www.nerdwho.com/blog/wp-content/uploads/2011/09/arduino_led_piscando-1024x576.jpg" alt="" width="584" height="328" /></a></p>
<p>Fazer um led piscar com o Arduino é muito simples, vou mostrar aqui o esquema e a programação de como fazer isso com o seu arduino.</p>
<p><span id="more-12"></span></p>
<p>Primeiro você vai precisar de um LED e um resistor de 1kΩ, você deve montar o seguinte esquema:</p>
<p><a href="http://www.nerdwho.com/blog/wp-content/uploads/2011/09/arduino_led_piscando_esquema.jpg"><img class="alignnone size-full wp-image-15" title="Esquema do led piscando." src="http://www.nerdwho.com/blog/wp-content/uploads/2011/09/arduino_led_piscando_esquema.jpg" alt="" width="713" height="401" /></a></p>
<p>Depois do esquema montado vamos ao programa:</p>
<pre class="prettyprint ">/*
  Led piscando de 1 em 1 segundo.

  Esquema:
  - Led conectado a sa&Atilde;&shy;da digital 2 atrav&Atilde;&copy;s de
    um resistor de 1k-ohm.
  - Negativo do Led conectado ao terra (GND).
*/

// Definindo qual ser&Atilde;&iexcl; o pino do Led.
int pinoLed = 2;

void setup() {
  // Definindo o pino do Led como sa&Atilde;&shy;da (OUTPUT).
  pinMode(pinoLed, OUTPUT);
}

void loop() {
  // Ligando o Led.
  digitalWrite(pinoLed, HIGH);

  // Esperando 1 segundo com o Led ligado.
  // -&amp;gt; 1000 milisegundos = 1 segundo
  delay(1000);

  // Desligando o Led.
  digitalWrite(pinoLed, LOW);

  // Esperando 1 segundo com o Led desligado.
  delay(1000);
}</pre>
<p>O programa é muito simples. Primeiro definimos qual será o pino que enviará energia para o Led acender:</p>
<pre class="prettyprint ">// Definindo qual ser&Atilde;&iexcl; o pino do Led.
int pinoLed = 2;</pre>
<p>Depois é só dizer que o pino que o Led está servirá como pino de saída (os pinos digitais podem servir como saída e entrada):</p>
<pre class="prettyprint ">void setup() {
  // Definindo o pino do Led como sa&Atilde;&shy;da (OUTPUT).
  pinMode(pinoLed, OUTPUT);
}</pre>
<p>E no loop fazemos com que o pino do Led fique enviando HIGH (+5V) para o Led, para que o mesmo fique ligado por 1 segundo (ou 1000 milisegundos) e depois fique enviando LOW (0V) para o Led para que o mesmo fique desligado por 1 segundo:</p>
<pre class="prettyprint ">void loop() {
  // Ligando o Led.
  digitalWrite(pinoLed, HIGH);
  // Esperando 1 segundo com o Led ligado.
  // -&amp;gt; 1000 milisegundos = 1 segundo
  delay(1000);

  // Desligando o Led.
  digitalWrite(pinoLed, LOW);

  // Esperando 1 segundo com o Led desligado.
  delay(1000);
}</pre>
<p>Acho que este é o esquema mais simples de se trabalhar com o Arduino. Em breve colocarei esquemas um pouco mais complicados.</p>
<h2>Por que preciso usar um resistor entre o pino e o Led?</h2>
<p>Um resistor é um componente feito para impedir ou reduzir a passagem de corrente elétrica. Se conectarmos o Led diretamente ao pino, será enviada muita corrente para o Led, mais corrente do que o necessário para que ele acenda. Isso pode fazer com que o Led &#8220;queime&#8221; ou até mesmo causar um curto circuito no seu Arduino.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.nerdwho.com/blog/12/led-piscando/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Arduino</title>
		<link>http://www.nerdwho.com/blog/4/arduino/</link>
		<comments>http://www.nerdwho.com/blog/4/arduino/#comments</comments>
		<pubDate>Wed, 07 Sep 2011 18:24:06 +0000</pubDate>
		<dc:creator>Jonatas Oliveira</dc:creator>
				<category><![CDATA[Arduino]]></category>
		<category><![CDATA[duemilanove]]></category>
		<category><![CDATA[iniciante]]></category>
		<category><![CDATA[start kit]]></category>
		<category><![CDATA[starter]]></category>

		<guid isPermaLink="false">http://www.nerdwho.com/blog/?p=4</guid>
		<description><![CDATA[Comprei recentemente um Arduino. Comecei a brincar primeiro com com leds e resistores e tudo é muito divertido, mesmo acender um led que é uma coisa muito simples traz uma enorme satisfação quando você faz tudo, desde o programa até &#8230; <a href="http://www.nerdwho.com/blog/4/arduino/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.nerdwho.com/blog/wp-content/uploads/2011/09/arduino.jpg"><img class="alignnone size-large wp-image-5" title="Arduino Start Kit" src="http://www.nerdwho.com/blog/wp-content/uploads/2011/09/arduino-1024x576.jpg" alt="" width="584" height="328" /></a></p>
<p>Comprei recentemente um Arduino. Comecei a brincar primeiro com com leds e resistores e tudo é muito divertido, mesmo acender um led que é uma coisa muito simples traz uma enorme satisfação quando você faz tudo, desde o programa até o circuito.</p>
<p>Eu não sabia nada de eletrônica, e ainda não sei muito, mas é muito legal quando você tem que pensar sobre os componentes que farão parte do seu circuito e se você deve ou não colocar um resistor alí entre eles. Isso faz você aprender bastante na prática.</p>
<p>Neste blog vou <em>tentar</em> falar sobre Arduino e quando eu for desenvolvendo meus projetos colocarei em detalhes aqui.</p>
<p>Até mais.</p>
<p>PS: Tentarei colocar todas as imagens, diagramas e vídeos em alta definição para ficar mais simples de acompanhar o que e como estou fazendo.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.nerdwho.com/blog/4/arduino/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

