<?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>Bruno Soares &#187; Game</title>
	<atom:link href="http://blog.bsoares.com.br/category/game/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.bsoares.com.br</link>
	<description></description>
	<lastBuildDate>Sat, 23 Apr 2011 00:32:26 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Jogando Super Nintendo no Android com controle original</title>
		<link>http://blog.bsoares.com.br/arduino/snes-android-amarino-original-controller-bluesmirf</link>
		<comments>http://blog.bsoares.com.br/arduino/snes-android-amarino-original-controller-bluesmirf#comments</comments>
		<pubDate>Fri, 22 Apr 2011 01:15:52 +0000</pubDate>
		<dc:creator>Bruno Soares</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Arduino]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[Electronics]]></category>
		<category><![CDATA[Game]]></category>
		<category><![CDATA[Amarino]]></category>
		<category><![CDATA[BlueSMiRF]]></category>
		<category><![CDATA[Bluetooth]]></category>
		<category><![CDATA[DIY]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Open Hardware]]></category>
		<category><![CDATA[SNES]]></category>

		<guid isPermaLink="false">http://blog.bsoares.com.br/?p=620</guid>
		<description><![CDATA[Logo que comprei meu HTC Desire HD (sistema operacional Android) instalei um emulador de Super Nintendo (SNES), este foi um dos poucos videogames que tive, e era viciado (quando tinha 10 / 11 anos) em Super Mario World, assim que instalei o Mario me veio aquela nostalgia! Mas jogar com o controle touch screen é [...]]]></description>
			<content:encoded><![CDATA[<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fblog.bsoares.com.br%2Farduino%2Fsnes-android-amarino-original-controller-bluesmirf&amp;layout=standard&amp;show_faces=true&amp;width=450&amp;action=like&amp;colorscheme=light&amp;height=80" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:450px; height:80px;" allowTransparency="true"></iframe><p><a href="http://blog.bsoares.com.br/wp-content/uploads/2011/04/android-snes-controller-arduino-bluetooth-amarino-1.jpg" rel="shadowbox[post-620];player=img;"><img src="http://blog.bsoares.com.br/wp-content/uploads/2011/04/android-snes-controller-arduino-bluetooth-amarino-1-300x300.jpg" alt="Jogando SNES com controle original via bluetooth" title="android-snes-controller-arduino-bluetooth-amarino-1" width="300" height="300" class="alignleft size-thumbnail wp-image-666" /></a> Logo que comprei meu <a href="http://www.htc.com/www/product/desirehd/overview.html">HTC Desire HD</a> (sistema operacional <a href="http://www.android.com/">Android</a>) instalei um <a href="https://market.android.com/details?id=com.tiger.snes">emulador de Super Nintendo (SNES)</a>, este foi um dos poucos videogames que tive, e era viciado (quando tinha 10 / 11 anos) em <a href="http://pt.wikipedia.org/wiki/Super_Mario_World">Super Mario World</a>, assim que instalei o Mario me veio aquela nostalgia! Mas jogar com o controle touch screen é péssimo, não tem experiência tátil e o seu dedo fica encima do jogo.<br />
Então pensei, é claro que alguém já ligou o controle original no celular, e estava certo,  encontrei este vídeo: &#8220;<a href="http://www.youtube.com/watch?v=_FZTz2KO9vU">http://www.youtube.com/watch?v=_FZTz2KO9vU</a>&#8220;. Mas tem um detalhe muito importante este projeto, é para <a href="http://pt.wikipedia.org/wiki/Nintendo_Entertainment_System">NES</a> e não o <a href="http://pt.wikipedia.org/wiki/Super_Nintendo_Entertainment_System">SNES</a> (mais novo), ou seja, sabia que era possível fazer e tinha os materiais para isto, então só esperei sobrar um tempo para fazer (o único componente que não tinha era o controle, mas consegui um paralelo por R$ 8,00 no <a href="http://lista.mercadolivre.com.br/SNES%20Controle">Mercado Livre</a>).</p>
<p><iframe src="http://player.vimeo.com/video/22722692?portrait=0&amp;color=4c4787" width="580" height="435" frameborder="0"></iframe><br />
<a href="http://vimeo.com/bsoares/snes-on-android-with-controller-and-bluesmirf">vimeo.com/bsoares/snes-on-android-with-controller-and-bluesmirf</a></p>
<p><strong>Como funciona:</strong><br />
O controle do SNES esta ligado a Arduino, é bem fácil obter as teclas pressionadas, mas existe uma biblioteca para tornar esta tarefa ainda mais simples (<a href="http://code.google.com/p/nespad/">NESpad/SNESpad</a>). Cada tecla pressionada liga um bit dentro do número que representa o estado das teclas do controle, e este estado (número) é enviado via Bluetooth (uso o <a href="http://www.sparkfun.com/products/10269">BlueSMiRF</a>) para o Android.<br />
No Android, quem recebe este número é o <a href="http://www.amarino-toolkit.net/">Amarino</a>, mas ele apenas recebe o número, ainda é necessário um App (que foi modificado a partir deste exemplo &#8220;<a href="http://developer.android.com/resources/samples/SoftKeyboard/index.html">SoftKeyboard</a>&#8220;) para converter este número em teclas pressionadas (uso <a href="http://blog.bsoares.com.br/aspnet/operacoes-binarias">Bitwise</a>) como um teclado do Android.<br />
Por fim é só <strong>configurar o emulador</strong> para entender as teclas pressionadas como os comandos dentro do mesmo (pular, andar, girar, etc&#8230;)</p>
<p><strong>Desta forma o controle pode ser usado como o teclado do seu Android, e ainda ser configurado como o controle de outros emuladores.</strong></p>
<p><strong>Sobre o módulo bluetooth BlueSMiRF:</strong><br />
Depois de configurado ele será o seu &#8220;cabo USB virtual&#8221; pois da mesma forma que usamos o comando Serial.print(&#8220;&#8230;&#8221;) para enviar dados via porta serial, o mesmo dado será enviado via bluetooth.<br />
A App Amarino utiliza 57.600 de baudrate, e os módulos BlueSMiRF normalmente vem com 9.600.<br />
Para configurar o blueSMiRF utilizei alguns tutoriais:<br />
- <a href="http://todbot.com/blog/2006/02/23/howto-mac-os-x-bluetooth-serial-port/">http://todbot.com/blog/2006/02/23/howto-mac-os-x-bluetooth-serial-port/</a><br />
- <a href="http://www.sparkfun.com/tutorials/67">http://www.sparkfun.com/tutorials/67</a></p>
<p><strong>Sobre o Soft Keyboard (App para Android):</strong><br />
Modifiquei o <a href="http://developer.android.com/resources/samples/SoftKeyboard/index.html">exemplo de Keyboard App</a> disponível no <a href="http://developer.android.com/index.html"><strong>Android Developers</strong></a> para obter os dados via Amarino e agir como teclado. Me baseei <a href="https://github.com/sk3tch/android-arduino-nes-controller">neste projeto criado para NES</a>, porém criei outro código para a Arduino e alterei 95% do código para o Android.</p>
<p>O código fonte do projeto para Androi, Arduino e as versões das bibliotecas que foram utilizadas, podem ser baixadas do meu Github:<br />
<a href="https://github.com/BSoares/SNES-on-Android-with-original-controller">https://github.com/BSoares/SNES-on-Android-with-original-controller</a></p>

<div class="ngg-galleryoverview" id="ngg-gallery-7-620">


	
	<!-- Thumbnails -->
		
	<div id="ngg-image-37" class="ngg-gallery-thumbnail-box"  >
		<div class="ngg-gallery-thumbnail" >
			<a href="http://blog.bsoares.com.br/wp-content/gallery/snes-on-android-with-controller-original-via-amarino-and-bluesmirf/android-snes-controller-arduino-bluetooth-amarino-0.JPG" rel="shadowbox[post-620];player=img;" title=" "  >
								<img title="android-snes-controller-arduino-bluetooth-amarino-0" alt="android-snes-controller-arduino-bluetooth-amarino-0" src="http://blog.bsoares.com.br/wp-content/gallery/snes-on-android-with-controller-original-via-amarino-and-bluesmirf/thumbs/thumbs_android-snes-controller-arduino-bluetooth-amarino-0.JPG" width="100" height="75" />
							</a>
		</div>
	</div>
	
		
 		
	<div id="ngg-image-38" class="ngg-gallery-thumbnail-box"  >
		<div class="ngg-gallery-thumbnail" >
			<a href="http://blog.bsoares.com.br/wp-content/gallery/snes-on-android-with-controller-original-via-amarino-and-bluesmirf/android-snes-controller-arduino-bluetooth-amarino-1.JPG" rel="shadowbox[post-620];player=img;" title=" "  >
								<img title="android-snes-controller-arduino-bluetooth-amarino-1" alt="android-snes-controller-arduino-bluetooth-amarino-1" src="http://blog.bsoares.com.br/wp-content/gallery/snes-on-android-with-controller-original-via-amarino-and-bluesmirf/thumbs/thumbs_android-snes-controller-arduino-bluetooth-amarino-1.JPG" width="100" height="75" />
							</a>
		</div>
	</div>
	
		
 		
	<div id="ngg-image-39" class="ngg-gallery-thumbnail-box"  >
		<div class="ngg-gallery-thumbnail" >
			<a href="http://blog.bsoares.com.br/wp-content/gallery/snes-on-android-with-controller-original-via-amarino-and-bluesmirf/android-snes-controller-arduino-bluetooth-amarino-2.JPG" rel="shadowbox[post-620];player=img;" title=" "  >
								<img title="android-snes-controller-arduino-bluetooth-amarino-2" alt="android-snes-controller-arduino-bluetooth-amarino-2" src="http://blog.bsoares.com.br/wp-content/gallery/snes-on-android-with-controller-original-via-amarino-and-bluesmirf/thumbs/thumbs_android-snes-controller-arduino-bluetooth-amarino-2.JPG" width="100" height="75" />
							</a>
		</div>
	</div>
	
		
 		
	<div id="ngg-image-40" class="ngg-gallery-thumbnail-box"  >
		<div class="ngg-gallery-thumbnail" >
			<a href="http://blog.bsoares.com.br/wp-content/gallery/snes-on-android-with-controller-original-via-amarino-and-bluesmirf/android-snes-controller-arduino-bluetooth-amarino-3.JPG" rel="shadowbox[post-620];player=img;" title=" "  >
								<img title="android-snes-controller-arduino-bluetooth-amarino-3" alt="android-snes-controller-arduino-bluetooth-amarino-3" src="http://blog.bsoares.com.br/wp-content/gallery/snes-on-android-with-controller-original-via-amarino-and-bluesmirf/thumbs/thumbs_android-snes-controller-arduino-bluetooth-amarino-3.JPG" width="100" height="75" />
							</a>
		</div>
	</div>
	
		
 		
	<div id="ngg-image-41" class="ngg-gallery-thumbnail-box"  >
		<div class="ngg-gallery-thumbnail" >
			<a href="http://blog.bsoares.com.br/wp-content/gallery/snes-on-android-with-controller-original-via-amarino-and-bluesmirf/android-snes-controller-arduino-bluetooth-amarino-4.JPG" rel="shadowbox[post-620];player=img;" title=" "  >
								<img title="android-snes-controller-arduino-bluetooth-amarino-4" alt="android-snes-controller-arduino-bluetooth-amarino-4" src="http://blog.bsoares.com.br/wp-content/gallery/snes-on-android-with-controller-original-via-amarino-and-bluesmirf/thumbs/thumbs_android-snes-controller-arduino-bluetooth-amarino-4.JPG" width="100" height="75" />
							</a>
		</div>
	</div>
	
		
 		
	<div id="ngg-image-42" class="ngg-gallery-thumbnail-box"  >
		<div class="ngg-gallery-thumbnail" >
			<a href="http://blog.bsoares.com.br/wp-content/gallery/snes-on-android-with-controller-original-via-amarino-and-bluesmirf/android-snes-controller-arduino-bluetooth-amarino-5.JPG" rel="shadowbox[post-620];player=img;" title=" "  >
								<img title="android-snes-controller-arduino-bluetooth-amarino-5" alt="android-snes-controller-arduino-bluetooth-amarino-5" src="http://blog.bsoares.com.br/wp-content/gallery/snes-on-android-with-controller-original-via-amarino-and-bluesmirf/thumbs/thumbs_android-snes-controller-arduino-bluetooth-amarino-5.JPG" width="100" height="75" />
							</a>
		</div>
	</div>
	
		
 		
	<div id="ngg-image-43" class="ngg-gallery-thumbnail-box"  >
		<div class="ngg-gallery-thumbnail" >
			<a href="http://blog.bsoares.com.br/wp-content/gallery/snes-on-android-with-controller-original-via-amarino-and-bluesmirf/android-snes-controller-arduino-bluetooth-amarino-6.JPG" rel="shadowbox[post-620];player=img;" title=" "  >
								<img title="android-snes-controller-arduino-bluetooth-amarino-6" alt="android-snes-controller-arduino-bluetooth-amarino-6" src="http://blog.bsoares.com.br/wp-content/gallery/snes-on-android-with-controller-original-via-amarino-and-bluesmirf/thumbs/thumbs_android-snes-controller-arduino-bluetooth-amarino-6.JPG" width="100" height="75" />
							</a>
		</div>
	</div>
	
		
 		
	<div id="ngg-image-44" class="ngg-gallery-thumbnail-box"  >
		<div class="ngg-gallery-thumbnail" >
			<a href="http://blog.bsoares.com.br/wp-content/gallery/snes-on-android-with-controller-original-via-amarino-and-bluesmirf/android-snes-controller-arduino-bluetooth-amarino-7.JPG" rel="shadowbox[post-620];player=img;" title=" "  >
								<img title="android-snes-controller-arduino-bluetooth-amarino-7" alt="android-snes-controller-arduino-bluetooth-amarino-7" src="http://blog.bsoares.com.br/wp-content/gallery/snes-on-android-with-controller-original-via-amarino-and-bluesmirf/thumbs/thumbs_android-snes-controller-arduino-bluetooth-amarino-7.JPG" width="100" height="75" />
							</a>
		</div>
	</div>
	
		
 		
	<div id="ngg-image-45" class="ngg-gallery-thumbnail-box"  >
		<div class="ngg-gallery-thumbnail" >
			<a href="http://blog.bsoares.com.br/wp-content/gallery/snes-on-android-with-controller-original-via-amarino-and-bluesmirf/android-snes-controller-arduino-bluetooth-amarino-8.JPG" rel="shadowbox[post-620];player=img;" title=" "  >
								<img title="android-snes-controller-arduino-bluetooth-amarino-8" alt="android-snes-controller-arduino-bluetooth-amarino-8" src="http://blog.bsoares.com.br/wp-content/gallery/snes-on-android-with-controller-original-via-amarino-and-bluesmirf/thumbs/thumbs_android-snes-controller-arduino-bluetooth-amarino-8.JPG" width="100" height="75" />
							</a>
		</div>
	</div>
	
		
 		
	<div id="ngg-image-46" class="ngg-gallery-thumbnail-box"  >
		<div class="ngg-gallery-thumbnail" >
			<a href="http://blog.bsoares.com.br/wp-content/gallery/snes-on-android-with-controller-original-via-amarino-and-bluesmirf/android-snes-controller-arduino-bluetooth-amarino-9.JPG" rel="shadowbox[post-620];player=img;" title=" "  >
								<img title="android-snes-controller-arduino-bluetooth-amarino-9" alt="android-snes-controller-arduino-bluetooth-amarino-9" src="http://blog.bsoares.com.br/wp-content/gallery/snes-on-android-with-controller-original-via-amarino-and-bluesmirf/thumbs/thumbs_android-snes-controller-arduino-bluetooth-amarino-9.JPG" width="100" height="75" />
							</a>
		</div>
	</div>
	
		
 	 	
	<!-- Pagination -->
 	<div class='ngg-clear'></div>
 	
</div>


<p><strong>Conteúdo Relacionado:</strong><br />
<a href="https://github.com/BSoares/SNES-on-Android-with-original-controller">Código fonte</a><br />
<a href="http://arduino.cc/en/Main/ArduinoBoardUno">Arduino UNO</a><br />
<a href="http://www.sparkfun.com/products/10269">BlueSMiRF</a><br />
<a href="http://www.amarino-toolkit.net/">Amarino</a><br />
<a href="http://developer.android.com/resources/samples/SoftKeyboard/index.html">Android Sample Soft Keyboard</a><br />
<a href="http://code.google.com/p/nespad/">NESpad/SNESpad</a><br />
<a href="http://www.youtube.com/watch?v=jPJUF8yPoFc">Vídeo no Youtube</a></p>
<p>Enjoy :-)<br />
<!--XV6FK3CX2M3E--></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.bsoares.com.br/arduino/snes-android-amarino-original-controller-bluesmirf/feed</wfw:commentRss>
		<slash:comments>46</slash:comments>
		</item>
		<item>
		<title>Ping Pong com Matriz de Leds 8&#215;8</title>
		<link>http://blog.bsoares.com.br/arduino/ping-pong-with-8x8-led-matrix-on-arduino</link>
		<comments>http://blog.bsoares.com.br/arduino/ping-pong-with-8x8-led-matrix-on-arduino#comments</comments>
		<pubDate>Mon, 06 Jul 2009 22:41:57 +0000</pubDate>
		<dc:creator>Bruno Soares</dc:creator>
				<category><![CDATA[Arduino]]></category>
		<category><![CDATA[Electronics]]></category>
		<category><![CDATA[Game]]></category>
		<category><![CDATA[8x8 Led Matrix]]></category>
		<category><![CDATA[Led]]></category>
		<category><![CDATA[Open Hardware]]></category>
		<category><![CDATA[Techology]]></category>

		<guid isPermaLink="false">http://blog.bsoares.com.br/?p=532</guid>
		<description><![CDATA[Há alguns dias consegui duas matrizes de leds 8&#215;8 azuis e resolvi brincar com elas :) O resultado foi um jogo de Ping Pong, sim O primeiro videogame lucrativo da história. É de fato um joguinho bem interessante e facíl para quem pratica eletrônica digital por hobby. YouTube Em primeiro lugar achei melhor criar um [...]]]></description>
			<content:encoded><![CDATA[<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fblog.bsoares.com.br%2Farduino%2Fping-pong-with-8x8-led-matrix-on-arduino&amp;layout=standard&amp;show_faces=true&amp;width=450&amp;action=like&amp;colorscheme=light&amp;height=80" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:450px; height:80px;" allowTransparency="true"></iframe><p>Há alguns dias consegui duas matrizes de leds 8&#215;8 azuis e resolvi brincar com elas :)<br />
O resultado foi um jogo de Ping Pong, sim <a href="http://pt.wikipedia.org/wiki/Pong" target="_blank">O primeiro videogame lucrativo da história</a>. É de fato um joguinho bem interessante e facíl para quem pratica <a href="http://pt.wikipedia.org/wiki/Circuito_digital" target="_blank">eletrônica digital</a> por hobby.</p>
<div style="text-align: center;"><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="470" height="360" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://vimeo.com/moogaloop.swf?clip_id=5469191&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=00adef&amp;fullscreen=1" /><embed type="application/x-shockwave-flash" width="470" height="360" src="http://vimeo.com/moogaloop.swf?clip_id=5469191&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=00adef&amp;fullscreen=1" allowscriptaccess="always" allowfullscreen="true"></embed></object><br />
<a href="http://www.youtube.com/watch?v=lvAlKH5SzYk" target="_blank">YouTube</a></div>
<p>Em primeiro lugar achei melhor criar um protótipo do game em Flash (<a href="http://pt.wikipedia.org/wiki/ActionScript" target="_blank">ActionScript</a> 3.0) para não ficar &#8220;queimando os miolos&#8221; direto no C++. Pra quem quiser anexo o código fonte do game final e protótipo aqui.</p>
<div style="text-align: center;">
<object width="161" height="161">
<param name="movie" value="http://blog.bsoares.com.br/wp-content/uploads/2009/07/PongMatrix.swf"></param>
<param name="quality" value="high"></param>
<param name="wmode" value="window"></param>
<param name="menu" value="false"></param>
<param name="bgcolor" value="#FFFFFF"></param>
<embed type="application/x-shockwave-flash" width="161" height="161" src="http://blog.bsoares.com.br/wp-content/uploads/2009/07/PongMatrix.swf" quality="high" bgcolor="#FFFFFF" wmode="window" menu="false" ></embed>
</object>
</div>
<p>Espaço para iniciar.<br />
Seta para cima e para baixo para mover as astes.</p>
<p>Para ligar e desligar cada led da matriz utilizei como referência o código encontrado no <a href="http://www.arduino.cc/playground/" target="_blank">Arduino Playground</a> (<a href="http://www.arduino.cc/playground/Main/DirectDriveLEDMatrix" target="_blank">http://www.arduino.cc/playground/Main/DirectDriveLEDMatrix</a>), só que minha matriz é diferente do utilizado no exemplo, então fiz algumas pequenas alterações no método doubleBuffer. Resumindo, no exemplo encontrado no Playground a matriz utilizada tem a linha como cátodo já minha matriz tem a coluna como cátodo.<br />
Abaixo a especificação da matriz utilizada:</p>
<div style="text-align: center;"><img title="8x8-led-matriz-especification" src="http://blog.bsoares.com.br/wp-content/uploads/2009/07/8x8-led-matriz-especification.png" alt="8x8-led-matriz-especification" /></div>
<p><strong>Código-fonte:</strong></p>
<div class="codecolorer-container cpp mac-classic" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;height:500px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br />26<br />27<br />28<br />29<br />30<br />31<br />32<br />33<br />34<br />35<br />36<br />37<br />38<br />39<br />40<br />41<br />42<br />43<br />44<br />45<br />46<br />47<br />48<br />49<br />50<br />51<br />52<br />53<br />54<br />55<br />56<br />57<br />58<br />59<br />60<br />61<br />62<br />63<br />64<br />65<br />66<br />67<br />68<br />69<br />70<br />71<br />72<br />73<br />74<br />75<br />76<br />77<br />78<br />79<br />80<br />81<br />82<br />83<br />84<br />85<br />86<br />87<br />88<br />89<br />90<br />91<br />92<br />93<br />94<br />95<br />96<br />97<br />98<br />99<br />100<br />101<br />102<br />103<br />104<br />105<br />106<br />107<br />108<br />109<br />110<br />111<br />112<br />113<br />114<br />115<br />116<br />117<br />118<br />119<br />120<br />121<br />122<br />123<br />124<br />125<br />126<br />127<br />128<br />129<br />130<br />131<br />132<br />133<br />134<br />135<br />136<br />137<br />138<br />139<br />140<br />141<br />142<br />143<br />144<br />145<br />146<br />147<br />148<br />149<br />150<br />151<br />152<br />153<br />154<br />155<br />156<br />157<br />158<br />159<br />160<br />161<br />162<br />163<br />164<br />165<br />166<br />167<br />168<br />169<br />170<br />171<br />172<br />173<br />174<br />175<br />176<br />177<br />178<br />179<br />180<br />181<br />182<br />183<br />184<br />185<br />186<br />187<br />188<br />189<br />190<br />191<br />192<br />193<br />194<br />195<br />196<br />197<br />198<br />199<br />200<br />201<br />202<br />203<br />204<br />205<br />206<br />207<br />208<br />209<br />210<br />211<br />212<br />213<br />214<br />215<br />216<br />217<br />218<br />219<br />220<br />221<br />222<br />223<br />224<br />225<br />226<br />227<br />228<br />229<br />230<br />231<br />232<br />233<br />234<br />235<br />236<br />237<br />238<br />239<br />240<br />241<br />242<br />243<br />244<br />245<br />246<br />247<br />248<br />249<br />250<br />251<br />252<br />253<br />254<br />255<br />256<br />257<br />258<br />259<br />260<br />261<br />262<br />263<br />264<br />265<br />266<br />267<br />268<br />269<br />270<br />271<br />272<br />273<br />274<br />275<br />276<br />277<br />278<br />279<br />280<br />281<br />282<br />283<br />284<br />285<br />286<br />287<br />288<br />289<br />290<br />291<br />292<br />293<br />294<br />295<br />296<br />297<br />298<br />299<br />300<br />301<br />302<br /></div></td><td><div class="cpp codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #ff0000; font-style: italic;">/**<br />
&nbsp;* Ping Pong with 8x8 Led Dot Matrix on Arduino<br />
&nbsp;*<br />
&nbsp;* @author &nbsp;Bruno Soares<br />
&nbsp;* @website www.bsoares.com.br<br />
&nbsp;*/</span><br />
<br />
<span style="color: #339900;">#include &quot;TimerOne.h&quot;</span><br />
<br />
<span style="color: #339900;">#define PIN_LEFT 4</span><br />
<span style="color: #339900;">#define PIN_RIGHT 5</span><br />
<br />
<span style="color: #0000ff;">unsigned</span> <span style="color: #0000ff;">int</span> left <span style="color: #000080;">=</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span><br />
<span style="color: #0000ff;">unsigned</span> <span style="color: #0000ff;">int</span> right <span style="color: #000080;">=</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span><br />
<span style="color: #0000ff;">int</span> angle <span style="color: #000080;">=</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span><br />
<span style="color: #0000ff;">int</span> radians<span style="color: #008080;">;</span><br />
<br />
byte rows<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">8</span><span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> <span style="color: #008000;">&#123;</span><span style="color: #0000dd;">9</span>, <span style="color: #0000dd;">14</span>, <span style="color: #0000dd;">8</span>, <span style="color: #0000dd;">12</span>, <span style="color: #0000dd;">1</span>, <span style="color: #0000dd;">7</span>, <span style="color: #0000dd;">2</span>, <span style="color: #0000dd;">5</span><span style="color: #008000;">&#125;</span><span style="color: #008080;">;</span><br />
byte cols<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">8</span><span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> <span style="color: #008000;">&#123;</span><span style="color: #0000dd;">13</span>, <span style="color: #0000dd;">3</span>, <span style="color: #0000dd;">4</span>, <span style="color: #0000dd;">10</span>, <span style="color: #0000dd;">6</span>, <span style="color: #0000dd;">11</span>, <span style="color: #0000dd;">15</span>, <span style="color: #0000dd;">16</span><span style="color: #008000;">&#125;</span><span style="color: #008080;">;</span><br />
byte pins<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">16</span><span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> <span style="color: #008000;">&#123;</span><span style="color: #0000dd;">5</span>, <span style="color: #0000dd;">4</span>, <span style="color: #0000dd;">3</span>, <span style="color: #0000dd;">2</span>, <span style="color: #0000dd;">14</span>, <span style="color: #0000dd;">15</span>, <span style="color: #0000dd;">16</span>, <span style="color: #0000dd;">17</span>, <span style="color: #0000dd;">13</span>, <span style="color: #0000dd;">12</span>, <span style="color: #0000dd;">11</span>, <span style="color: #0000dd;">10</span>, <span style="color: #0000dd;">9</span>, <span style="color: #0000dd;">8</span>, <span style="color: #0000dd;">7</span>, <span style="color: #0000dd;">6</span><span style="color: #008000;">&#125;</span><span style="color: #008080;">;</span><br />
byte screen<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">8</span><span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> <span style="color: #008000;">&#123;</span><span style="color: #0000dd;">0</span>, <span style="color: #0000dd;">0</span>, <span style="color: #0000dd;">0</span>, <span style="color: #0000dd;">0</span>, <span style="color: #0000dd;">0</span>, <span style="color: #0000dd;">0</span>, <span style="color: #0000dd;">0</span>, <span style="color: #0000dd;">0</span><span style="color: #008000;">&#125;</span><span style="color: #008080;">;</span><br />
<span style="color: #0000ff;">volatile</span> byte screenRow <span style="color: #000080;">=</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span><br />
<span style="color: #0000ff;">volatile</span> byte screenCol <span style="color: #000080;">=</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span><br />
<br />
<span style="color: #0000ff;">int</span> _angle<span style="color: #008080;">;</span><br />
<span style="color: #0000ff;">int</span> _px<span style="color: #008080;">;</span><br />
<span style="color: #0000ff;">int</span> _py<span style="color: #008080;">;</span><br />
<span style="color: #0000ff;">int</span> _w <span style="color: #000080;">=</span> <span style="color: #0000dd;">7</span><span style="color: #008080;">;</span><br />
<span style="color: #0000ff;">int</span> _h <span style="color: #000080;">=</span> <span style="color: #0000dd;">7</span><span style="color: #008080;">;</span><br />
<span style="color: #0000ff;">int</span> _wall<span style="color: #008000;">&#91;</span><span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> <span style="color: #008000;">&#123;</span><span style="color: #0000dd;">3</span>, <span style="color: #0000dd;">3</span><span style="color: #008000;">&#125;</span><span style="color: #008080;">;</span><br />
<span style="color: #0000ff;">int</span> _count <span style="color: #000080;">=</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span><br />
<span style="color: #0000ff;">int</span> _speed <span style="color: #000080;">=</span> <span style="color: #0000dd;">3</span><span style="color: #008080;">;</span><br />
<span style="color: #0000ff;">int</span> _countPoints <span style="color: #000080;">=</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span><br />
<br />
<br />
<span style="color: #0000ff;">void</span> setup<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span><br />
&nbsp; Timer1.<span style="color: #007788;">initialize</span><span style="color: #008000;">&#40;</span><span style="color: #0000dd;">100</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span><br />
&nbsp; <span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> i <span style="color: #000080;">=</span> <span style="color: #0000dd;">2</span><span style="color: #008080;">;</span> i <span style="color: #000080;">&lt;=</span> <span style="color: #0000dd;">17</span><span style="color: #008080;">;</span> i<span style="color: #000040;">++</span><span style="color: #008000;">&#41;</span><br />
&nbsp; &nbsp; pinMode<span style="color: #008000;">&#40;</span>i, OUTPUT<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span><br />
&nbsp; Timer1.<span style="color: #007788;">attachInterrupt</span><span style="color: #008000;">&#40;</span>doubleBuffer<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span><br />
&nbsp; <br />
&nbsp; Serial.<span style="color: #007788;">begin</span><span style="color: #008000;">&#40;</span><span style="color: #0000dd;">9600</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span><br />
&nbsp; <br />
&nbsp; face<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span><br />
&nbsp; reset<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span><br />
<span style="color: #008000;">&#125;</span><br />
<br />
<span style="color: #0000ff;">void</span> doubleBuffer<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span><br />
&nbsp; digitalWrite<span style="color: #008000;">&#40;</span>translatePin<span style="color: #008000;">&#40;</span>rows<span style="color: #008000;">&#91;</span>screenRow<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span>, LOW<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span><br />
&nbsp; digitalWrite<span style="color: #008000;">&#40;</span>translatePin<span style="color: #008000;">&#40;</span>cols<span style="color: #008000;">&#91;</span>screenCol<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span>, HIGH<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span><br />
&nbsp; <br />
&nbsp; screenCol<span style="color: #000040;">++</span><span style="color: #008080;">;</span><br />
&nbsp; <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>screenCol <span style="color: #000080;">&gt;=</span> <span style="color: #0000dd;">8</span><span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span><br />
&nbsp; &nbsp; screenCol <span style="color: #000080;">=</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span><br />
&nbsp; &nbsp; screenRow<span style="color: #000040;">++</span><span style="color: #008080;">;</span><br />
&nbsp; &nbsp; <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>screenRow <span style="color: #000080;">&gt;=</span> <span style="color: #0000dd;">8</span><span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; screenRow <span style="color: #000080;">=</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span><br />
&nbsp; &nbsp; <span style="color: #008000;">&#125;</span><br />
&nbsp; <span style="color: #008000;">&#125;</span><br />
&nbsp; <br />
&nbsp; <span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#40;</span>screen<span style="color: #008000;">&#91;</span>screenRow<span style="color: #008000;">&#93;</span> <span style="color: #000080;">&gt;&gt;</span> screenCol<span style="color: #008000;">&#41;</span> <span style="color: #000040;">&amp;</span> B1 <span style="color: #000080;">==</span> B1<span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span><br />
&nbsp; &nbsp; digitalWrite<span style="color: #008000;">&#40;</span>translatePin<span style="color: #008000;">&#40;</span>rows<span style="color: #008000;">&#91;</span>screenRow<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span>, HIGH<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span><br />
&nbsp; &nbsp; digitalWrite<span style="color: #008000;">&#40;</span>translatePin<span style="color: #008000;">&#40;</span>cols<span style="color: #008000;">&#91;</span>screenCol<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span>, LOW<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span><br />
&nbsp; <span style="color: #008000;">&#125;</span> <span style="color: #0000ff;">else</span> <span style="color: #008000;">&#123;</span><br />
&nbsp; &nbsp; digitalWrite<span style="color: #008000;">&#40;</span>translatePin<span style="color: #008000;">&#40;</span>rows<span style="color: #008000;">&#91;</span>screenRow<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span>, LOW<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span><br />
&nbsp; &nbsp; digitalWrite<span style="color: #008000;">&#40;</span>translatePin<span style="color: #008000;">&#40;</span>cols<span style="color: #008000;">&#91;</span>screenCol<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span>, HIGH<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span><br />
&nbsp; <span style="color: #008000;">&#125;</span><br />
<span style="color: #008000;">&#125;</span><br />
<br />
byte translatePin<span style="color: #008000;">&#40;</span>byte original<span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span><br />
&nbsp; <span style="color: #0000ff;">return</span> pins<span style="color: #008000;">&#91;</span>original <span style="color: #000040;">-</span> <span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span><br />
<span style="color: #008000;">&#125;</span><br />
<br />
<span style="color: #0000ff;">void</span> allOFF<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span><br />
&nbsp; <span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> i <span style="color: #000080;">=</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span> i <span style="color: #000080;">&lt;</span> <span style="color: #0000dd;">8</span><span style="color: #008080;">;</span> i<span style="color: #000040;">++</span><span style="color: #008000;">&#41;</span><br />
&nbsp; &nbsp; screen<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span><br />
<span style="color: #008000;">&#125;</span><br />
<br />
<span style="color: #0000ff;">void</span> on<span style="color: #008000;">&#40;</span>byte row, byte column<span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span><br />
&nbsp; &nbsp; screen<span style="color: #008000;">&#91;</span>column<span style="color: #000040;">-</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span> <span style="color: #000040;">|</span><span style="color: #000080;">=</span> <span style="color: #008000;">&#40;</span>B1 <span style="color: #000080;">&lt;&lt;</span> <span style="color: #008000;">&#40;</span>row <span style="color: #000040;">-</span> <span style="color: #0000dd;">1</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span><br />
<span style="color: #008000;">&#125;</span><br />
<br />
<span style="color: #0000ff;">void</span> off<span style="color: #008000;">&#40;</span>byte row, byte column<span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span><br />
&nbsp; &nbsp; screen<span style="color: #008000;">&#91;</span>column<span style="color: #000040;">-</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span> <span style="color: #000040;">&amp;</span><span style="color: #000080;">=</span> ~<span style="color: #008000;">&#40;</span>B1 <span style="color: #000080;">&lt;&lt;</span> <span style="color: #008000;">&#40;</span>row <span style="color: #000040;">-</span> <span style="color: #0000dd;">1</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span><br />
<span style="color: #008000;">&#125;</span><br />
<br />
<span style="color: #0000ff;">void</span> calcWall<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><br />
<span style="color: #008000;">&#123;</span><br />
&nbsp; left <span style="color: #000080;">=</span> analogRead<span style="color: #008000;">&#40;</span>PIN_LEFT<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span><br />
&nbsp; right <span style="color: #000080;">=</span> analogRead<span style="color: #008000;">&#40;</span>PIN_RIGHT<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span><br />
&nbsp; left <span style="color: #000080;">=</span> constrain<span style="color: #008000;">&#40;</span>map<span style="color: #008000;">&#40;</span>left, <span style="color: #0000dd;">223</span>, <span style="color: #0000dd;">800</span>, <span style="color: #0000dd;">0</span>, <span style="color: #0000dd;">6</span><span style="color: #008000;">&#41;</span>, <span style="color: #0000dd;">0</span>, <span style="color: #0000dd;">6</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span><br />
&nbsp; right <span style="color: #000080;">=</span> constrain<span style="color: #008000;">&#40;</span>map<span style="color: #008000;">&#40;</span>right, <span style="color: #0000dd;">223</span>, <span style="color: #0000dd;">800</span>, <span style="color: #0000dd;">6</span>, <span style="color: #0000dd;">0</span><span style="color: #008000;">&#41;</span>, <span style="color: #0000dd;">0</span>, <span style="color: #0000dd;">6</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span><br />
&nbsp; <br />
&nbsp; clearWall<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span><br />
&nbsp; <br />
&nbsp; on<span style="color: #008000;">&#40;</span><span style="color: #0000dd;">1</span>, left <span style="color: #000040;">+</span> <span style="color: #0000dd;">1</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span><br />
&nbsp; on<span style="color: #008000;">&#40;</span><span style="color: #0000dd;">1</span>, left <span style="color: #000040;">+</span> <span style="color: #0000dd;">2</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span><br />
&nbsp; on<span style="color: #008000;">&#40;</span><span style="color: #0000dd;">8</span>, right <span style="color: #000040;">+</span> <span style="color: #0000dd;">1</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span><br />
&nbsp; on<span style="color: #008000;">&#40;</span><span style="color: #0000dd;">8</span>, right <span style="color: #000040;">+</span> <span style="color: #0000dd;">2</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span><br />
&nbsp; <br />
&nbsp; _wall<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> left<span style="color: #008080;">;</span><br />
&nbsp; _wall<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> right<span style="color: #008080;">;</span><br />
&nbsp; show<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span><br />
<span style="color: #008000;">&#125;</span><br />
<br />
<span style="color: #0000ff;">void</span> clearWall<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><br />
<span style="color: #008000;">&#123;</span><br />
&nbsp; <span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> i <span style="color: #000080;">=</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span> i <span style="color: #000080;">&lt;</span> <span style="color: #0000dd;">8</span><span style="color: #008080;">;</span> i<span style="color: #000040;">++</span><span style="color: #008000;">&#41;</span><br />
&nbsp; &nbsp; screen<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span> <span style="color: #000040;">&amp;</span><span style="color: #000080;">=</span> B01111110<span style="color: #008080;">;</span><br />
<span style="color: #008000;">&#125;</span><br />
<br />
<span style="color: #0000ff;">void</span> clearGame<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><br />
<span style="color: #008000;">&#123;</span><br />
&nbsp; <span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> i <span style="color: #000080;">=</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span> i <span style="color: #000080;">&lt;</span> <span style="color: #0000dd;">8</span><span style="color: #008080;">;</span> i<span style="color: #000040;">++</span><span style="color: #008000;">&#41;</span><br />
&nbsp; &nbsp; screen<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span> <span style="color: #000040;">&amp;</span><span style="color: #000080;">=</span> B10000001<span style="color: #008080;">;</span><br />
<span style="color: #008000;">&#125;</span><br />
<br />
<span style="color: #0000ff;">void</span> loop<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span><br />
&nbsp; calcWall<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span><br />
&nbsp; enterFrameHandler<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span><br />
&nbsp; delay<span style="color: #008000;">&#40;</span><span style="color: #0000dd;">50</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span><br />
<span style="color: #008000;">&#125;</span><br />
<br />
<span style="color: #0000ff;">void</span> enterFrameHandler<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><br />
<span style="color: #008000;">&#123;</span><br />
&nbsp; <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>_count<span style="color: #000040;">++</span> <span style="color: #000080;">&lt;</span> _speed<span style="color: #008000;">&#41;</span><br />
&nbsp; &nbsp; <span style="color: #0000ff;">return</span><span style="color: #008080;">;</span><br />
&nbsp; <br />
&nbsp; _count <span style="color: #000080;">=</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span><br />
&nbsp; checkCollision<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span><br />
&nbsp; calcAngleIncrement<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span><br />
&nbsp; show<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span><br />
<span style="color: #008000;">&#125;</span><br />
<br />
<span style="color: #0000ff;">void</span> retorted<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> angle<span style="color: #008000;">&#41;</span><br />
<span style="color: #008000;">&#123;</span><br />
&nbsp; Serial.<span style="color: #007788;">println</span><span style="color: #008000;">&#40;</span>angle<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span><br />
&nbsp; _angle <span style="color: #000080;">=</span> angle<span style="color: #008080;">;</span><br />
&nbsp; <br />
&nbsp; <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span><span style="color: #000040;">++</span>_countPoints <span style="color: #000040;">%</span> <span style="color: #0000dd;">5</span> <span style="color: #000080;">==</span> <span style="color: #0000dd;">0</span> <span style="color: #000040;">&amp;&amp;</span> _speed <span style="color: #000080;">&gt;</span> <span style="color: #0000dd;">1</span><span style="color: #008000;">&#41;</span><br />
&nbsp; &nbsp; _speed<span style="color: #000040;">--</span><span style="color: #008080;">;</span><br />
<span style="color: #008000;">&#125;</span><br />
<br />
<span style="color: #0000ff;">void</span> resetAnim<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><br />
<span style="color: #008000;">&#123;</span><br />
&nbsp; <span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> i <span style="color: #000080;">=</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span> i <span style="color: #000080;">&lt;</span> <span style="color: #0000dd;">8</span><span style="color: #008080;">;</span> i<span style="color: #000040;">++</span><span style="color: #008000;">&#41;</span><br />
&nbsp; <span style="color: #008000;">&#123;</span><br />
&nbsp; &nbsp; screen<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> B11111111<span style="color: #008080;">;</span><br />
&nbsp; &nbsp; delay<span style="color: #008000;">&#40;</span><span style="color: #0000dd;">25</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span><br />
&nbsp; <span style="color: #008000;">&#125;</span><br />
&nbsp; <span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> i <span style="color: #000080;">=</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span> i <span style="color: #000080;">&lt;</span> <span style="color: #0000dd;">8</span><span style="color: #008080;">;</span> i<span style="color: #000040;">++</span><span style="color: #008000;">&#41;</span><br />
&nbsp; <span style="color: #008000;">&#123;</span><br />
&nbsp; &nbsp; screen<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> B00000000<span style="color: #008080;">;</span><br />
&nbsp; &nbsp; delay<span style="color: #008000;">&#40;</span><span style="color: #0000dd;">25</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span><br />
&nbsp; <span style="color: #008000;">&#125;</span><br />
<span style="color: #008000;">&#125;</span><br />
<br />
<span style="color: #0000ff;">void</span> face<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><br />
<span style="color: #008000;">&#123;</span><br />
&nbsp; on<span style="color: #008000;">&#40;</span><span style="color: #0000dd;">1</span>, <span style="color: #0000dd;">1</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span><br />
&nbsp; on<span style="color: #008000;">&#40;</span><span style="color: #0000dd;">1</span>, <span style="color: #0000dd;">2</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span><br />
&nbsp; on<span style="color: #008000;">&#40;</span><span style="color: #0000dd;">2</span>, <span style="color: #0000dd;">1</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span><br />
&nbsp; on<span style="color: #008000;">&#40;</span><span style="color: #0000dd;">2</span>, <span style="color: #0000dd;">2</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span><br />
&nbsp; on<span style="color: #008000;">&#40;</span><span style="color: #0000dd;">7</span>, <span style="color: #0000dd;">1</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span><br />
&nbsp; on<span style="color: #008000;">&#40;</span><span style="color: #0000dd;">7</span>, <span style="color: #0000dd;">2</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span><br />
&nbsp; on<span style="color: #008000;">&#40;</span><span style="color: #0000dd;">8</span>, <span style="color: #0000dd;">1</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span><br />
&nbsp; on<span style="color: #008000;">&#40;</span><span style="color: #0000dd;">8</span>, <span style="color: #0000dd;">2</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span><br />
&nbsp; on<span style="color: #008000;">&#40;</span><span style="color: #0000dd;">1</span>, <span style="color: #0000dd;">1</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span><br />
&nbsp; on<span style="color: #008000;">&#40;</span><span style="color: #0000dd;">1</span>, <span style="color: #0000dd;">2</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span><br />
&nbsp; on<span style="color: #008000;">&#40;</span><span style="color: #0000dd;">4</span>, <span style="color: #0000dd;">4</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span><br />
&nbsp; on<span style="color: #008000;">&#40;</span><span style="color: #0000dd;">4</span>, <span style="color: #0000dd;">5</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span><br />
&nbsp; on<span style="color: #008000;">&#40;</span><span style="color: #0000dd;">5</span>, <span style="color: #0000dd;">4</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span><br />
&nbsp; on<span style="color: #008000;">&#40;</span><span style="color: #0000dd;">5</span>, <span style="color: #0000dd;">5</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span><br />
&nbsp; on<span style="color: #008000;">&#40;</span><span style="color: #0000dd;">2</span>, <span style="color: #0000dd;">7</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span><br />
&nbsp; on<span style="color: #008000;">&#40;</span><span style="color: #0000dd;">7</span>, <span style="color: #0000dd;">7</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span><br />
&nbsp; on<span style="color: #008000;">&#40;</span><span style="color: #0000dd;">3</span>, <span style="color: #0000dd;">8</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span><br />
&nbsp; on<span style="color: #008000;">&#40;</span><span style="color: #0000dd;">4</span>, <span style="color: #0000dd;">8</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span><br />
&nbsp; on<span style="color: #008000;">&#40;</span><span style="color: #0000dd;">5</span>, <span style="color: #0000dd;">8</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span><br />
&nbsp; on<span style="color: #008000;">&#40;</span><span style="color: #0000dd;">6</span>, <span style="color: #0000dd;">8</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span><br />
&nbsp; delay<span style="color: #008000;">&#40;</span><span style="color: #0000dd;">5000</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span><br />
<span style="color: #008000;">&#125;</span><br />
<br />
<span style="color: #0000ff;">void</span> reset<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><br />
<span style="color: #008000;">&#123;</span><br />
&nbsp; resetAnim<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span><br />
&nbsp; <br />
&nbsp; _px <span style="color: #000080;">=</span> random<span style="color: #008000;">&#40;</span><span style="color: #0000dd;">3</span>, <span style="color: #0000dd;">5</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span><br />
&nbsp; _py <span style="color: #000080;">=</span> random<span style="color: #008000;">&#40;</span><span style="color: #0000dd;">3</span>, <span style="color: #0000dd;">5</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span><br />
&nbsp; _angle <span style="color: #000080;">=</span> random<span style="color: #008000;">&#40;</span><span style="color: #0000dd;">0</span>, <span style="color: #0000dd;">2</span><span style="color: #008000;">&#41;</span> <span style="color: #000080;">==</span> <span style="color: #0000dd;">0</span> <span style="color: #008080;">?</span> <span style="color: #0000dd;">0</span> <span style="color: #008080;">:</span> <span style="color: #0000dd;">180</span><span style="color: #008080;">;</span><br />
&nbsp; _speed <span style="color: #000080;">=</span> <span style="color: #0000dd;">5</span><span style="color: #008080;">;</span><br />
&nbsp; _countPoints <span style="color: #000080;">=</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span><br />
&nbsp; <br />
&nbsp; show<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span><br />
&nbsp; delay<span style="color: #008000;">&#40;</span><span style="color: #0000dd;">500</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span><br />
<span style="color: #008000;">&#125;</span><br />
<br />
<span style="color: #0000ff;">void</span> show<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><br />
<span style="color: #008000;">&#123;</span><br />
&nbsp; clearGame<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span><br />
&nbsp; on<span style="color: #008000;">&#40;</span>_px <span style="color: #000040;">+</span> <span style="color: #0000dd;">1</span>, _py <span style="color: #000040;">+</span> <span style="color: #0000dd;">1</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span><br />
<span style="color: #008000;">&#125;</span><br />
<br />
<span style="color: #0000ff;">void</span> checkCollision<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><br />
<span style="color: #008000;">&#123;</span><br />
&nbsp; <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>_px <span style="color: #000080;">==</span> _w <span style="color: #000040;">-</span> <span style="color: #0000dd;">1</span><span style="color: #008000;">&#41;</span><br />
&nbsp; <span style="color: #008000;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>_angle <span style="color: #000080;">==</span> <span style="color: #0000dd;">315</span> <span style="color: #000040;">||</span> _angle <span style="color: #000080;">==</span> <span style="color: #0000dd;">0</span> <span style="color: #000040;">||</span> _angle <span style="color: #000080;">==</span> <span style="color: #0000dd;">45</span><span style="color: #008000;">&#41;</span><br />
&nbsp; &nbsp; <span style="color: #008000;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>_py <span style="color: #000080;">==</span> _wall<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span> <span style="color: #000040;">||</span> _py <span style="color: #000080;">==</span> _wall<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span> <span style="color: #000040;">+</span> <span style="color: #0000dd;">1</span><span style="color: #008000;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; <span style="color: #008000;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>_angle <span style="color: #000080;">==</span> <span style="color: #0000dd;">0</span> <span style="color: #000040;">&amp;&amp;</span> _py <span style="color: #000080;">==</span> _wall<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; retorted<span style="color: #008000;">&#40;</span><span style="color: #0000dd;">225</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0000ff;">else</span> <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>_angle <span style="color: #000080;">==</span> <span style="color: #0000dd;">0</span> <span style="color: #000040;">&amp;&amp;</span> _py <span style="color: #000080;">==</span> _wall<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span> <span style="color: #000040;">+</span> <span style="color: #0000dd;">1</span><span style="color: #008000;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; retorted<span style="color: #008000;">&#40;</span><span style="color: #0000dd;">135</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0000ff;">else</span> <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>_angle <span style="color: #000080;">==</span> <span style="color: #0000dd;">45</span> <span style="color: #000040;">&amp;&amp;</span> _py <span style="color: #000080;">==</span> _wall<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; retorted<span style="color: #008000;">&#40;</span><span style="color: #0000dd;">135</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0000ff;">else</span> <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>_angle <span style="color: #000080;">==</span> <span style="color: #0000dd;">45</span> <span style="color: #000040;">&amp;&amp;</span> _py <span style="color: #000080;">==</span> _wall<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span> <span style="color: #000040;">+</span> <span style="color: #0000dd;">1</span><span style="color: #008000;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; retorted<span style="color: #008000;">&#40;</span><span style="color: #0000dd;">180</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0000ff;">else</span> <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>_angle <span style="color: #000080;">==</span> <span style="color: #0000dd;">315</span> <span style="color: #000040;">&amp;&amp;</span> _py <span style="color: #000080;">==</span> _wall<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; retorted<span style="color: #008000;">&#40;</span><span style="color: #0000dd;">180</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0000ff;">else</span> <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>_angle <span style="color: #000080;">==</span> <span style="color: #0000dd;">315</span> <span style="color: #000040;">&amp;&amp;</span> _py <span style="color: #000080;">==</span> _wall<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span> <span style="color: #000040;">+</span> <span style="color: #0000dd;">1</span><span style="color: #008000;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; retorted<span style="color: #008000;">&#40;</span><span style="color: #0000dd;">225</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span><br />
&nbsp; &nbsp; &nbsp; <span style="color: #008000;">&#125;</span><br />
&nbsp; &nbsp; <span style="color: #008000;">&#125;</span><br />
&nbsp; <span style="color: #008000;">&#125;</span><br />
&nbsp; <span style="color: #0000ff;">else</span> <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>_px <span style="color: #000080;">==</span> <span style="color: #0000dd;">1</span><span style="color: #008000;">&#41;</span><br />
&nbsp; <span style="color: #008000;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>_angle <span style="color: #000080;">==</span> <span style="color: #0000dd;">225</span> <span style="color: #000040;">||</span> _angle <span style="color: #000080;">==</span> <span style="color: #0000dd;">180</span> <span style="color: #000040;">||</span> _angle <span style="color: #000080;">==</span> <span style="color: #0000dd;">135</span><span style="color: #008000;">&#41;</span><br />
&nbsp; &nbsp; <span style="color: #008000;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>_py <span style="color: #000080;">==</span> _wall<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#93;</span> <span style="color: #000040;">||</span> _py <span style="color: #000080;">==</span> _wall<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#93;</span> <span style="color: #000040;">+</span> <span style="color: #0000dd;">1</span><span style="color: #008000;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; <span style="color: #008000;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>_angle <span style="color: #000080;">==</span> <span style="color: #0000dd;">180</span> <span style="color: #000040;">&amp;&amp;</span> _py <span style="color: #000080;">==</span> _wall<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; retorted<span style="color: #008000;">&#40;</span><span style="color: #0000dd;">315</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0000ff;">else</span> <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>_angle <span style="color: #000080;">==</span> <span style="color: #0000dd;">180</span> <span style="color: #000040;">&amp;&amp;</span> _py <span style="color: #000080;">==</span> _wall<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#93;</span> <span style="color: #000040;">+</span> <span style="color: #0000dd;">1</span><span style="color: #008000;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; retorted<span style="color: #008000;">&#40;</span><span style="color: #0000dd;">45</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0000ff;">else</span> <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>_angle <span style="color: #000080;">==</span> <span style="color: #0000dd;">135</span> <span style="color: #000040;">&amp;&amp;</span> _py <span style="color: #000080;">==</span> _wall<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; retorted<span style="color: #008000;">&#40;</span><span style="color: #0000dd;">45</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0000ff;">else</span> <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>_angle <span style="color: #000080;">==</span> <span style="color: #0000dd;">135</span> <span style="color: #000040;">&amp;&amp;</span> _py <span style="color: #000080;">==</span> _wall<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#93;</span> <span style="color: #000040;">+</span> <span style="color: #0000dd;">1</span><span style="color: #008000;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; retorted<span style="color: #008000;">&#40;</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0000ff;">else</span> <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>_angle <span style="color: #000080;">==</span> <span style="color: #0000dd;">225</span> <span style="color: #000040;">&amp;&amp;</span> _py <span style="color: #000080;">==</span> _wall<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; retorted<span style="color: #008000;">&#40;</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0000ff;">else</span> <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>_angle <span style="color: #000080;">==</span> <span style="color: #0000dd;">225</span> <span style="color: #000040;">&amp;&amp;</span> _py <span style="color: #000080;">==</span> _wall<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#93;</span> <span style="color: #000040;">+</span> <span style="color: #0000dd;">1</span><span style="color: #008000;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; retorted<span style="color: #008000;">&#40;</span><span style="color: #0000dd;">315</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span><br />
&nbsp; &nbsp; &nbsp; <span style="color: #008000;">&#125;</span><br />
&nbsp; &nbsp; <span style="color: #008000;">&#125;</span><br />
&nbsp; <span style="color: #008000;">&#125;</span><br />
&nbsp; <br />
&nbsp; <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>_px <span style="color: #000080;">==</span> _w<span style="color: #008000;">&#41;</span><br />
&nbsp; <span style="color: #008000;">&#123;</span><br />
&nbsp; &nbsp; reset<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span><br />
&nbsp; <span style="color: #008000;">&#125;</span><br />
&nbsp; <span style="color: #0000ff;">else</span> <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>_px <span style="color: #000080;">==</span> <span style="color: #0000dd;">0</span><span style="color: #008000;">&#41;</span><br />
&nbsp; <span style="color: #008000;">&#123;</span><br />
&nbsp; &nbsp; reset<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span><br />
&nbsp; <span style="color: #008000;">&#125;</span><br />
&nbsp; <span style="color: #0000ff;">else</span> <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>_py <span style="color: #000080;">==</span> _h<span style="color: #008000;">&#41;</span><br />
&nbsp; <span style="color: #008000;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>_angle <span style="color: #000080;">==</span> <span style="color: #0000dd;">45</span><span style="color: #008000;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; _angle <span style="color: #000080;">=</span> <span style="color: #0000dd;">315</span><span style="color: #008080;">;</span><br />
&nbsp; &nbsp; <span style="color: #0000ff;">else</span> <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>_angle <span style="color: #000080;">==</span> <span style="color: #0000dd;">135</span><span style="color: #008000;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; _angle <span style="color: #000080;">=</span> <span style="color: #0000dd;">225</span><span style="color: #008080;">;</span><br />
&nbsp; <span style="color: #008000;">&#125;</span><br />
&nbsp; <span style="color: #0000ff;">else</span> <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>_py <span style="color: #000080;">==</span> <span style="color: #0000dd;">0</span><span style="color: #008000;">&#41;</span><br />
&nbsp; <span style="color: #008000;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>_angle <span style="color: #000080;">==</span> <span style="color: #0000dd;">225</span><span style="color: #008000;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; _angle <span style="color: #000080;">=</span> <span style="color: #0000dd;">135</span><span style="color: #008080;">;</span><br />
&nbsp; &nbsp; <span style="color: #0000ff;">else</span> <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>_angle <span style="color: #000080;">==</span> <span style="color: #0000dd;">315</span><span style="color: #008000;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; _angle <span style="color: #000080;">=</span> <span style="color: #0000dd;">45</span><span style="color: #008080;">;</span><br />
&nbsp; <span style="color: #008000;">&#125;</span><br />
<span style="color: #008000;">&#125;</span><br />
<br />
<span style="color: #0000ff;">void</span> calcAngleIncrement<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><br />
<span style="color: #008000;">&#123;</span><br />
&nbsp; <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>_angle <span style="color: #000080;">==</span> <span style="color: #0000dd;">0</span> <span style="color: #000040;">||</span> _angle <span style="color: #000080;">==</span> <span style="color: #0000dd;">360</span><span style="color: #008000;">&#41;</span><br />
&nbsp; <span style="color: #008000;">&#123;</span><br />
&nbsp; &nbsp; _px <span style="color: #000040;">+</span><span style="color: #000080;">=</span> <span style="color: #0000dd;">1</span><span style="color: #008080;">;</span><br />
&nbsp; <span style="color: #008000;">&#125;</span><br />
&nbsp; <span style="color: #0000ff;">else</span> <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>_angle <span style="color: #000080;">==</span> <span style="color: #0000dd;">45</span><span style="color: #008000;">&#41;</span><br />
&nbsp; <span style="color: #008000;">&#123;</span><br />
&nbsp; &nbsp; _px <span style="color: #000040;">+</span><span style="color: #000080;">=</span> <span style="color: #0000dd;">1</span><span style="color: #008080;">;</span><br />
&nbsp; &nbsp; _py <span style="color: #000040;">+</span><span style="color: #000080;">=</span> <span style="color: #0000dd;">1</span><span style="color: #008080;">;</span><br />
&nbsp; <span style="color: #008000;">&#125;</span><br />
&nbsp; <span style="color: #0000ff;">else</span> <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>_angle <span style="color: #000080;">==</span> <span style="color: #0000dd;">135</span><span style="color: #008000;">&#41;</span><br />
&nbsp; <span style="color: #008000;">&#123;</span><br />
&nbsp; &nbsp; _px <span style="color: #000040;">-</span><span style="color: #000080;">=</span> <span style="color: #0000dd;">1</span><span style="color: #008080;">;</span><br />
&nbsp; &nbsp; _py <span style="color: #000040;">+</span><span style="color: #000080;">=</span> <span style="color: #0000dd;">1</span><span style="color: #008080;">;</span><br />
&nbsp; <span style="color: #008000;">&#125;</span><br />
&nbsp; <span style="color: #0000ff;">else</span> <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>_angle <span style="color: #000080;">==</span> <span style="color: #0000dd;">180</span><span style="color: #008000;">&#41;</span><br />
&nbsp; <span style="color: #008000;">&#123;</span><br />
&nbsp; &nbsp; _px <span style="color: #000040;">-</span><span style="color: #000080;">=</span> <span style="color: #0000dd;">1</span><span style="color: #008080;">;</span><br />
&nbsp; <span style="color: #008000;">&#125;</span><br />
&nbsp; <span style="color: #0000ff;">else</span> <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>_angle <span style="color: #000080;">==</span> <span style="color: #0000dd;">225</span><span style="color: #008000;">&#41;</span><br />
&nbsp; <span style="color: #008000;">&#123;</span><br />
&nbsp; &nbsp; _px <span style="color: #000040;">-</span><span style="color: #000080;">=</span> <span style="color: #0000dd;">1</span><span style="color: #008080;">;</span><br />
&nbsp; &nbsp; _py <span style="color: #000040;">-</span><span style="color: #000080;">=</span> <span style="color: #0000dd;">1</span><span style="color: #008080;">;</span><br />
&nbsp; <span style="color: #008000;">&#125;</span><br />
&nbsp; <span style="color: #0000ff;">else</span> <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>_angle <span style="color: #000080;">==</span> <span style="color: #0000dd;">315</span><span style="color: #008000;">&#41;</span><br />
&nbsp; <span style="color: #008000;">&#123;</span><br />
&nbsp; &nbsp; _px <span style="color: #000040;">+</span><span style="color: #000080;">=</span> <span style="color: #0000dd;">1</span><span style="color: #008080;">;</span><br />
&nbsp; &nbsp; _py <span style="color: #000040;">-</span><span style="color: #000080;">=</span> <span style="color: #0000dd;">1</span><span style="color: #008080;">;</span><br />
&nbsp; <span style="color: #008000;">&#125;</span><br />
<span style="color: #008000;">&#125;</span></div></td></tr></tbody></table></div>
<p><a href="http://blog.bsoares.com.br/wp-content/uploads/2009/07/PongMatrix.zip" target="_blank">Código fonte do experimento (Arduino e Flash).</a></p>

<div class="ngg-galleryoverview" id="ngg-gallery-6-532">


	
	<!-- Thumbnails -->
		
	<div id="ngg-image-36" class="ngg-gallery-thumbnail-box"  >
		<div class="ngg-gallery-thumbnail" >
			<a href="http://blog.bsoares.com.br/wp-content/gallery/ping-pong-com-matriz-de-leds-8x8-arduino/pong-with-8x8-led-matrix-on-arduino-4.jpg" rel="shadowbox[post-532];player=img;" title=" "  >
								<img title="pong-with-8x8-led-matrix-on-arduino-4" alt="pong-with-8x8-led-matrix-on-arduino-4" src="http://blog.bsoares.com.br/wp-content/gallery/ping-pong-com-matriz-de-leds-8x8-arduino/thumbs/thumbs_pong-with-8x8-led-matrix-on-arduino-4.jpg" width="100" height="75" />
							</a>
		</div>
	</div>
	
		
 		
	<div id="ngg-image-35" class="ngg-gallery-thumbnail-box"  >
		<div class="ngg-gallery-thumbnail" >
			<a href="http://blog.bsoares.com.br/wp-content/gallery/ping-pong-com-matriz-de-leds-8x8-arduino/pong-with-8x8-led-matrix-on-arduino-3.jpg" rel="shadowbox[post-532];player=img;" title=" "  >
								<img title="pong-with-8x8-led-matrix-on-arduino-3" alt="pong-with-8x8-led-matrix-on-arduino-3" src="http://blog.bsoares.com.br/wp-content/gallery/ping-pong-com-matriz-de-leds-8x8-arduino/thumbs/thumbs_pong-with-8x8-led-matrix-on-arduino-3.jpg" width="100" height="75" />
							</a>
		</div>
	</div>
	
		
 		
	<div id="ngg-image-34" class="ngg-gallery-thumbnail-box"  >
		<div class="ngg-gallery-thumbnail" >
			<a href="http://blog.bsoares.com.br/wp-content/gallery/ping-pong-com-matriz-de-leds-8x8-arduino/pong-with-8x8-led-matrix-on-arduino-2.jpg" rel="shadowbox[post-532];player=img;" title=" "  >
								<img title="pong-with-8x8-led-matrix-on-arduino-2" alt="pong-with-8x8-led-matrix-on-arduino-2" src="http://blog.bsoares.com.br/wp-content/gallery/ping-pong-com-matriz-de-leds-8x8-arduino/thumbs/thumbs_pong-with-8x8-led-matrix-on-arduino-2.jpg" width="100" height="75" />
							</a>
		</div>
	</div>
	
		
 		
	<div id="ngg-image-33" class="ngg-gallery-thumbnail-box"  >
		<div class="ngg-gallery-thumbnail" >
			<a href="http://blog.bsoares.com.br/wp-content/gallery/ping-pong-com-matriz-de-leds-8x8-arduino/pong-with-8x8-led-matrix-on-arduino-1.jpg" rel="shadowbox[post-532];player=img;" title=" "  >
								<img title="pong-with-8x8-led-matrix-on-arduino-1" alt="pong-with-8x8-led-matrix-on-arduino-1" src="http://blog.bsoares.com.br/wp-content/gallery/ping-pong-com-matriz-de-leds-8x8-arduino/thumbs/thumbs_pong-with-8x8-led-matrix-on-arduino-1.jpg" width="100" height="75" />
							</a>
		</div>
	</div>
	
		
 	 	
	<!-- Pagination -->
 	<div class='ngg-clear'></div>
 	
</div>


<p><strong>Conteúdo relacionado:</strong><br />
<a href="http://www.instructables.com/id/Pong-with-8x8-Led-Matrix-on-Arduino" target="_blank">Instructables</a><br />
<a href="http://www.flickr.com/photos/bsoares/sets/72157620919850875/" target="_blank">Mais fotos no Flickr</a><br />
<a href="http://www.youtube.com/watch?v=lvAlKH5SzYk" target="_blank">Ping Pong com Matriz de Leds 8&#215;8 no YouTube</a><br />
<a href="http://www.arduino.cc/playground/Main/DirectDriveLEDMatrix" target="_blank">Arduino 8&#215;8 LED Matrix Direct drive</a><br />
<a href="http://pt.wikipedia.org/wiki/Pong" target="_blank">O primeiro videogame lucrativo da história (Pong)</a><br />
<a href="http://en.wikipedia.org/wiki/Dot_matrix" target="_blank">Led Dot Matrix</a><br />
<a href="http://www.arduino.cc/playground/Code/Timer1">TimerOne</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.bsoares.com.br/arduino/ping-pong-with-8x8-led-matrix-on-arduino/feed</wfw:commentRss>
		<slash:comments>38</slash:comments>
		</item>
	</channel>
</rss>

