﻿<?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>Armando Leopoldo Keller &#187; geral</title>
	<atom:link href="http://armandokeller.com/blog/category/geral/feed/" rel="self" type="application/rss+xml" />
	<link>http://armandokeller.com/blog</link>
	<description>Actionscript, AIR, Python, Engenharia Elétrica....</description>
	<lastBuildDate>Tue, 24 Jan 2012 19:26:51 +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>PyObjC Python no XCode</title>
		<link>http://armandokeller.com/blog/2010/06/pyobjc-python-no-xcode/</link>
		<comments>http://armandokeller.com/blog/2010/06/pyobjc-python-no-xcode/#comments</comments>
		<pubDate>Sun, 27 Jun 2010 17:46:20 +0000</pubDate>
		<dc:creator>Armando Leopoldo Keller</dc:creator>
				<category><![CDATA[Apple]]></category>
		<category><![CDATA[C/C++]]></category>
		<category><![CDATA[eletrônica]]></category>
		<category><![CDATA[geral]]></category>
		<category><![CDATA[pessoal]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[Sem categoria]]></category>
		<category><![CDATA[cocoa]]></category>
		<category><![CDATA[controle]]></category>
		<category><![CDATA[integração]]></category>
		<category><![CDATA[Mac OS]]></category>
		<category><![CDATA[Objective-C]]></category>
		<category><![CDATA[Petroleo]]></category>
		<category><![CDATA[PIC]]></category>
		<category><![CDATA[Projeto]]></category>
		<category><![CDATA[PyObjC]]></category>
		<category><![CDATA[rs232]]></category>
		<category><![CDATA[XCode]]></category>

		<guid isPermaLink="false">http://armandokeller.com/blog/?p=100</guid>
		<description><![CDATA[Como utilizar python com XCode para desenvolver aplicaçoes nativas apra o Mac OS, algumas divagaçoes sobre o futuro do projeto do sistema de controle com PIC e RS232, e da minha vida profissional e pessoal, algumas teorias sobre o petroleo... ]]></description>
			<content:encoded><![CDATA[<div class="socialize-in-content" style="float:left;"><div class="socialize-in-button socialize-in-button-vertical"><script type="text/javascript">
			<!-- 
				tweetmeme_url = "http://armandokeller.com/blog/2010/06/pyobjc-python-no-xcode/";
				tweetmeme_source = "tweetmeme";
				tweetmeme_style = "";
				
			//-->
			</script>
                        <script type="text/javascript" src="http://tweetmeme.com/i/scripts/button.js"></script></div><div class="socialize-in-button socialize-in-button-vertical"><script>
			<!-- 
			var fbShare = {
				url: "http://armandokeller.com/blog/2010/06/pyobjc-python-no-xcode/",
				size: "large",
				google_analytics: "true"
			}
			//-->
			</script>
                        <script src="http://widgets.fbshare.me/files/fbshare.js"></script></div><div class="socialize-in-button socialize-in-button-vertical"><script type="text/javascript"><!-- 
		(function() {
		var s = document.createElement('SCRIPT'), s1 = document.getElementsByTagName('SCRIPT')[0];
		s.type = 'text/javascript';
		s.async = true;
		s.src = 'http://widgets.digg.com/buttons.js';
		s1.parentNode.insertBefore(s, s1);
		})();
		//-->
		</script><a class="DiggThisButton " href="http://digg.com/submit?url=http%3A%2F%2Farmandokeller.com%2Fblog%2F2010%2F06%2Fpyobjc-python-no-xcode%2F"></a></div><div class="socialize-in-button socialize-in-button-vertical"><div class="delicious-button"><div class="del-top"><span id="100">0</span>saves</div><div class="del-bot"><a href="http://delicious.com/save" onclick="window.open('http://delicious.com/save?v=5&noui&jump=close&url='+encodeURIComponent(location.href)+'&title='+encodeURIComponent(document.title), 'delicious','toolbar=no,width=550,height=550'); return false;">Save</a></div></div>
		<script>
			<!-- 
			function displayURL(data) { var urlinfo = data[0]; if (!urlinfo.total_posts) return;document.getElementById('100').innerHTML = urlinfo.total_posts;}
			//-->
		</script>
		<script src = "http://badges.del.icio.us/feeds/json/url/data?url=http://armandokeller.com/blog/2010/06/pyobjc-python-no-xcode/&amp;callback=displayURL"></script></div></div><p>Bom, faz uma semana que estou com meu macbook, mas estou em epoca de provas na faculdade e não tive muito tempo de estudar ObjC, mas queria fazer algo nativo para o mac. Então fui procurar como desenvolver em uma linguagem que eu ja conheço, no caso Python.<br />
Acabei encontrando o PyObjC ( <a href="http://pyobjc.sourceforge.net/ ">http://pyobjc.sourceforge.net/ </a>) que utilizado junto com o XCode é uma maravilha para desenvolver.</p>
<p>Primeiro vai precisar instalar o XCode (<a href=" http://developer.apple.com/technologies/xcode.html "> http://developer.apple.com/technologies/xcode.html </a>) só seguir os passos ali do site que não tem erro.</p>
<p>Agora precisa baixar e instalar o PyObjC (<a href=" http://ioanna.me/2009/09/installing-pyobjc-xcode-templates-in-snow-leopard/"> http://ioanna.me/2009/09/installing-pyobjc-xcode-templates-in-snow-leopard/</a> )</p>
<p>Pronto agora é só desenvolver, seguem dois videos que encontrei neste blog ( <a href="http://fiorix.wordpress.com/2008/07/23/xcode-31-e-cocoa-python/">http://fiorix.wordpress.com/2008/07/23/xcode-31-e-cocoa-python/</a> ) , eles foram feitos no XCode 3.1 que é um pouco diferente do 3.2 (a versão que eu testei) mas muda pouca coisa, só ali na parte de atribuir as açoes aos componentes é em outra janela.</p>
<p>Parte 1:<br />
<object width="560" height="360"><param name="movie" value="http://www.youtube.com/v/60IulQIBGNA&#038;color1=0xb1b1b1&#038;color2=0xd0d0d0&#038;hl=en_US&#038;feature=player_embedded&#038;fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowScriptAccess" value="always"></param><embed src="http://www.youtube.com/v/60IulQIBGNA&#038;color1=0xb1b1b1&#038;color2=0xd0d0d0&#038;hl=en_US&#038;feature=player_embedded&#038;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" allowScriptAccess="always" width="560" height="360"></embed></object></p>
<p>Parte 2:<br />
<object width="560" height="360"><param name="movie" value="http://www.youtube.com/v/rrXF6Gn_KPM&#038;color1=0xb1b1b1&#038;color2=0xd0d0d0&#038;hl=en_US&#038;feature=player_embedded&#038;fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowScriptAccess" value="always"></param><embed src="http://www.youtube.com/v/rrXF6Gn_KPM&#038;color1=0xb1b1b1&#038;color2=0xd0d0d0&#038;hl=en_US&#038;feature=player_embedded&#038;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" allowScriptAccess="always" width="560" height="360"></embed></object></p>
<p>Agora passando as provas vou ter mais tempo de estudar ObjC, mas é bom saber que posso contar com python se necessario.<br />
Quanto ao meu projeto do sistema de controle com PIC e porta serial (rs232), foi apresentado ja a parte basica (comandos enviados via console, e apenas ligando ou desligando dispositivos). Agora vou desenvolvendo ele no meu tempo livre, quero mudar algumas coisas nele ainda:</p>
<p>- Utilizar mais python e menos C por questão de portabilidade (antes tinha que utilizar C pois era para a cadeira de programação C)<br />
- Desenvolver bibliotecas com funçoes basicas de controle para alguns modelos de PIC<br />
- Montar um destes kits de desenvolvimento, para que mais pessoas possam testar mesmo que não entendam muito de eletrônica</p>
]]></content:encoded>
			<wfw:commentRss>http://armandokeller.com/blog/2010/06/pyobjc-python-no-xcode/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Sistema de controle com PIC e porta Serial (rs232) parte 2</title>
		<link>http://armandokeller.com/blog/2010/05/sistema-de-controle-com-pic-e-porta-serial-rs232-parte-2/</link>
		<comments>http://armandokeller.com/blog/2010/05/sistema-de-controle-com-pic-e-porta-serial-rs232-parte-2/#comments</comments>
		<pubDate>Tue, 18 May 2010 02:45:34 +0000</pubDate>
		<dc:creator>Armando Leopoldo Keller</dc:creator>
				<category><![CDATA[C/C++]]></category>
		<category><![CDATA[eletrônica]]></category>
		<category><![CDATA[geral]]></category>
		<category><![CDATA[Sem categoria]]></category>
		<category><![CDATA[C]]></category>
		<category><![CDATA[PIC]]></category>
		<category><![CDATA[rs232]]></category>
		<category><![CDATA[serial]]></category>

		<guid isPermaLink="false">http://armandokeller.com/blog/?p=96</guid>
		<description><![CDATA[Parte 2 sobre comunicação Serial PC<->PIC utilizando a linguagem de programação C]]></description>
			<content:encoded><![CDATA[<div class="socialize-in-content" style="float:left;"><div class="socialize-in-button socialize-in-button-vertical"><script type="text/javascript">
			<!-- 
				tweetmeme_url = "http://armandokeller.com/blog/2010/05/sistema-de-controle-com-pic-e-porta-serial-rs232-parte-2/";
				tweetmeme_source = "tweetmeme";
				tweetmeme_style = "";
				
			//-->
			</script>
                        <script type="text/javascript" src="http://tweetmeme.com/i/scripts/button.js"></script></div><div class="socialize-in-button socialize-in-button-vertical"><script>
			<!-- 
			var fbShare = {
				url: "http://armandokeller.com/blog/2010/05/sistema-de-controle-com-pic-e-porta-serial-rs232-parte-2/",
				size: "large",
				google_analytics: "true"
			}
			//-->
			</script>
                        <script src="http://widgets.fbshare.me/files/fbshare.js"></script></div><div class="socialize-in-button socialize-in-button-vertical"><script type="text/javascript"><!-- 
		(function() {
		var s = document.createElement('SCRIPT'), s1 = document.getElementsByTagName('SCRIPT')[0];
		s.type = 'text/javascript';
		s.async = true;
		s.src = 'http://widgets.digg.com/buttons.js';
		s1.parentNode.insertBefore(s, s1);
		})();
		//-->
		</script><a class="DiggThisButton " href="http://digg.com/submit?url=http%3A%2F%2Farmandokeller.com%2Fblog%2F2010%2F05%2Fsistema-de-controle-com-pic-e-porta-serial-rs232-parte-2%2F"></a></div><div class="socialize-in-button socialize-in-button-vertical"><div class="delicious-button"><div class="del-top"><span id="96">0</span>saves</div><div class="del-bot"><a href="http://delicious.com/save" onclick="window.open('http://delicious.com/save?v=5&noui&jump=close&url='+encodeURIComponent(location.href)+'&title='+encodeURIComponent(document.title), 'delicious','toolbar=no,width=550,height=550'); return false;">Save</a></div></div>
		<script>
			<!-- 
			function displayURL(data) { var urlinfo = data[0]; if (!urlinfo.total_posts) return;document.getElementById('96').innerHTML = urlinfo.total_posts;}
			//-->
		</script>
		<script src = "http://badges.del.icio.us/feeds/json/url/data?url=http://armandokeller.com/blog/2010/05/sistema-de-controle-com-pic-e-porta-serial-rs232-parte-2/&amp;callback=displayURL"></script></div></div><p>Hoje vou mostrar como fazer a parte do PC para se conectar com o PIC , e tem algumas alteraçoes no codigo do pic tambem.<br />
Não vou entrar em muitos detalhes sobre o codigo do PIC pois este era o foco da parte 1<br />
Segue o codigo:</p>

<div class="wp_syntax"><div class="code"><pre class="c" style="font-family:monospace;"><span style="color: #339933;">#include &quot;16f628a.h&quot;                           // Inclui o cabeçalho especifico do pic a ser utilizado</span>
<span style="color: #339933;">#include &quot;stdio.h&quot;                              // Inclui as funçoes padroes de entrada e saida</span>
<span style="color: #339933;">#fuses HS,NOWDT,NOPROTECT                       // Configuração dos fuses (ver manual)</span>
<span style="color: #339933;">#use delay(clock=4000000)                       // Seta o clock interno para 4Mhz</span>
<span style="color: #339933;">#use rs232(baud=9600, xmit=PIN_B2, rcv=PIN_B1)  // Seta o baud rate para 9600, e define o pino B2 como TX e B1 como RX</span>
&nbsp;
<span style="color: #993333;">unsigned</span> <span style="color: #993333;">char</span> x<span style="color: #009900;">&#91;</span><span style="color: #0000dd;">4</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>  <span style="color: #666666; font-style: italic;">//Variavel do tipo char com 4 posiçoes (string de até 3 carateres) ou do tamanho do comando que desejarem utilizar</span>
<span style="color: #666666; font-style: italic;">// lembrando que sempre deve ter um caractere a mais pois tem o '\0' no final da string</span>
<span style="color: #993333;">unsigned</span> <span style="color: #993333;">int</span> pino<span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">//Variavel que armazenara o pino que esta sendo utilizado</span>
&nbsp;
<span style="color: #993333;">void</span> main<span style="color: #009900;">&#40;</span><span style="color: #993333;">void</span><span style="color: #009900;">&#41;</span> <span style="color: #666666; font-style: italic;">// função principal</span>
<span style="color: #009900;">&#123;</span>
   delay_ms<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">100</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">//tempo para inicializar a conexão</span>
   <span style="color: #b1b100;">do</span> <span style="color: #009900;">&#123;</span>
      gets<span style="color: #009900;">&#40;</span>x<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// pega a string e coloca na variavel x</span>
      <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span>x<span style="color: #009900;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">==</span> <span style="color: #ff0000;">'a'</span> <span style="color: #339933;">||</span> x<span style="color: #009900;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">==</span><span style="color: #ff0000;">'A'</span><span style="color: #009900;">&#41;</span> <span style="color: #666666; font-style: italic;">// Fazer isso para todas as portas desejadas, podendo ser A,B,C.. depende do pic</span>
      <span style="color: #009900;">&#123;</span>
         <span style="color: #b1b100;">switch</span><span style="color: #009900;">&#40;</span>x<span style="color: #009900;">&#91;</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span> <span style="color: #666666; font-style: italic;">// Ve se qual pino da porta quer controlar</span>
         <span style="color: #009900;">&#123;</span>
            <span style="color: #b1b100;">case</span> <span style="color: #ff0000;">'0'</span><span style="color: #339933;">:</span>
               pino <span style="color: #339933;">=</span> PIN_A0<span style="color: #339933;">;</span>
               <span style="color: #000000; font-weight: bold;">break</span><span style="color: #339933;">;</span>
            <span style="color: #b1b100;">case</span> <span style="color: #ff0000;">'1'</span><span style="color: #339933;">:</span>
               pino <span style="color: #339933;">=</span> PIN_A1<span style="color: #339933;">;</span>
               <span style="color: #000000; font-weight: bold;">break</span><span style="color: #339933;">;</span>
            <span style="color: #b1b100;">case</span> <span style="color: #ff0000;">'2'</span><span style="color: #339933;">:</span>
               pino <span style="color: #339933;">=</span> PIN_A2<span style="color: #339933;">;</span>
               <span style="color: #000000; font-weight: bold;">break</span><span style="color: #339933;">;</span>
            <span style="color: #b1b100;">case</span> <span style="color: #ff0000;">'3'</span><span style="color: #339933;">:</span>
               pino <span style="color: #339933;">=</span> PIN_A3<span style="color: #339933;">;</span>
               <span style="color: #000000; font-weight: bold;">break</span><span style="color: #339933;">;</span>
            <span style="color: #b1b100;">default</span><span style="color: #339933;">:</span>
               pino <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// se não for nenhum, coloca como 0;</span>
               <span style="color: #000000; font-weight: bold;">break</span><span style="color: #339933;">;</span>
         <span style="color: #009900;">&#125;</span>
      <span style="color: #009900;">&#125;</span>
      <span style="color: #b1b100;">else</span> <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span>x<span style="color: #009900;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">==</span> <span style="color: #ff0000;">'b'</span> <span style="color: #339933;">||</span> x<span style="color: #009900;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">==</span><span style="color: #ff0000;">'B'</span><span style="color: #009900;">&#41;</span> <span style="color: #666666; font-style: italic;">// mesma coisa que antes, porem agora para a porta B (e assim pode continuar)</span>
      <span style="color: #009900;">&#123;</span>
         <span style="color: #b1b100;">switch</span><span style="color: #009900;">&#40;</span>x<span style="color: #009900;">&#91;</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span>
         <span style="color: #009900;">&#123;</span>
            <span style="color: #b1b100;">case</span> <span style="color: #ff0000;">'0'</span><span style="color: #339933;">:</span>
               pino <span style="color: #339933;">=</span> PIN_B0<span style="color: #339933;">;</span>
               <span style="color: #000000; font-weight: bold;">break</span><span style="color: #339933;">;</span>
            <span style="color: #b1b100;">case</span> <span style="color: #ff0000;">'1'</span><span style="color: #339933;">:</span>
               pino <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// pino reservado para RS232</span>
               <span style="color: #000000; font-weight: bold;">break</span><span style="color: #339933;">;</span>
            <span style="color: #b1b100;">case</span> <span style="color: #ff0000;">'2'</span><span style="color: #339933;">:</span>
               pino <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// pino reservado para RS232</span>
               <span style="color: #000000; font-weight: bold;">break</span><span style="color: #339933;">;</span>
            <span style="color: #b1b100;">case</span> <span style="color: #ff0000;">'3'</span><span style="color: #339933;">:</span>
               pino <span style="color: #339933;">=</span> PIN_B3<span style="color: #339933;">;</span>
               <span style="color: #000000; font-weight: bold;">break</span><span style="color: #339933;">;</span>
            <span style="color: #b1b100;">case</span> <span style="color: #ff0000;">'4'</span><span style="color: #339933;">:</span>
               pino <span style="color: #339933;">=</span> PIN_B4<span style="color: #339933;">;</span>
               <span style="color: #000000; font-weight: bold;">break</span><span style="color: #339933;">;</span>
            <span style="color: #b1b100;">case</span> <span style="color: #ff0000;">'5'</span><span style="color: #339933;">:</span>
               pino <span style="color: #339933;">=</span> PIN_B5<span style="color: #339933;">;</span>
               <span style="color: #000000; font-weight: bold;">break</span><span style="color: #339933;">;</span>
            <span style="color: #b1b100;">case</span> <span style="color: #ff0000;">'6'</span><span style="color: #339933;">:</span>
               pino <span style="color: #339933;">=</span> PIN_B6<span style="color: #339933;">;</span>
               <span style="color: #000000; font-weight: bold;">break</span><span style="color: #339933;">;</span>
            <span style="color: #b1b100;">case</span> <span style="color: #ff0000;">'7'</span><span style="color: #339933;">:</span>
               pino <span style="color: #339933;">=</span> PIN_B7<span style="color: #339933;">;</span>
               <span style="color: #000000; font-weight: bold;">break</span><span style="color: #339933;">;</span>
            <span style="color: #b1b100;">default</span><span style="color: #339933;">:</span>
               pino <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>
               <span style="color: #000000; font-weight: bold;">break</span><span style="color: #339933;">;</span>
         <span style="color: #009900;">&#125;</span>
      <span style="color: #009900;">&#125;</span>
      <span style="color: #b1b100;">else</span>
      <span style="color: #009900;">&#123;</span>
       pino<span style="color: #339933;">=</span><span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>
       <span style="color: #666666; font-style: italic;">// Se não existir a porta que foi escolhida, seta o pino para 0 para que não mude o que foi escolhido anteriormente</span>
      <span style="color: #009900;">&#125;</span>
&nbsp;
      <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span>pino <span style="color: #339933;">!=</span> <span style="color: #0000dd;">0</span><span style="color: #009900;">&#41;</span> <span style="color: #666666; font-style: italic;">// Se o pino existir (não for 0)</span>
      <span style="color: #009900;">&#123;</span>
         <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span>x<span style="color: #009900;">&#91;</span><span style="color: #0000dd;">2</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">==</span><span style="color: #ff0000;">'l'</span> <span style="color: #339933;">||</span> x<span style="color: #009900;">&#91;</span><span style="color: #0000dd;">2</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">==</span><span style="color: #ff0000;">'L'</span><span style="color: #009900;">&#41;</span><span style="color: #666666; font-style: italic;">// Se o comando for L ou l (de ligar) </span>
         <span style="color: #009900;">&#123;</span>
            output_high<span style="color: #009900;">&#40;</span>pino<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// Coloca o valor 1 logico no pino escolhido</span>
            <span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;200<span style="color: #000099; font-weight: bold;">\n</span><span style="color: #000099; font-weight: bold;">\r</span>&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
         <span style="color: #009900;">&#125;</span>
         <span style="color: #b1b100;">else</span> <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span>x<span style="color: #009900;">&#91;</span><span style="color: #0000dd;">2</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">==</span><span style="color: #ff0000;">'d'</span> <span style="color: #339933;">||</span> x<span style="color: #009900;">&#91;</span><span style="color: #0000dd;">2</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">==</span><span style="color: #ff0000;">'D'</span><span style="color: #009900;">&#41;</span> <span style="color: #666666; font-style: italic;">// Se o comando for D ou d(de desligar) </span>
         <span style="color: #009900;">&#123;</span>
            output_low<span style="color: #009900;">&#40;</span>pino<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// Coloca o valor 0 logico no pino escolhido </span>
            <span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;200<span style="color: #000099; font-weight: bold;">\n</span><span style="color: #000099; font-weight: bold;">\r</span>&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
         <span style="color: #009900;">&#125;</span>
         <span style="color: #b1b100;">else</span> <span style="color: #666666; font-style: italic;">// Se o comando não for de ligar ou desligar</span>
         <span style="color: #009900;">&#123;</span>
            <span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;505<span style="color: #000099; font-weight: bold;">\n</span><span style="color: #000099; font-weight: bold;">\r</span>&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">//Avisa que o comando é invalido</span>
         <span style="color: #009900;">&#125;</span>
      <span style="color: #009900;">&#125;</span>
      <span style="color: #b1b100;">else</span> <span style="color: #666666; font-style: italic;">// Se o pino não existir (variavel pino igual a 0)</span>
      <span style="color: #009900;">&#123;</span>
         <span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;505<span style="color: #000099; font-weight: bold;">\n</span><span style="color: #000099; font-weight: bold;">\r</span>&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      <span style="color: #009900;">&#125;</span>
   <span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">while</span> <span style="color: #009900;">&#40;</span>TRUE<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// mantem o laço de repetição rodando em loop infinito</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>Bom, agora vamos ao que interessa, o software que controla o PIC pela porta serial de um PC.<br />
Normalmente a conexão serial é meio chatinha de fazer (seja em linux, windows, mac..) então recomendo que usem a biblioteca que se encontra neste site ( http://www.teuniz.net/RS-232/ ) que facilita bastante o nosso trabalho, e ja deixa portavel para outros OS tambem. Essa biblioteca é extremamente simples de ser utilizada, não vejo sentido em reescrever todo o codigo para a comunicação serial se ja tem uma biblioteca boa que faz isso, a não ser para aprender como funciona (recomendo que leiam o codigo da biblioteca)</p>
<p>Segue o codigo:</p>

<div class="wp_syntax"><div class="code"><pre class="c" style="font-family:monospace;"><span style="color: #339933;">#include &quot;stdio.h&quot;</span>
<span style="color: #339933;">#include &quot;stdlib.h&quot;</span>
<span style="color: #339933;">#include &quot;conio.h&quot;</span>
<span style="color: #339933;">#include &quot;windows.h&quot;</span>
<span style="color: #339933;">#include &quot;string.h&quot;</span>
<span style="color: #339933;">#include &quot;rs232.h&quot;</span>
&nbsp;
<span style="color: #993333;">void</span> loop<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// Declarando a função loop que está la em baixo</span>
&nbsp;
<span style="color: #993333;">unsigned</span> <span style="color: #993333;">char</span> comando<span style="color: #009900;">&#91;</span><span style="color: #0000dd;">5</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// comando a ser enviado</span>
<span style="color: #993333;">unsigned</span> <span style="color: #993333;">char</span> buff<span style="color: #009900;">&#91;</span><span style="color: #0000dd;">1024</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// comando recebido</span>
&nbsp;
<span style="color: #993333;">int</span> main<span style="color: #009900;">&#40;</span><span style="color: #993333;">void</span><span style="color: #009900;">&#41;</span> <span style="color: #666666; font-style: italic;">// Função principal</span>
<span style="color: #009900;">&#123;</span>
    OpenComport<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span><span style="color: #339933;">,</span><span style="color: #0000dd;">9600</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// abre a porta desejada (ver documentação)</span>
    loop<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// Chama a função loop</span>
    <span style="color: #b1b100;">return</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #993333;">void</span> loop<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #666666; font-style: italic;">// Função loop</span>
<span style="color: #009900;">&#123;</span>
    <span style="color: #993333;">int</span> n<span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// variavel temporaria</span>
    n <span style="color: #339933;">=</span> PollComport<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span><span style="color: #339933;">,</span>buff<span style="color: #339933;">,</span><span style="color: #0000dd;">1024</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// n != 0  se tiver algo pra ser recebido</span>
    <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span>n <span style="color: #339933;">==</span> <span style="color: #0000dd;">0</span><span style="color: #009900;">&#41;</span> <span style="color: #666666; font-style: italic;">// se não tiver recebendo nada</span>
    <span style="color: #009900;">&#123;</span>
        <span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;Digite o seu comando: &quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">//pergunta qual comando quer executar</span>
        gets<span style="color: #009900;">&#40;</span>comando<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// Pega o comando e coloca na variavel comando</span>
        strcat<span style="color: #009900;">&#40;</span>comando<span style="color: #339933;">,</span><span style="color: #ff0000;">&quot;<span style="color: #000099; font-weight: bold;">\n</span><span style="color: #000099; font-weight: bold;">\r</span>&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><span style="color: #666666; font-style: italic;">// adiciona uma quebra de linha (mais por motivos esteticos se for testar em terminal ou quardar log)</span>
        cprintf<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span><span style="color: #339933;">,</span>comando<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// manda o comando para a porta serial (ou USB com FTDI)</span>
        _sleep<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">200</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// delay de 200 milisegundos necessario para a sincronização (pode ser de 100)</span>
    <span style="color: #009900;">&#125;</span>
    <span style="color: #b1b100;">else</span> <span style="color: #666666; font-style: italic;">// Se tiver recebido algo</span>
    <span style="color: #009900;">&#123;</span>
        <span style="color: #666666; font-style: italic;">// Switch para ver o que cada codigo representa, e exibe para o usuario.</span>
        <span style="color: #b1b100;">switch</span><span style="color: #009900;">&#40;</span>atoi<span style="color: #009900;">&#40;</span>buff<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>
        <span style="color: #009900;">&#123;</span>
            <span style="color: #b1b100;">case</span> <span style="color: #0000dd;">200</span><span style="color: #339933;">:</span>
                <span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;OK!<span style="color: #000099; font-weight: bold;">\n</span><span style="color: #000099; font-weight: bold;">\r</span>&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
                <span style="color: #000000; font-weight: bold;">break</span><span style="color: #339933;">;</span>
            <span style="color: #b1b100;">case</span> <span style="color: #0000dd;">505</span><span style="color: #339933;">:</span>
                <span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;Erro!<span style="color: #000099; font-weight: bold;">\n</span><span style="color: #000099; font-weight: bold;">\r</span>&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
                <span style="color: #000000; font-weight: bold;">break</span><span style="color: #339933;">;</span>
            <span style="color: #b1b100;">default</span><span style="color: #339933;">:</span>
                <span style="color: #000000; font-weight: bold;">break</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span>
    <span style="color: #009900;">&#125;</span>
    loop<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// Chama a função novamente, assim mantendo um loop infinito</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>Acho que da pra entender como funciona só pelos comentarios.<br />
Esse codigo foi testado no windows 7 ultimate 64bit, utilizando o code::blocks para programar, e o GNU GCC para compilar. Para funcionar para linux tambem é necessario alterar algumas coisas, mas a logica é a mesma.</p>
<p>Ah, não saiam ligando os fios da serial direto no pic é preciso utilizar um MAX232 para isso, pois o sinal da serial é diferente do TTL utilizado pelo pic. Para saber como ligar o MAX232 é só olhar no datasheet.</p>
<p>Se quiserem testar só a comunicação serial virtualmente, recomendo o uso do virtual serial port driver da eltima, e hyper terminal. </p>
<p>Ainda falta eu colocar aqui a parte dos sockets (para o controle remoto), que ja está pronta só tenho que juntar tudo,  e a parte eletro-eletronica tambem, por exemplo um dimmer para uma lampada, como controlar interruptores&#8230; e alguns outros exemplos do que fazer.  A principio quero montar uma placa que controle varios interruptores.</p>
<p>Qualquer duvida, sugestão ou critica, favor deixar nos comentarios</p>
]]></content:encoded>
			<wfw:commentRss>http://armandokeller.com/blog/2010/05/sistema-de-controle-com-pic-e-porta-serial-rs232-parte-2/feed/</wfw:commentRss>
		<slash:comments>27</slash:comments>
		</item>
		<item>
		<title>Sistema de controle com PIC e porta Serial (rs232)</title>
		<link>http://armandokeller.com/blog/2010/05/sistema-de-controle-com-pic-e-porta-serial-rs232/</link>
		<comments>http://armandokeller.com/blog/2010/05/sistema-de-controle-com-pic-e-porta-serial-rs232/#comments</comments>
		<pubDate>Mon, 10 May 2010 00:06:49 +0000</pubDate>
		<dc:creator>Armando Leopoldo Keller</dc:creator>
				<category><![CDATA[geral]]></category>
		<category><![CDATA[Sem categoria]]></category>
		<category><![CDATA[C]]></category>
		<category><![CDATA[controle]]></category>
		<category><![CDATA[IC]]></category>
		<category><![CDATA[PIC]]></category>
		<category><![CDATA[rs232]]></category>
		<category><![CDATA[serial]]></category>
		<category><![CDATA[uC]]></category>

		<guid isPermaLink="false">http://armandokeller.com/blog/?p=76</guid>
		<description><![CDATA[Exemplo pratico de controle utilizando microcontroladores PIC. Coisas que normalmente seriam feitas com uma arduino podem ser feitas com um microcontrolador, gastando muito menos.]]></description>
			<content:encoded><![CDATA[<div class="socialize-in-content" style="float:left;"><div class="socialize-in-button socialize-in-button-vertical"><script type="text/javascript">
			<!-- 
				tweetmeme_url = "http://armandokeller.com/blog/2010/05/sistema-de-controle-com-pic-e-porta-serial-rs232/";
				tweetmeme_source = "tweetmeme";
				tweetmeme_style = "";
				
			//-->
			</script>
                        <script type="text/javascript" src="http://tweetmeme.com/i/scripts/button.js"></script></div><div class="socialize-in-button socialize-in-button-vertical"><script>
			<!-- 
			var fbShare = {
				url: "http://armandokeller.com/blog/2010/05/sistema-de-controle-com-pic-e-porta-serial-rs232/",
				size: "large",
				google_analytics: "true"
			}
			//-->
			</script>
                        <script src="http://widgets.fbshare.me/files/fbshare.js"></script></div><div class="socialize-in-button socialize-in-button-vertical"><script type="text/javascript"><!-- 
		(function() {
		var s = document.createElement('SCRIPT'), s1 = document.getElementsByTagName('SCRIPT')[0];
		s.type = 'text/javascript';
		s.async = true;
		s.src = 'http://widgets.digg.com/buttons.js';
		s1.parentNode.insertBefore(s, s1);
		})();
		//-->
		</script><a class="DiggThisButton " href="http://digg.com/submit?url=http%3A%2F%2Farmandokeller.com%2Fblog%2F2010%2F05%2Fsistema-de-controle-com-pic-e-porta-serial-rs232%2F"></a></div><div class="socialize-in-button socialize-in-button-vertical"><div class="delicious-button"><div class="del-top"><span id="76">0</span>saves</div><div class="del-bot"><a href="http://delicious.com/save" onclick="window.open('http://delicious.com/save?v=5&noui&jump=close&url='+encodeURIComponent(location.href)+'&title='+encodeURIComponent(document.title), 'delicious','toolbar=no,width=550,height=550'); return false;">Save</a></div></div>
		<script>
			<!-- 
			function displayURL(data) { var urlinfo = data[0]; if (!urlinfo.total_posts) return;document.getElementById('76').innerHTML = urlinfo.total_posts;}
			//-->
		</script>
		<script src = "http://badges.del.icio.us/feeds/json/url/data?url=http://armandokeller.com/blog/2010/05/sistema-de-controle-com-pic-e-porta-serial-rs232/&amp;callback=displayURL"></script></div></div><p>Estou fazendo um projeto para a cadeira de programação C que tem o objetivo de controlar eletronicos (sejam interruptores, motores, ou até coisas mais completas como temperatura de um ar-condicionado) remotamente, e achei interessante postar aqui o projeto para que mais gente possa ver como isso é feito (e como é mais simples do que se imagina).<br />
Por enquanto estou desenvolvendo o projeto em partes, para juntar tudo depois.<br />
Hoje vou falar sobre a parte do PIC enviar e receber dados pela porta serial.</p>
<p>Material utilizado (para testar virtualmente):</p>
<p>- Proteus 7.1 (para a simulação)<br />
- PCWH Compiler IDE (CCS) 4.038 (para programar e compilar o programa em C)</p>
<p>Passos da montagem no proteus:<br />
Passo 1: Criar um novo arquivo no Proteus.<br />
Passo 2: Adicionar o PIC de sua preferencia que tenha suporte a RS232, no caso do exemplo é o PIC16F628A.<br />
Passo 3: Adicionar os leds que quiser (de acordo com o numero de pinos que deseja controlar).<br />
Passo 4: Colocar um resistor de 470 Ohms em cada led.<br />
Passo 5: Ligar o LED-Resistor ou Resistor-LED (tanto faz a ordem) ao terra.<br />
Passo 6: Adicionar um terminal virtual ao projeto<br />
Passo 7: Ligar o pino RX do pic no TX do terminal<br />
Passo 8: Ligar o pino TX do pic no RX do terminal<br />
Passo 9: Salve o projeto onde preferir<br />
por enquanto é  isso no proteus, agora precisamos do programa a ser inserido no pic.</p>
<p>Para o programa do PIC, cada um programa no editor que preferir, e usa o compilador que quiser(Lembrando que mudando de compilador o codigo sera diferente). No exemplo eu estou usando o compilador CCS.<br />
O programa é o seguinte:</p>

<div class="wp_syntax"><div class="code"><pre class="c" style="font-family:monospace;"><span style="color: #339933;">#include &amp;lt;16f628a.h&amp;gt;                            // Inclui o cabeçalho especifico do pic a ser utilizado</span>
<span style="color: #339933;">#include                               // Inclui as funçoes padroes de entrada e saida</span>
<span style="color: #339933;">#fuses HS,NOWDT,NOPROTECT                       // Configuração dos fuses (ver manual)</span>
<span style="color: #339933;">#use delay(clock=4000000)                       // Seta o clock interno para 4Mhz</span>
<span style="color: #339933;">#use rs232(baud=9600, xmit=PIN_B2, rcv=PIN_B1)  // Seta o baud rate para 9600, e define o pino B2 como TX e B1 como RX</span>
&nbsp;
<span style="color: #993333;">unsigned</span> <span style="color: #993333;">char</span> x<span style="color: #009900;">&#91;</span><span style="color: #0000dd;">4</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>  <span style="color: #666666; font-style: italic;">//Variavel do tipo char com 4 posiçoes (string de até 3 carateres) ou do tamanho do comando que desejarem utilizar</span>
<span style="color: #666666; font-style: italic;">// lembrando que sempre deve ter um caractere a mais pois tem o '\0' no final da string</span>
<span style="color: #993333;">unsigned</span> <span style="color: #993333;">int</span> pino<span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">//Variavel que armazenara o pino que esta sendo utilizado</span>
&nbsp;
<span style="color: #993333;">void</span> main<span style="color: #009900;">&#40;</span><span style="color: #993333;">void</span><span style="color: #009900;">&#41;</span> <span style="color: #666666; font-style: italic;">// função principal</span>
<span style="color: #009900;">&#123;</span>
   delay_ms<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">100</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">//tempo para inicializar a conexão</span>
&nbsp;
   <span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;TESTE DE CONTROLE COM PIC<span style="color: #000099; font-weight: bold;">\n</span><span style="color: #000099; font-weight: bold;">\r</span>&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// Manda esta mesagem para o terminal</span>
   <span style="color: #666666; font-style: italic;">//Para testar se foi tudo ligado corretamente, feche a função aqui, compile e teste</span>
   <span style="color: #b1b100;">do</span> <span style="color: #009900;">&#123;</span>
      <span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;<span style="color: #000099; font-weight: bold;">\n</span><span style="color: #000099; font-weight: bold;">\r</span>&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      <span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;Envie um comando de 3 caracteres&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      <span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;sendo abc a=porta b=pino c=estado(l ou d) <span style="color: #000099; font-weight: bold;">\n</span><span style="color: #000099; font-weight: bold;">\r</span>&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      gets<span style="color: #009900;">&#40;</span>x<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// pega a string e coloca na variavel x</span>
      <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span>x<span style="color: #009900;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">==</span> <span style="color: #ff0000;">'a'</span> <span style="color: #339933;">||</span> x<span style="color: #009900;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">==</span><span style="color: #ff0000;">'A'</span><span style="color: #009900;">&#41;</span> <span style="color: #666666; font-style: italic;">// Fazer isso para todas as portas desejadas, podendo ser A,B,C.. depende do pic</span>
      <span style="color: #009900;">&#123;</span>
         <span style="color: #b1b100;">switch</span><span style="color: #009900;">&#40;</span>x<span style="color: #009900;">&#91;</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span> <span style="color: #666666; font-style: italic;">// Ve se qual pino da porta quer controlar</span>
         <span style="color: #009900;">&#123;</span>
            <span style="color: #b1b100;">case</span> <span style="color: #ff0000;">'0'</span><span style="color: #339933;">:</span>
               pino <span style="color: #339933;">=</span> PIN_A0<span style="color: #339933;">;</span>
               <span style="color: #000000; font-weight: bold;">break</span><span style="color: #339933;">;</span>
            <span style="color: #b1b100;">case</span> <span style="color: #ff0000;">'1'</span><span style="color: #339933;">:</span>
               pino <span style="color: #339933;">=</span> PIN_A1<span style="color: #339933;">;</span>
               <span style="color: #000000; font-weight: bold;">break</span><span style="color: #339933;">;</span>
            <span style="color: #b1b100;">case</span> <span style="color: #ff0000;">'2'</span><span style="color: #339933;">:</span>
               pino <span style="color: #339933;">=</span> PIN_A2<span style="color: #339933;">;</span>
               <span style="color: #000000; font-weight: bold;">break</span><span style="color: #339933;">;</span>
            <span style="color: #b1b100;">case</span> <span style="color: #ff0000;">'3'</span><span style="color: #339933;">:</span>
               pino <span style="color: #339933;">=</span> PIN_A3<span style="color: #339933;">;</span>
               <span style="color: #000000; font-weight: bold;">break</span><span style="color: #339933;">;</span>
            <span style="color: #b1b100;">default</span><span style="color: #339933;">:</span>
               pino <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// se não for nenhum, coloca como 0;</span>
               <span style="color: #000000; font-weight: bold;">break</span><span style="color: #339933;">;</span>
         <span style="color: #009900;">&#125;</span>
      <span style="color: #009900;">&#125;</span>
      <span style="color: #b1b100;">else</span> <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span>x<span style="color: #009900;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">==</span> <span style="color: #ff0000;">'b'</span> <span style="color: #339933;">||</span> x<span style="color: #009900;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">==</span><span style="color: #ff0000;">'B'</span><span style="color: #009900;">&#41;</span> <span style="color: #666666; font-style: italic;">// mesma coisa que antes, porem agora para a porta B (e assim pode continuar)</span>
      <span style="color: #009900;">&#123;</span>
         <span style="color: #b1b100;">switch</span><span style="color: #009900;">&#40;</span>x<span style="color: #009900;">&#91;</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span>
         <span style="color: #009900;">&#123;</span>
            <span style="color: #b1b100;">case</span> <span style="color: #ff0000;">'0'</span><span style="color: #339933;">:</span>
               pino <span style="color: #339933;">=</span> PIN_B0<span style="color: #339933;">;</span>
               <span style="color: #000000; font-weight: bold;">break</span><span style="color: #339933;">;</span>
            <span style="color: #b1b100;">case</span> <span style="color: #ff0000;">'1'</span><span style="color: #339933;">:</span>
               pino <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// pino reservado para RS232</span>
               <span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;Pino reservado!&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
               <span style="color: #000000; font-weight: bold;">break</span><span style="color: #339933;">;</span>
            <span style="color: #b1b100;">case</span> <span style="color: #ff0000;">'2'</span><span style="color: #339933;">:</span>
               pino <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// pino reservado para RS232</span>
               <span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;Pino reservado!&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
               <span style="color: #000000; font-weight: bold;">break</span><span style="color: #339933;">;</span>
            <span style="color: #b1b100;">case</span> <span style="color: #ff0000;">'3'</span><span style="color: #339933;">:</span>
               pino <span style="color: #339933;">=</span> PIN_B3<span style="color: #339933;">;</span>
               <span style="color: #000000; font-weight: bold;">break</span><span style="color: #339933;">;</span>
            <span style="color: #b1b100;">case</span> <span style="color: #ff0000;">'4'</span><span style="color: #339933;">:</span>
               pino <span style="color: #339933;">=</span> PIN_B4<span style="color: #339933;">;</span>
               <span style="color: #000000; font-weight: bold;">break</span><span style="color: #339933;">;</span>
            <span style="color: #b1b100;">case</span> <span style="color: #ff0000;">'5'</span><span style="color: #339933;">:</span>
               pino <span style="color: #339933;">=</span> PIN_B5<span style="color: #339933;">;</span>
               <span style="color: #000000; font-weight: bold;">break</span><span style="color: #339933;">;</span>
            <span style="color: #b1b100;">case</span> <span style="color: #ff0000;">'6'</span><span style="color: #339933;">:</span>
               pino <span style="color: #339933;">=</span> PIN_B6<span style="color: #339933;">;</span>
               <span style="color: #000000; font-weight: bold;">break</span><span style="color: #339933;">;</span>
            <span style="color: #b1b100;">case</span> <span style="color: #ff0000;">'7'</span><span style="color: #339933;">:</span>
               pino <span style="color: #339933;">=</span> PIN_B7<span style="color: #339933;">;</span>
               <span style="color: #000000; font-weight: bold;">break</span><span style="color: #339933;">;</span>
            <span style="color: #b1b100;">default</span><span style="color: #339933;">:</span>
               pino <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>
               <span style="color: #000000; font-weight: bold;">break</span><span style="color: #339933;">;</span>
         <span style="color: #009900;">&#125;</span>
      <span style="color: #009900;">&#125;</span>
      <span style="color: #b1b100;">else</span>
      <span style="color: #009900;">&#123;</span>
       pino<span style="color: #339933;">=</span><span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>
       <span style="color: #666666; font-style: italic;">// Se não existir a porta que foi escolhida, seta o pino para 0 para que não mude o que foi escolhido anteriormente</span>
      <span style="color: #009900;">&#125;</span>
&nbsp;
      <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span>pino <span style="color: #339933;">!=</span> <span style="color: #0000dd;">0</span><span style="color: #009900;">&#41;</span> <span style="color: #666666; font-style: italic;">// Se o pino existir (não for 0)</span>
      <span style="color: #009900;">&#123;</span>
         <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span>x<span style="color: #009900;">&#91;</span><span style="color: #0000dd;">2</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">==</span><span style="color: #ff0000;">'l'</span> <span style="color: #339933;">||</span> x<span style="color: #009900;">&#91;</span><span style="color: #0000dd;">2</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">==</span><span style="color: #ff0000;">'L'</span><span style="color: #009900;">&#41;</span><span style="color: #666666; font-style: italic;">// Se o comando for L ou l (de ligar)</span>
         <span style="color: #009900;">&#123;</span>
            output_high<span style="color: #009900;">&#40;</span>pino<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// Coloca o valor 1 logico no pino escolhido</span>
         <span style="color: #009900;">&#125;</span>
         <span style="color: #b1b100;">else</span> <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span>x<span style="color: #009900;">&#91;</span><span style="color: #0000dd;">2</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">==</span><span style="color: #ff0000;">'d'</span> <span style="color: #339933;">||</span> x<span style="color: #009900;">&#91;</span><span style="color: #0000dd;">2</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">==</span><span style="color: #ff0000;">'D'</span><span style="color: #009900;">&#41;</span> <span style="color: #666666; font-style: italic;">// Se o comando for D ou d(de desligar)</span>
         <span style="color: #009900;">&#123;</span>
            output_low<span style="color: #009900;">&#40;</span>pino<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// Coloca o valor 0 logico no pino escolhido</span>
         <span style="color: #009900;">&#125;</span>
         <span style="color: #b1b100;">else</span> <span style="color: #666666; font-style: italic;">// Se o comando não for de ligar ou desligar</span>
         <span style="color: #009900;">&#123;</span>
            <span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;Comando invalido. Tente novamente <span style="color: #000099; font-weight: bold;">\n</span><span style="color: #000099; font-weight: bold;">\r</span>&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">//Avisa que o comando é invalido</span>
         <span style="color: #009900;">&#125;</span>
      <span style="color: #009900;">&#125;</span>
      <span style="color: #b1b100;">else</span> <span style="color: #666666; font-style: italic;">// Se o pino não existir (variavel pino igual a 0)</span>
      <span style="color: #009900;">&#123;</span>
         <span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;Comando invalido. Tente novamente <span style="color: #000099; font-weight: bold;">\n</span><span style="color: #000099; font-weight: bold;">\r</span>&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      <span style="color: #009900;">&#125;</span>
   <span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">while</span> <span style="color: #009900;">&#40;</span>TRUE<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// mantem o laço de repetição rodando em loop infinito</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>Os dois promeiros includes não aparecem bem com esse plugin, mas são:<br />
#include &lt;16f628a.h&gt;<br />
#include<br />
Acho que não tem nada de muito complicado neste codigo, no máximo a parte de configuração dos fuses, o que pode ser visto no manual do compilador, ou em qualquer tutorial basico sobre o CCS. e o resto dos comandos são basicos da linguagem C (aprenda o basico de C antes de tentar fazer isso, aqueles programinhas em terminal). Qualquer outra coisa é só postar a duvida que eu respondo.</p>
<p>Agora precisa compilar o programa (sugiro copiar o .hex gerado para a pasta do projeto do proteus).</p>
<p>Voltando ao proteus agora,</p>
<p>Passo 10: Clique duas vezes sobre o PIC, sete o clock para 4Mhz (em Processor Clock Frequency) e em Program File coloque o caminho para o arquivo .hex gerado pelo compilador.</p>
<p>Pronto, agora depois de tudo configurado é só rodar a simulação que funcionara, a menos que tenha feito algo errado (antes de perguntar, favor ler novamente e ver se esta tudo igual). Lembrando que ao copiar e colar o codigo para o seu editor de textos normalmente tem que trocar as aspas pois vai como acento.</p>
<p>Esta é somente a base para algo mais complexo, se quiser controlar um motor, ler um valor analogico (potenciometro, ldr, temperatura&#8230;) ou qualquer outra coisa mais complexa, tera que implementar as suas funçoes e comandos para isso.</p>
<p>Conforme eu for fazendo o projeto, e tiver tempo, vou postando aqui.</p>
<p>Uma coisa que acho importante ao compartilhar este projeto, é mostrar para as pessoas que usam arduino, que não é preciso gastar muito com uma arduino para fazer projetos simples, os microcontroladores são baratos (em torno de uns 10 reais) e são super simples de programar.</p>
<p>Seguem algumas imagens de como fica o projeto:</p>
<div id="attachment_88" class="wp-caption alignnone" style="width: 778px"></p>
<div class="mceTemp mceIEcenter">
<dl id="attachment_87" class="wp-caption aligncenter" style="width: 778px;">
<dt class="wp-caption-dt"><img class="size-full wp-image-87 " title="Como fica no proteus" src="http://armandokeller.com/blog/wp-content/uploads/2010/05/proteus1.jpg" alt="Como fica no proteus" width="768" height="463" /><p class="wp-caption-text">Como fica no proteus</p></div>
<p><img class="size-full wp-image-88 " title="Funcionando no proteus com o terminal" src="http://armandokeller.com/blog/wp-content/uploads/2010/05/proteus11.jpg" alt="Funcionando no proteus com o terminal" width="768" height="460" /></p>
</dt>
<dd class="wp-caption-dd">Funcionando no proteus com o terminal</dd>
</dl>
</div>
<p>EDITANDO:  Como foi pedido nos comentarios, seguem os arquivos utilizados no exemplo: <a href="http://armandokeller.com/blog/wp-content/uploads/2010/05/RS232.zip">Arquivos do projeto</a></p>
]]></content:encoded>
			<wfw:commentRss>http://armandokeller.com/blog/2010/05/sistema-de-controle-com-pic-e-porta-serial-rs232/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
	</channel>
</rss>

