<?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>SulhanSetiawan.com</title>
	<atom:link href="http://sulhansetiawan.com/feed" rel="self" type="application/rss+xml" />
	<link>http://sulhansetiawan.com</link>
	<description>alias Yoko Chan</description>
	<lastBuildDate>Wed, 10 Mar 2010 06:47:28 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>id</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Teks Berjalan pada Matriks LED</title>
		<link>http://sulhansetiawan.com/teks-berjalan-pada-matriks-led</link>
		<comments>http://sulhansetiawan.com/teks-berjalan-pada-matriks-led#comments</comments>
		<pubDate>Tue, 02 Mar 2010 10:57:32 +0000</pubDate>
		<dc:creator>Sulhan</dc:creator>
				<category><![CDATA[Eksperimen]]></category>
		<category><![CDATA[Belajar Mikrokontroler]]></category>
		<category><![CDATA[Matriks LED]]></category>
		<category><![CDATA[Mikrokontroler]]></category>
		<category><![CDATA[Simulasi]]></category>
		<category><![CDATA[Teks Berjalan]]></category>

		<guid isPermaLink="false">http://sulhansetiawan.com/teks-berjalan-pada-matriks-led</guid>
		<description><![CDATA[
Pada contoh di Menampilkan Gambar pada LED Matriks Menggunakan Simulator, tulisan ditampilkan sebagai gambar. Pertama kita membuat gambar tulisan, kemudian gambar tulisan tersebut kita buat konstantanya. Setelah itu ditampilkan seperti menampilkan gambar.
Menampilkan tulisan dengan cara tersebut hanya cocok jika tulisan yang ditampilkan pendek. Disamping itu, tulisan yang ditampilkan tidak akan diubah lagi. Jika tulisan yang [...]]]></description>
			<content:encoded><![CDATA[<p style="TEXT-ALIGN: center"><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="494" height="178" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="menu" value="false" /><param name="quality" value="medium" /><param name="scale" value="exactfit" /><param name="src" value="swf/MXLED-2.swf" /><embed type="application/x-shockwave-flash" width="494" height="178" src="swf/MXLED-2.swf" menu="false" scale="exactfit" quality="medium"></embed></object></p>
<p style="text-align: justify;">Pada contoh di <a href="http://sulhansetiawan.com/menampilkan-gambar-pada-led-matriks-menggunakan-simulator">Menampilkan Gambar pada LED Matriks Menggunakan Simulator</a>, tulisan ditampilkan sebagai gambar. Pertama kita membuat gambar tulisan, kemudian gambar tulisan tersebut kita buat konstantanya. Setelah itu ditampilkan seperti menampilkan gambar.</p>
<p style="text-align: justify;">Menampilkan tulisan dengan cara tersebut hanya cocok jika tulisan yang ditampilkan pendek. Disamping itu, tulisan yang ditampilkan tidak akan diubah lagi. Jika tulisan yang akan ditampilkan adalah tulisan yang panjang, atau tulisan yang ditampilkan akan diganti-ganti, maka ada cara yang lebih baik dibandingkan dengan cara tersebut.</p>
<p style="text-align: justify;">Cara yang lebih baik adalah sebagai berikut: Pertama, kita membuat konstanta karakter. Pada contoh di sini, kita membuat konstanta karakter dengan ukuran karakter adalah 8 baris x 5 kolom. Konstanta karakter ini dibuat menggunakan Karakter.bmp  yang bisa Anda edit untuk menyesuaikan keinginan Anda.</p>
<p style="text-align: justify;">Setelah kita mendapatkan konstanta karakter, yaitu dengan mengkompilasi Karakter.bmp menggunakan <a title="ImgTable.zip" href="http://sulhansetiawan.com/mikrokontroler/ImgTable.zip"><strong>ImgTable.exe</strong></a>, maka setiap kita akan menampilkan teks, kita melakukannya dengan membaca teks tersebut karakter-per-karakter. Setiap karakter yang dibaca, kemudian ditampilkan dengan melihat pada tabel karakter. Dengan cara seperti ini, kita bisa menampilkan tulisan apa saja dan bisa diganti-ganti pada saat program sedang berjalan. Tentu saja Anda harus membuat prosedur untuk mengganti text yang akan ditampilkan tersebut jika Anda ingin menggantinya.</p>
<p style="text-align: justify;">Sayang sekali <a title="Listing program" href="http://sulhansetiawan.com/microsource/RunningText.zip"><strong>Listing program</strong></a> hanya saya tulis untuk bahasa assembly. Jadi, jika Anda lebih suka menggunakan bahasa C, silakan lakukan konversi sendiri <img src='http://sulhansetiawan.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  </p>
<p style="text-align: justify;">Jika Anda ingin mencoba program contoh menggunakan MXLED, lakukanlah pengaturan simulator seperti pada <a href="http://sulhansetiawan.com/menampilkan-gambar-pada-led-matriks-menggunakan-simulator">Menampilkan Gambar pada LED Matriks Menggunakan Simulator</a></p>
<p style="text-align: justify;">Selamat mencoba <img src='http://sulhansetiawan.com/wp-includes/images/smilies/icon_exclaim.gif' alt=':!:' class='wp-smiley' />  </p>
]]></content:encoded>
			<wfw:commentRss>http://sulhansetiawan.com/teks-berjalan-pada-matriks-led/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Speak It &#8211; Membacakan text di komputer</title>
		<link>http://sulhansetiawan.com/speak-it-membacakan-text-di-komputer</link>
		<comments>http://sulhansetiawan.com/speak-it-membacakan-text-di-komputer#comments</comments>
		<pubDate>Fri, 22 Jan 2010 11:23:11 +0000</pubDate>
		<dc:creator>Sexytaris</dc:creator>
				<category><![CDATA[Audio]]></category>
		<category><![CDATA[Software GRATIS!]]></category>
		<category><![CDATA[belajar pronounciation]]></category>
		<category><![CDATA[membacakan text]]></category>

		<guid isPermaLink="false">http://sulhansetiawan.com/?p=905</guid>
		<description><![CDATA[Text to Speech (TTS) engine di dalam Windows memungkinkan komputer bisa ngomong.   Kalau komputer bisa ngomong, dia jujur tak akan bohong.. hehehe. Nah, dengan mengaplikasikan engine tersebut, program Speak It bisa membacakan text di komputer untuk Anda.
Cara pakai Speak It

Pastikan Speak It sudah jalan (tandanya, icon Speak It nan aduhai itu muncul di [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Text to Speech (TTS) engine di dalam Windows memungkinkan komputer bisa ngomong.   Kalau komputer bisa ngomong, dia jujur tak akan bohong.. hehehe. Nah, dengan mengaplikasikan engine tersebut, program Speak It bisa membacakan text di komputer untuk Anda.</p>
<h4>Cara pakai Speak It</h4>
<ol>
<li style="text-align: justify;">Pastikan Speak It sudah jalan (tandanya, icon Speak It nan aduhai itu muncul di system tray) serta ada output audio (jika tidak, bagaimana Anda bisa dengar?).</li>
<div class="wp-caption aligncenter" style="width: 258px"><a href="/img/SpeakItIconAduhaiSystemTray.jpg"><img title="Icon Speak It nan aduhai muncul pada system tray." src="/img/SpeakItIconAduhaiSystemTray.jpg" alt="Icon Speak It nan aduhai muncul pada system tray." width="248" height="119" /></a><p class="wp-caption-text">Icon Speak It nan aduhai muncul pada system tray.</p></div>
<li style="text-align: justify;">Copy text yang Anda inginkan untuk dibaca (seperti biasa, dengan Ctrl+C atau klik kanan &gt; Copy).   Text tersebut akan termuat ke clipboard (setiap data yang Anda copy pasti termuat ke situ).</li>
<li style="text-align: justify;">Klik ganda icon Speak It pada system tray lalu dengarkan apa kata komputer Anda.  Jika data yang Anda copy bukan text, berupa gambar misalnya, narator akan bersuara &#8220;<em>There&#8217;s no text in the clipboard.</em>&#8220;</li>
</ol>
<p style="text-align: justify;">Sebenarnya, TTS dibuat untuk mengakomodasi user yang tuna netra supaya mereka bisa menggunakan komputer dengan mengandalkan pendengaran.  Speak It juga bisa membacakan text dalam bahasa apapun, namun tentu saja dia akan sangat fasih untuk ngomong dalam bahasa Inggris dan akan sangat menggelikan jika dipaksa untuk ngomong dalam bahasa selain itu.   Maka dari itu, Speak It sangat berguna bagi Anda yang sedang belajar <em>pronounciation</em>.</p>
<p style="text-align: justify;">Anda bisa mengganti tipe suara narator dari Control Panel &gt; Speech &gt; Text to Speech.  Suara siapa yang lebih Anda sukai; Sam, Michael, atau Michelle.</p>
<div class="wp-caption aligncenter" style="width: 97px"><a href="http://sulhansetiawan.com/software/SpeakIt.7z"><img title="Speak It 41,2KB" src="/img/download.gif" alt="Speak It 41,2KB" width="87" height="30" /></a><p class="wp-caption-text">Speak It 41,2KB</p></div>
]]></content:encoded>
			<wfw:commentRss>http://sulhansetiawan.com/speak-it-membacakan-text-di-komputer/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Wajah baru buku Mudah dan Menyenangkan Belajar Mikrokontroler</title>
		<link>http://sulhansetiawan.com/wajah-baru-buku-mudah-dan-menyenangkan-belajar-mikrokontroler</link>
		<comments>http://sulhansetiawan.com/wajah-baru-buku-mudah-dan-menyenangkan-belajar-mikrokontroler#comments</comments>
		<pubDate>Fri, 04 Sep 2009 11:30:36 +0000</pubDate>
		<dc:creator>Sexytaris</dc:creator>
				<category><![CDATA[Buku karya Sulhan Setiawan]]></category>
		<category><![CDATA[buku Mikrokontroler]]></category>

		<guid isPermaLink="false">http://sulhansetiawan.com/?p=868</guid>
		<description><![CDATA[Kini buku Mudah dan Menyenangkan Belajar Mikrokontroler hadir dengan wajah baru. Jangan pangling karena justru tulisan &#8220;belajar mikrokontroler&#8221;nya lebih eye catching.
]]></description>
			<content:encoded><![CDATA[<p>Kini buku Mudah dan Menyenangkan Belajar Mikrokontroler hadir dengan wajah baru. Jangan <em>pangling</em> karena justru tulisan &#8220;belajar mikrokontroler&#8221;nya lebih <em>eye catching</em>.</p>
<div class="wp-caption aligncenter" style="width: 155px"><a href="/img/BukuBelajarMikrokontroler.jpg"><img title="Mudah dan Menyenangkan Belajar Mikrokontroler" src="/img/BukuBelajarMikrokontroler.jpg" alt="Mudah dan Menyenangkan Belajar Mikrokontroler cetakan 2008" width="145" height="217" /></a><p class="wp-caption-text">Mudah dan Menyenangkan Belajar Mikrokontroler cetakan 2008</p></div>
]]></content:encoded>
			<wfw:commentRss>http://sulhansetiawan.com/wajah-baru-buku-mudah-dan-menyenangkan-belajar-mikrokontroler/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Bagaimana Membuat Gambar 3 DImensi?</title>
		<link>http://sulhansetiawan.com/membuat-gambar-3-dimensi</link>
		<comments>http://sulhansetiawan.com/membuat-gambar-3-dimensi#comments</comments>
		<pubDate>Wed, 26 Aug 2009 17:25:13 +0000</pubDate>
		<dc:creator>Sulhan</dc:creator>
				<category><![CDATA[Gambar 3D/Stereo]]></category>
		<category><![CDATA[Ajaib]]></category>
		<category><![CDATA[Gambar 3 Dimensi]]></category>

		<guid isPermaLink="false">http://sulhansetiawan.com/?p=862</guid>
		<description><![CDATA[Setelah kita mengetahui bagaimana konsep dari gambar 3 dimensi (lihat Keajaiban Gambar 3 Dimensi), sekarang saatnya kita untuk membuatnya.
Membuat Model Gambar 3 Dimensi
Seperti telah kita ketahui bagaimana cara memindahkan obyek maya ke dalam kertas, maka keseluruhan obyek harus kita pecah menjadi pixel-pixel. Pixel-pixel ini kemudian kita simpan sebagai model gambar.
Model gambar merupakan array dua dimensi yang berisi informasi [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Setelah kita mengetahui bagaimana konsep dari gambar 3 dimensi (lihat <a href="http://sulhansetiawan.com/keajaiban-gb-3dimensi">Keajaiban Gambar 3 Dimensi</a>), sekarang saatnya kita untuk membuatnya.</p>
<h3>Membuat Model Gambar 3 Dimensi</h3>
<p style="text-align: justify;">Seperti telah kita ketahui bagaimana cara memindahkan obyek maya ke dalam kertas, maka keseluruhan obyek harus kita pecah menjadi pixel-pixel. Pixel-pixel ini kemudian kita simpan sebagai model gambar.</p>
<p style="text-align: justify;">Model gambar merupakan array dua dimensi yang berisi informasi jarak pixel dari mata pengamat. Dan agar lebih memudahkan untuk dilihat, maka informasi jarak ini menggunakan warna pixel.</p>
<p style="text-align: justify;">Jika kita perhatikan lagi pada bagaimana memindah pixel dari obyek maya ke kertas, maka P1, P2, P3, dan seterusnya harus merupakan pixel dengan warna yang sama. Oleh karena itu, maka sebenarnya kita bisa menyimpan informasi dalam model gambar dalam bentuk berapa jarak pixel tertentu dari pixel sebelumnya. Dengan cara ini, akan sangat mudah bagi kita untuk mengubah model gambar menjadi gambar 3 dimensi.</p>
<p style="text-align: justify;">Contoh model gambar untuk gambar hati adalah sebagai berikut:</p>
<div class="wp-caption aligncenter" style="width: 217px;"><img title="Model Gambar 3 Dimensi" src="http://sulhansetiawan.com/img/model3d.png" alt="Model Gambar 3 Dimensi" width="207" height="150" /></p>
<p class="wp-caption-text">Model Gambar 3 Dimensi</p>
</div>
<p style="text-align: justify;">Warna putih merupakan warna dengan nilai tertinggi, yaitu FFFFFF. Sedangkan warna hitam adalah warna dengan nilai terendah, yaitu 000000. Semakin terang sebuah pixel, semakin jauh pixel tersebut dari mata. Oleh karena itu, warna-warna pada model gambar akan berbeda dengan pewarnaan untuk membuat gambar yang berkesan tiga dimensi seperti pada Gambar Hati montok.</p>
<h3>Membuat Kulit Gambar 3 Dimensi</h3>
<p style="text-align: justify;">Kulit gambar tiga dimensi adalah gambar yang nantinya akan terlihat.</p>
<p style="text-align: justify;">Lebar dari kulit gambar adalah selebar dari jarak pixel terjauh dari model gambar. Sedangkan tinggi kulit sebaiknya adalah setinggi model gambar atau jika kurang dari itu, maka kita bisa mengulangi lagi dari pixel teras dari kulit gambar.</p>
<p style="text-align: justify;">Hal yang paling penting untuk diperhatikan dalam merancang kulit gambar adalah agar pixel pada bagian paling kanan haruslah nyambung dengan pixel paling kiri. Hal ini dimaksudkan agar saat kulit ini di-<em>tile</em> ke kanan pada saat pembentukan gambar 3 dimensi, maka gambar dari kulit akan terasa nyambung dan tidak terlihat batasnya. Dan jika kita membuat kulit yang tingginya lebih kecil dari tinggi model gambar, maka pixel bagian bawah dari kulit juga harus nyambung dengan pixel bagian atas.</p>
<p style="text-align: justify;">Contoh dari kulit gambar adalah sebagai berikut:</p>
<div class="wp-caption aligncenter" style="width: 103px;"><img title="Kulit Gambar 3 Dimensi" src="http://sulhansetiawan.com/img/kulit3d.png" alt="Kulit Gambar 3 Dimensi" width="93" height="63" /></p>
<p class="wp-caption-text">Kulit Gambar 3 Dimensi</p>
</div>
<h3>Mengubah Model Gambar Menjadi Gambar 3 Dimensi</h3>
<p style="text-align: justify;">Setelah kita menyiapkan baik model gambar maupun kulit gambar, maka kita bisa membuat gambar 3 dimensi dengan cara sebagai berikut:</p>
<ol>
<li>Tempatkan kulit gambar pada gambar hasil di bagian paling kiri dari gambar.</li>
<li>Baca setiap pixel dari kiri ke kanan.</li>
<li>Pada setiap pembacaannya, kita harus mengisi pixel dari gambar hasil dari posisi x yang sama dengan pixel dari gambar hasil diri posisi x dikurangi dengan informasi jarak yang tersimpan pada model gambar untuk posisi x tersebut. Jika posisi x hasilnya ternyata lebih kecil dari nol, maka kita tidak perlu melakukan perubahan lagi karena pixel saat itu pasti telah diisi dari kulit gambar.</li>
<li>Langkah di atas dilakukan dari pixel paling atas hingga pixel paling bawah.</li>
</ol>
<p style="text-align: justify;">Dari langkah-langkah di atas, kita bisa mendapatkan gambar 3 dimensinya seperti berikut:</p>
<div class="wp-caption aligncenter" style="width: 575px;"><img title="Di wajahku ada cinta. Sayang tidak banyak yang bisa melihatnya.. " src="http://sulhansetiawan.com/img/CintaDiWajah.png" alt="Di Wajahku Ada Cinta" width="565" height="418" /></p>
<p class="wp-caption-text">Di Wajahku Ada Cinta</p>
</div>
<p style="text-align: justify;">Jadi, adakah yang jatuh cinta setelah melihat wajahku? <img src='http://sulhansetiawan.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  </p>
]]></content:encoded>
			<wfw:commentRss>http://sulhansetiawan.com/membuat-gambar-3-dimensi/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Patch Multilingual untuk &#8220;Google (XML) Sitemap Generator for WordPress&#8221;</title>
		<link>http://sulhansetiawan.com/patch-multilingual-untuk-sitemap-generator</link>
		<comments>http://sulhansetiawan.com/patch-multilingual-untuk-sitemap-generator#comments</comments>
		<pubDate>Fri, 03 Apr 2009 14:36:41 +0000</pubDate>
		<dc:creator>Sulhan</dc:creator>
				<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://sulhansetiawan.com/?p=671</guid>
		<description><![CDATA[Google (XML) Sitemap Generator for WordPress (selanjutnya disebut Sitemap Generator saja) merupakan salah satu &#8220;you must install&#8221; plug-in WordPress.  Plug-in ini secara otomatis membuatkan sitemap yang konon juga merupakan salah satu unsur Search Engine Optimization (SEO).  Sayangnya, hingga tulisan ini dibuat, Sitemap Generator v3.1.2 release 26 Desember 2008 belum mendukung blog multilingual.  [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Google (XML) Sitemap Generator for WordPress (selanjutnya disebut Sitemap Generator saja) merupakan salah satu &#8220;you must install&#8221; plug-in WordPress.  Plug-in ini secara otomatis membuatkan sitemap yang konon juga merupakan salah satu unsur Search Engine Optimization (SEO).  Sayangnya, hingga tulisan ini dibuat, Sitemap Generator v3.1.2 release 26 Desember 2008 belum mendukung blog multilingual.  Sitemap Generator belum bisa membuatkan URL isi blog yang bukan berbahasa default.</p>
<p style="text-align: justify;">SulhanSetiawan.com ditulis dalam dua bahasa, Indonesia (default) dan Inggris (kode en).  Multilingual dibuat dengan qTranslate dengan mode pre-path.  Sitemapnya bisa dilihat <a title="sitemap SulhanSetiawan.com" href="http://sulhansetiawan.com/sitemap.xml">di sini</a>, screenshotnya seperti di bawah ini.</p>
<p style="text-align: center;"><a href="/img/MultilingualSitemap.gif"><img class="aligncenter" title="Sitemap SulhanSetiawan.com" src="/img/MultilingualSitemap.gif" alt="Sitemap SulhanSetiawan.com" width="359" height="155" /></a></p>
<p style="text-align: center;">Sitemap SulhanSetiawan.com</p>
<p style="text-align: justify;">Lihat bahwa ada sisipan /en/ pada URL untuk isi blog yang berbahasa Inggris.  Sitemap seperti yang dicontohkan belum didukung oleh Sitemap Generator v3.1.2.  Oleh karenanya, dalam file sitemap-core.php pada class GoogleSitemapGenerator, ganti function AddUrl menjadi sebagai berikut:</p>
<pre>function AddUrl($loc, $lastMod=0, $changeFreq="monthly", $priority=0.5) {
    $page = new GoogleSitemapGeneratorPage($loc,
      $priority, $changeFreq, $lastMod);
    global $q_config;
    foreach ($q_config['enabled_languages'] as $language) {
      $urleach=qtrans_convertURL($loc, $language,true);
      $page-&gt;SetUrl($urleach);
      $this-&gt;AddElement($page);
    }
}</pre>
<p style="text-align: justify;">Lihat saja hasilnya.  Masuklah ke wp-admin, lanjut ke bagian plugin Sitemap Generator, lakukan rebuild sitemap.  Sitemap baru Anda biasanya ada di http://BlogAnda/sitemap.xml.</p>
]]></content:encoded>
			<wfw:commentRss>http://sulhansetiawan.com/patch-multilingual-untuk-sitemap-generator/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Capture Image &#8211; Menangkap dan memotong gambar pada layar, termasuk cursor, sekaligus!</title>
		<link>http://sulhansetiawan.com/capture-image-menangkap-dan-memotong-gambar-pada-layar-termasuk-cursor-sekaligus</link>
		<comments>http://sulhansetiawan.com/capture-image-menangkap-dan-memotong-gambar-pada-layar-termasuk-cursor-sekaligus#comments</comments>
		<pubDate>Sun, 22 Feb 2009 08:19:21 +0000</pubDate>
		<dc:creator>Sulhan</dc:creator>
				<category><![CDATA[Imaging]]></category>
		<category><![CDATA[Software GRATIS!]]></category>
		<category><![CDATA[Gambar]]></category>

		<guid isPermaLink="false">http://sulhansetiawan.com/?p=577</guid>
		<description><![CDATA[Print screen konvensional, repot dan tidak bisa mengikutkan cursor.
Anda pastinya sudah tahu teknik menangkap gambar pada layar dengan tombol print screen. Anda tekan tombol itu, paste ke software pengolah gambar (Photoshop misalnya), memotong dan memanipulasi sedikit, save, baru memasangnya pada dokumen. Wah repot banget, apalagi bagi Anda yang sedang membuat tutorial komputer. Sudah begitu, cursor [...]]]></description>
			<content:encoded><![CDATA[<h4 style="text-align: justify;">Print screen konvensional, repot dan tidak bisa mengikutkan cursor.</h4>
<p style="text-align: justify;">Anda pastinya sudah tahu teknik menangkap gambar pada layar dengan tombol print screen. Anda tekan tombol itu, paste ke software pengolah gambar (Photoshop misalnya), memotong dan memanipulasi sedikit, save, baru memasangnya pada dokumen. Wah repot banget, apalagi bagi Anda yang sedang membuat tutorial komputer. Sudah begitu, cursor tidak ikut tertangkap, padahal Anda membutuhkannya untuk menunjukkan sesuatu pada tutorial Anda. <em>Ngaku aja deh!</em></p>
<h4 style="text-align: justify;">Pasang Capture Image pada system tray.</h4>
<p style="text-align: justify;">Segera lepaskan diri Anda dari kerepotan print screen konvensional dengan men-download Capture Image! Ekstrak CaptureImage.zip dalam satu folder, Anda akan menemukan dua file, yaitu executable file Capture Image itu sendiri dan SnapHook.dll. Eksekusi CaptureImage.exe, Anda akan melihatnya terpasang pada system tray. Adapun SnapHook.dll akan mengintegrasikan fungsi Capture Image dengan tombol-tombol tertentu pada keyboard.</p>
<p style="text-align: justify;">Jika Anda klik kanan pada icon Capture Image, Anda akan disuguhi empat fungsi, yaitu Capture Screen, Capture Active Window, Capture Screen with Cursor, dan Copy from Clipboard. Jika &#8220;Hook to Print Screen&#8221; enable (default), maka keempat fungsi tadi bisa Anda akses langsung dari tombol-tombol yang telah ditentukan.</p>
<h4 style="text-align: justify;">Tempatkan cursor, tekan print screen, buat marquee, selesai!</h4>
<p style="text-align: justify;">Ya, begitu saja cara pakai Capture Image. Lihat gambar.</p>
<p style="text-align: justify;">
<div class="wp-caption aligncenter" style="width: 439px"><a href="/img/CaptureImageCaraPakai.jpg"><img title="Cara pakai Capture Image." src="/img/CaptureImageCaraPakai.jpg" alt="Cara pakai Capture Image." width="429" height="262" /></a><p class="wp-caption-text">Cara pakai Capture Image.</p></div>
<ol style="text-align: justify;">
<li>Tempatkan cursor di posisi yang Anda inginkan lalu tekan print screen.</li>
<li>Tombol yang sudah di-hook itu akan mengaktifkan fungsi capture screen with cursor. Segera muncul di hadapan Anda marquee grid berupa garis vertikal-horisontal yang berpotongan. Anda yang sering berkutat dengan aplikasi pengolah gambar seperti Photoshop atau CorelDRAW pasti akrab betul dengan marquee grid seperti ini.</li>
<li>Buat marquee yang melingkupi potongan layar yang Anda inginkan dengan meng-klik kiri. Selama Anda meng-klik kiri, akan tampil info ukuran marquee yang sedang Anda buat. Lihat gambar.</li>
<li>Setelah yakin dengan marquee Anda, lepaskan klik kiri. Marquee akan berkedip-kedip, dan itulah potongan layar yang Anda inginkan.</li>
<li>Klik kanan di sembarang tempat, Anda akan disuguhi beberapa pilihan. Apakah Anda akan copy, save, zoom, atau bahkan mewarnai (fill) potongan layar tadi. Lihat gambar.</li>
</ol>
<p style="text-align: center;">
<div class="wp-caption aligncenter" style="width: 440px"><a href="/img/CaptureImageMenu.jpg"><img class=" " title="Menu Capture Image." src="/img/CaptureImageMenu.jpg" alt="Menu Capture Image." width="430" height="336" /></a><p class="wp-caption-text">Menu Capture Image.</p></div>
<p style="text-align: justify;">Selesai! Beginilah jadinya.</p>
<p style="text-align: justify;">
<div class="wp-caption aligncenter" style="width: 383px"><a href="/img/CaptureImageSelesai.jpg"><img class=" " title="Contoh hasil akhir Capture Image." src="/img/CaptureImageSelesai.jpg" alt="Contoh hasil akhir Capture Image." width="373" height="181" /></a><p class="wp-caption-text">Contoh hasil akhir Capture Image.</p></div>
<p style="text-align: justify;">Jika Anda tidak butuh mengikutkan cursor, cukup klik kiri saja lalu mainkan marquee grid Anda!</p>
<p style="text-align: justify;">Inilah hebatnya Capture Image. Ia bisa menangkap cursor, memotong gambar, zoom atau warna, langsung di Tempat Kejadian Perkara (baca: layar) tanpa melibatkan aplikasi pengolah gambar apapun! Praktis banget kan?</p>
<p style="text-align: justify;">
<div class="wp-caption aligncenter" style="width: 97px"><a href="http://sulhansetiawan.com/software/CaptureImage.zip"><img class=" " title="Capture Image 34,5KB" src="/img/download.gif" alt="Capture Image 34,5KB" width="87" height="30" /></a><p class="wp-caption-text">Capture Image 34,5KB</p></div>
]]></content:encoded>
			<wfw:commentRss>http://sulhansetiawan.com/capture-image-menangkap-dan-memotong-gambar-pada-layar-termasuk-cursor-sekaligus/feed</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Tutorial belajar mikrokontroler</title>
		<link>http://sulhansetiawan.com/tutorial-belajar-mikrokontroler</link>
		<comments>http://sulhansetiawan.com/tutorial-belajar-mikrokontroler#comments</comments>
		<pubDate>Fri, 20 Feb 2009 13:55:31 +0000</pubDate>
		<dc:creator>Sulhan</dc:creator>
				<category><![CDATA[buku Mikrokontroler]]></category>
		<category><![CDATA[Belajar Mikrokontroler]]></category>
		<category><![CDATA[Mikrokontroler]]></category>

		<guid isPermaLink="false">http://sulhansetiawan.com/?p=564</guid>
		<description><![CDATA[Dibandingkan beberapa waktu yang lalu, sekarang harga chip mikrokontroler sudah relatif murah. Bahkan untuk sekadar membuat lampu berjalan, mikrokontroler pantas dipilih. Namun ternyata murahnya harga tidak serta merta membuat penggemar elektronika menggunakan mikrokontroler dalam rancangannya. Bukannya apa-apa, tapi karena mereka tidak dapat memprogramnya!
Pakai trik apa?
Harus diakui bahwa merancang sistem bermikrokontroler memang membutuhkan dasar ilmu yang [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Dibandingkan beberapa waktu yang lalu, sekarang harga chip mikrokontroler sudah relatif murah. Bahkan untuk sekadar membuat lampu berjalan, mikrokontroler pantas dipilih. Namun ternyata murahnya harga tidak serta merta membuat penggemar elektronika menggunakan mikrokontroler dalam rancangannya. Bukannya apa-apa, tapi karena mereka tidak dapat memprogramnya!</p>
<h4 style="text-align: justify;">Pakai trik apa?</h4>
<p style="text-align: justify;">Harus diakui bahwa merancang sistem bermikrokontroler memang membutuhkan dasar ilmu yang cukup kompleks. Banyak orang jadi menyerah sebelum mencoba. Mereka dibingungkan oleh lingkaran setan, dari mana harus memulai?</p>
<p style="text-align: justify;">Yang penting, Anda harus banyak berlatih, baik teori maupun praktik. Oleh karena itu, sebaiknya terlebih dahulu Anda mempersiapkan alat dan bahan, yaitu sistem minimal mikrokontroler (terdiri dari sebuah chip mikrokontroler, resistor, kapasitor, dan kristal), downloader, dan Integrated System Environment (IDE).</p>
<p style="text-align: justify;">Komponen-komponen bisa Anda beli di toko elektronika. Downloader bisa Anda buat sendiri atau beli. IDE bisa Anda dapatkan <a title="IDE mikrokontroler" href="http://sulhansetiawan.com/category/mikrokontroler/integrated-development-environment">di sini</a>. Jangan lupa, sandinglah buku <a title="Mudah dan Menyenangkan Belajar Mikrokontroler" href="http://sulhansetiawan.com/mudah-dan-menyenangkan-belajar-mikrokontroler">Mudah dan Menyenangkan Belajar Mikrokontroler</a> <img src='http://sulhansetiawan.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
<p style="text-align: justify;">Memang, untuk menjadi ahli, butuh waktu lumayan lama. Tapi, kalau hanya untuk sekadar bisa menggunakan mikrokontroler, satu atau dua hari saja sudah cukup! Mulailah dari yang paling sederhana, terus sedikit demi sedikit meningkat sampai yang rumit. Nanti, Jika Anda merasa mentok menghadapi masalah yang rumit, buatlah masalah menjadi sederhana. Jika Anda menghadapi masalah yang besar, buatlah masalah menjadi kecil. Jika Anda menemui bab yang sulit, jangan paksakan diri. Percayalah, suatu saat Anda pasti dapat memahaminya.</p>
<h4 style="text-align: justify;">Pakai mikrokontroler apa?</h4>
<p style="text-align: justify;">Sekali Anda menguasai salah satu jenis mikrokontroler, akan mudah bagi Anda untuk berpindah ke mikrokontroler jenis lainnya. Jadi, tidak penting pakai mikrokontroler apa, tapi teknik pemrogramannya.</p>
<p style="text-align: justify;">AT89C51 atau AT89C2051 dari keluarga MCS-51 bisa dijadikan pilihan yang bagus. Mikrokontroler ini mudah-murah-meriah. Anda tidak akan terlalu bersedih jika Anda membuatnya hancur. Sebaliknya, Anda akan sangat gembira jika ternyata bisa menguasai ilmu mikrokontroler dengan biaya yang rendah.</p>
<h4 style="text-align: justify;">Pakai bahasa pemrograman apa?</h4>
<p style="text-align: justify;">Ada banyak pilihan bahasa pemrograman. Ada yang menyarankan untuk menguasai bahasa pemrograman tingkat tinggi terlebih dahulu, seperti Basic, Pascal, C, dan lain-lain. Namun demikian, bahasa pemrograman terbaik yang benar-benar akan membuat Anda mengerti akan mikrokontroler adalah <em>assembly</em> karena bahasa ini menuntut Anda untuk membuat instruksi secara teliti.</p>
<p style="text-align: justify;">Selamat belajar!</p>
]]></content:encoded>
			<wfw:commentRss>http://sulhansetiawan.com/tutorial-belajar-mikrokontroler/feed</wfw:commentRss>
		<slash:comments>17</slash:comments>
		</item>
		<item>
		<title>Pertanyaan seputar buku &#8220;Mudah dan Menyenangkan Belajar Mikrokontroler&#8221;</title>
		<link>http://sulhansetiawan.com/pertanyaan-seputar-buku-mudah-dan-menyenangkan-belajar-mikrokontroler</link>
		<comments>http://sulhansetiawan.com/pertanyaan-seputar-buku-mudah-dan-menyenangkan-belajar-mikrokontroler#comments</comments>
		<pubDate>Sat, 31 Jan 2009 23:47:50 +0000</pubDate>
		<dc:creator>Sulhan</dc:creator>
				<category><![CDATA[buku Mikrokontroler]]></category>
		<category><![CDATA[Belajar Mikrokontroler]]></category>
		<category><![CDATA[Mikrokontroler]]></category>

		<guid isPermaLink="false">http://sulhansetiawan.com/?p=469</guid>
		<description><![CDATA[
Seorang pembaca buku Mudah dan Menyenangkan Belajar Mikrokontroler bertanya sebagai berikut:


Pada listing program jam digital yang sudah ada tombol (hal. 91), tolong jelaskan lebih lanjut tentang penggunaan dan perhitungan Timer 0 Mode 2 sehingga menghasilkan timer 1 detik yang akurat.
Tolong jelaskan lebih lanjut tentang cara kerja listing pengambilan data tombol (hal. 119).
Bagaimana cara menggunakan deklarasi [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><a href="http://sulhansetiawan.com/img/BkMdhMnynangknTnyKnp.jpg"><img class="aligncenter" title="BkMdhMnynangknTnyKnp" src="http://sulhansetiawan.com/img/BkMdhMnynangknTnyKnp.jpg" alt="" width="73" height="97" /></a></p>
<p style="text-align: justify;">Seorang pembaca buku <a title="Mudah dan Menyenangkan Belajar Mikrokontroler" href="http://sulhansetiawan.com/buku/mudah-dan-menyenangkan-belajar-mikrokontroler/">Mudah dan Menyenangkan Belajar Mikrokontroler</a> bertanya sebagai berikut:</p>
<p><a name="Top"></a></p>
<ol style="text-align: justify;">
<li style="text-align: justify;"><a href="#1">Pada listing program jam digital yang sudah ada tombol (hal. 91), tolong jelaskan lebih lanjut tentang penggunaan dan perhitungan Timer 0 Mode 2 sehingga menghasilkan timer 1 detik yang akurat.</a></li>
<li style="text-align: justify;"><a href="#2">Tolong jelaskan lebih lanjut tentang cara kerja listing pengambilan data tombol (hal. 119).</a></li>
<li style="text-align: justify;"><a href="#3">Bagaimana cara menggunakan deklarasi variabel dalam listing berekstensi *.M51 seperti: ~byte, ~bit,~word, dan ~array?</a></li>
<li style="text-align: justify;"><a href="#4">Bagaimana cara menggunakan tool: virtual LCD, tombol, MXLED, dalam simulator?</a></li>
<li style="text-align: justify;"><a href="#5">Nah, pertanyaan  selanjutnya mungkin tidak berhubungan dengan buku, namun masih seputar mikrokontroler. Bagaimana membuat 1 tombol menjadi 2 fungsi? Misalnya kita pasang tombol di P3.0. Jika ditekan 1x maka  akan  menjalankan subprogram A dan jika ditekan 2x akan menjalankan subprogram B.</a></li>
<li style="text-align: justify;"><a href="#6">Mas, saya mencoba membuat rangkaian PCB jam  dan  saya memasukan listing program debouncing 2.HEX. Hasilnya memang berjalan dengan sempurna. Tapi saat tombol pengubah menit atau jam ditekan, 7segment tidak langsung berubah angkanya tapi menunggu dulu program menyelesaikan  hitungan  menit. Bagaimana cara agar langsung berubah?</a></li>
</ol>
<p style="text-align: justify;">Dan inilah jawabannya:</p>
<ol><a name="1"></a></p>
<li style="text-align: justify;">
<h4>Timer 1 detik yang akurat.</h4>
<p>Sebenarnya keterangan di buku sudah cukup jelas. Pertama, kristal yang digunakan adalah 11,0592MHz. Dengan demikian kecepatan siklus mesin adalah 921,6KHz (11,0592MHz/12). Kedua, TH0 diisi #0, yang artinya interupsi timer0 akan dipanggil setiap 256 siklus mesin. Ingat bahwa TH=256-interval atau interval=256-TH. Dengan demikian interval pemanggilan adalah 256 siklus mesin.</p>
<p>Dari kedua data tadi kita bisa menghitung kecepatan pemanggilan terhadap interupsi timer0 adalah 3600Hz (921,6KHz/256). Nah, untuk memperoleh 1 detik, kita harus membagi lagi interval ini dengan 3600. Jadi kita melakukannya dengan dua tingkatan, yaitu dibagi dengan 225 (3600/225=16), kemudian kita bisa langsung membagi hasilnya dengan 16 untuk memperoleh frekuensi 1Hz. Akan tetapi karena kita membutuhkan frekuensi 2Hz untuk mengatur kedipan titik, maka kita tidak membagi dengan 16 tetapi dengan 8.</p>
<p>Frekuensi 1Hz diperoleh dengan flip-flop yang merupakan pembagi 2. Flip-flop ini diperoleh dengan menggunakan perintah cpl pada sebuah bendera (Bendera1Detik). Semoga cukup jelas.</p>
<p><a href="#Top">Kembali ke atas</a></p>
<p><a name="2"></a></li>
<li style="text-align: justify;">
<h4>Teknik mengambil data tombol dengan debouncing.</h4>
<p>Potongan program tersebut akan mengambil data beberapa tombol secara bersamaan dan telah dilakukan debouncing. Jadi kita bisa menggunakan sembarang tombol dan tidak perlu kuatir dengan yang namanya bounce. Cara menggunakannya tinggal dipanggil saja nama prosedurnya, yaitu &#8220;AmbilTombol&#8221;.</p>
<p>Setelah pemanggilan terhadap prosedur ini, maka Acc akan berisi data tombol. Sebagai contoh, jika tombol dipasang pada bit0 dan bit1, maka setelah pemanggilan prosedur ini, A akan berisi 0 jika tidak ada tombol yang ditekan, 1 jika tombol pada bit0 saja yang ditekan, 2 jika tombol pada bit1 saja yang ditekan, dan 3 jika kedua tombol ditekan.</p>
<p>Tentu saja nilai yang dihasilkan tergantung di mana saja tombol dipasang. Kita tinggal melihat pada nilai bitnya. bit0 bernilai 1 dan bit2 bernilai 2. Tentang bagaimana hal itu terjadi, coba perhatikan pada flowchart yang disertakan. Pelajari baik-baik flowchart tersebut. Semoga cukup jelas.</p>
<p><a href="#Top">Kembali ke atas</a></p>
<p><a name="3"></a></li>
<li style="text-align: justify;">
<h4>Alokasi memori untuk variabel dengan teknik yang memudahkan jika terjadi perubahan.</h4>
<p>Variabel ~byte, ~bit, ~word, dan ~array adalah cara yang relatif mudah untuk mengatur lokasi memory dibanding dengan mengatur lokasi memori dengan cara seperti:</p>
<pre>  Buffer  equ 8  ;misalkan butuh 4 byte

  Angka   equ 12

  Puluhan equ 13

  Satuan  equ 14</pre>
<p>Akan lebih mudah jika kita menggunakan:</p>
<pre>  ~Array 4 Buffer

  ~byte Angka Puluhan Satuan</pre>
<p>Dengan cara yang kedua, kita akan menempatkan Buffer pada lokasi 8, Angka pada lokasi 12, Puluhan pada lokasi 13, dan Satuan pada lokasi 14. Dan secara otomatis akan ada sebuah konstanta yang menyimpan posisi tertinggi dari lokasi memori yang tidak digunakan. Pada posisi inilah sebaiknya stack disimpan untuk inisiasinya. Konstanta ini diberi nama SaveStack. Dengan demikian, kita bisa menginisiasi stack dengan:</p>
<pre>  mov SP,#SaveStack</pre>
<p>dan itu akan sama artinya dengan:</p>
<pre>  mov SP,#14</pre>
<p>karena lokasi tertinggi yang digunakan adalah 14.</p>
<p>Jika kita menggunakan cara yang pertama dan kita hendak mengubah kebutuhan memori untuk Buffer menjadi hanya 2 byte saja, kita akan mengaturnya menjadi:</p>
<pre>  Buffer  equ 8

  Angka   equ 10

  Puluhan equ 11

  Satuan  equ 12</pre>
<p>dan pada inisiasi stack menjadi:</p>
<pre>  mov SP,#12</pre>
<p>Nah, kita harus mengubah semua angka pada pengaturan lokasi memorinya. Tapi jika kita menggunakan cara yang kedua, maka kita cukup mengganti bilangan 4 menjadi 2 pada deklarasi ~array seperti:</p>
<pre>  ~Array 2 Buffer

  ~byte Angka Puluhan Satuan</pre>
<p>atau karena Buffer hanya membutuhkan 2 byte, maka kita bisa menggantinya dengan tipe ~word seperti:</p>
<pre>  ~word Buffer

  ~byte Angka Puluhan Satuan</pre>
<p>Perhatikan bahwa kita hanya mengubah bagian deklarasi Buffer dan tidak ada bagian lain yang kita ubah.</p>
<p>Sedangkan variabel ~bit merupakan variabel berukuran 1 bit yang ditempatkan pada lokasi 20H.0 hingga 3FH.7.</p>
<p>Penempatan semua variabel tersebut selalu akan mencari lokasi terbawah yang masih kosong dimulai dari alamat 8 (default) atau bisa dipindah ke posisi tertentu menggunakan ~basequ.</p>
<p>Dan sebenarnya tentang ini juga sudah ada di lampiran pada buku. Semoga cukup jelas.</p>
<p><a href="#Top">Kembali ke atas</a></p>
<p><a name="4"></a></li>
<li style="text-align: justify;">
<h4>&#8220;Virtual LCD&#8221; (Simulasi LCD), &#8220;MXLED&#8221; (Simulasi Matriks LED), dan &#8220;Tombol&#8221; (Simulasi tombol dengan keyboard).</h4>
<ul>
<li>&#8220;Virtual LCD&#8221; bisa digunakan untuk percobaan yang membutuhkan tampilan karakter yang cukup banyak. Simulasi ini bisa dihubungkan dengan rangkaian nyata menggunakan koneksi serial. Lihat Bab 19 buku &#8220;Mudah dan Menyenangkan Belajar Mikrokontroler&#8221;. Akan tetapi simulasi ini juga bisa digunakan dari simulator dengan &#8220;Link Message&#8221;. Untuk melakukan hal tersebut, pilih Com yang digunakan berupa &#8220;Message&#8221;. Jika Data penekanan tombol keyboard hendak dikirim ke simulator melalui komunikasi serial (diterima di SBUF), maka &#8220;Message yang dikirim&#8221; harus diisi dengan 1035. Sedangkan jika data diinginkan untuk diterima oleh port, maka &#8220;Message yang dikirim&#8221; adalah 1034 dan &#8220;lParam yang dikirim&#8221; diisi dengan nomor port, yaitu 0, 1, 2, atau 3. Disamping itu &#8220;Handle&#8221; harus mengarah ke simulator yang aktif. Kita bisa menggunakan tombol &#8220;Capture Handle&#8221; kemudian klik pada jendela simulator yang dituju. Selain melakukan pengaturan pada &#8220;Virtual LCD&#8221;, port simulator juga harus disesuaikan. Jika simulator ingin mengirimkan data ke &#8220;Virtual LCD&#8221; melalui simulasi serial, maka Com harus menggunakan &#8220;Message&#8221; dan mengatur &#8220;Handle&#8221; agar mengarah ke &#8220;Virtual LCD&#8221; yang dituju dengan &#8220;Message yang dikirim&#8221; berupa WM_USER (1024). Sedangkan jika simulator hendak mengirim datanya melalui port, maka yang diatur adalah port untuk di &#8220;Link Message&#8221; ke arah &#8220;Virtual LCD&#8221; tersebut.</li>
<li>&#8220;MXLED&#8221; merupakan simulasi Matriks LED. Simulasi ini juga menerima data melalui &#8220;Link Message&#8221; dari pengaturan port pada simulator. Karena penjelesalannya agak panjang, maka saya tempatkan pada post tersendiri yaitu di <a href="http://sulhansetiawan.com/mikrokontroler/experiment/menampilkan-gambar-pada-led-matriks-menggunakan-simulator/">Menampilkan Gambar pada LED Matriks Menggunakan Simulator.</a></li>
<li>Untuk &#8220;Tombol&#8221;, jika pengaturan port pada simulator menggunakan &#8220;Link Message&#8221;, maka penekanan keyboard pada &#8220;Tombol&#8221; akan dikirim ke simulator. &#8220;Tombol&#8221; sendiri tidak membutuhkan pengaturan, karena secara otomatis dia akan mencari simulator yang sedang aktif.</li>
</ul>
<p><a href="#Top">Kembali ke atas</a></p>
<p><a name="5"></a></li>
<li style="text-align: justify;">
<h4>Satu tombol untuk banyak fungsi.</h4>
<p>Pemrograman tombol yang seperti itu membutuhkan pewaktuan yang cukup teliti. Pertama adalah melakukan pengecekkan apakah tombol ditekan atau tidak. Jika ya, maka dimulailah proses pendeteksian tombol.</p>
<p>Pendeteksian tombol ini pada dasarnya adalah sama dengan debouncing lainnya, yaitu menunggu sampai tombol dilepas lagi, tapi jika tombol telah dilepas tidak langsung menganggap bahwa tombol telah dilepas. Ada sebuah waktu minimum sehingga tombol yang telah dilepas benar-benar dianggap telah dilepas. Jika waktu tersebut tidak tercapai, maka penekanan tombol berikutnya masih akan dianggap sebagai bagian dari penekanan tombol sebelumnya.</p>
<p>Sekarang jika tombol telah memenuhi syarat untuk dianggap telah dilepas, artinya waktu tunggu minimum (debouncing timeout) terlampaui. Program tidak langsung melakukan aksi tertentu tetapi hanya menaikkan variabel yang menyatakan jumlah penekanan tombol, kemudian menunggu lagi adanya penekanan tombol berikutnya. Hal ini dilakukan dengan membuat bendera yang menyatakan bahwa program sedang menunggu penekanan tombol lagi. Waktu tunggu ini sekarang kita sebut sebagai &#8220;next press timeout&#8221;. Jika tombol ditekan lagi sebelum waktu tunggu terlampaui, maka penekanan tersebut hanya akan menaikkan perhitungan jumlah penekanan. Program hanya akan memproses data penekanan tombol hanya jika &#8220;next press timeout&#8221; terlampaui.</p>
<p>Anda bisa mendownload <a title="SatuTombol.zip 3,03KB" href="http://sulhansetiawan.com/microsource/SatuTombol.zip">program contoh</a> yang merupakan penghitung dua digit 0 &#8211; 99. Port0 digunakan untuk mengirimkan data segment, Port1 untuk kendali digit, sedangkan Port3.0 digunakan sebagai tombol. Untuk menaikkan hitungan, kita harus menekan tombol sekali. Sedangkan untuk menurunkan hitungan, kita harus menekan tombol dua kali dengan interval yang cepat. Kita juga bisa langsung mencapai nilai 99 dengan cara menekan tombol empat kali dengan cepat. Sedangkan untuk lansung mengembalikan ke 0, maka kita harus menekan tombol tiga kali dengan cepat.</p>
<p>Dari contoh ini, kita bisa menggunakan satu tombol untuk banyak aksi. Akan tetapi ingat, jika Anda membuat program dan ada fungsi yang dijalankan dengan cara menekan tombol secara cepat hingga sepuluh kali, bisa dipastikan akan tidak nyaman dalam penggunaannya <img src='http://sulhansetiawan.com/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' /> </p>
<p><a href="#Top">Kembali ke atas</a></p>
<p><a name="6"></a></li>
<li style="text-align: justify;">
<h4>Revisi contoh program jam digital dengan tombol yang di <em>debouncing.</em></h4>
<p>Setelah saya cek kembali, mamang ada yang kurang dan ada beberapa yang salah. Seharusnya pada MainLoop susunannya adalah seperti:</p>
<pre>              mov   R4,#NoMode     ;R4 =status mode

   MainLoop0: acall IsiBuffer

   MainLoop:  acall AmbilTombol</pre>
<p>Dan setiap selesai melakukan perubahan pada data baik menit ataupun jam, maka melompatnya adalah ke arah MainLoop0 dan bukan ke MainLoop. Selain itu, konstanta untuk penekanan tombol seharusnya adalah:</p>
<pre>   S1ditekan   equ   00010000b ;aslinya =00001000b

   S2ditekan   equ   00100000b ;aslinya =00010000b

   S1S2ditekan equ   00110000b ;aslinya =00011000b</pre>
<p>Dan penyaringan tombol pada &#8220;AmbilTombol&#8221; seharusnya:</p>
<pre>   AmbilTombol_:

               mov   A,P3

               cpl   a            ;pembalikan data

               anl   A,#00110000b ;aslinya =00011000b

               ret</pre>
<p>Kesalahan tersebut mengakibatkan pembacaan tombol menjadi keliru karena posisi tombol berada pada P3.4 dan P3.5 bukan pada P3.3 dan P3.4. Akan tetapi saya telah membuat versi revisinya dengan sedikit tambahan sehingga saat status mode berada pada ModeJam, maka digit jam akan dikedipkan. Demikian juga saat status mode berada pada ModeMenit, maka digit menit juga akan dikedipkan. Dengan demikian pemakai tahu apa yang akan terjadi jika tombol ditekan. Listing program revisi bisa didownload <a title="Debouncing2rev.zip 1,53KB" href="http://sulhansetiawan.com/microsource/Debouncing2rev.zip">di sini</a>.</p>
<p><a href="#Top">Kembali ke atas</a></li>
</ol>
<p style="text-align: justify;">Yang bisa didownload dari post ini:</p>
<ol>
<li><a title="SatuTombol.zip 3,03KB" href="http://sulhansetiawan.com/microsource/SatuTombol.zip">Contoh program satu tombol banyak fungsi</a></li>
<li><a title="Debouncing2rev.zip 1,53KB" href="http://sulhansetiawan.com/microsource/Debouncing2rev.zip">Revisi program Debouncing 2</a></li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://sulhansetiawan.com/pertanyaan-seputar-buku-mudah-dan-menyenangkan-belajar-mikrokontroler/feed</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>Menggunakan MXLED.EXE untuk simulasi matriks LED</title>
		<link>http://sulhansetiawan.com/menggunakan-mxledexe-untuk-simulasi-matriks-led</link>
		<comments>http://sulhansetiawan.com/menggunakan-mxledexe-untuk-simulasi-matriks-led#comments</comments>
		<pubDate>Sat, 31 Jan 2009 23:37:14 +0000</pubDate>
		<dc:creator>Sulhan</dc:creator>
				<category><![CDATA[Simulator]]></category>
		<category><![CDATA[Belajar Mikrokontroler]]></category>
		<category><![CDATA[Matriks LED]]></category>
		<category><![CDATA[Mikrokontroler]]></category>
		<category><![CDATA[Simulasi]]></category>

		<guid isPermaLink="false">http://sulhansetiawan.com/?p=467</guid>
		<description><![CDATA[MXLED dikendalikan menggunakan dua buah port, yaitu sebuah Port sebagai port data dan sebuah lagi sebagai port kendali. Baik port data maupun port kendali diterima sebagai message pada WM_USER dengan sinyal pada wParam. Untuk menentukan bahwa sinyal yang diterima merupakan data atau kendali, MXLED akan melihat pada lParam. Jika lParam=2, maka sinyal yang diterima merupakan [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">MXLED dikendalikan menggunakan dua buah port, yaitu sebuah Port sebagai port data dan sebuah lagi sebagai port kendali. Baik port data maupun port kendali diterima sebagai message pada WM_USER dengan sinyal pada wParam. Untuk menentukan bahwa sinyal yang diterima merupakan data atau kendali, MXLED akan melihat pada lParam. Jika lParam=2, maka sinyal yang diterima merupakan sinyal untuk data. Sedangkan jika lParam=1, maka sinyal yang diterima merupakan sinyal kendali.</p>
<p style="text-align: justify;">Ada enam buah ukuran yang disediakan oleh MXLED, yaitu 8&#215;16, 8&#215;32, 8&#215;48, 16&#215;16, 16&#215;32, dan 16&#215;48. Untuk setiap ukuran tersebut ada dua pilihan orientasi, yaitu landscape dan portrait.</p>
<p style="text-align: justify;">Sinyal kendali hanya menggunakan bit.0 dan bit.1 saja. bit.0 digunakan untuk mereset counter, sedangkan bit.1 digunakan untuk menaikkan counter.</p>
<p style="text-align: justify;">Sinyal data digunakan untuk menentukan led mana yang menyala dan led mana yang padam. Untuk setiap saatnya, hanya ada delapan buah led yang dikendalikan, yaitu led pada kolom yang sedang aktif. Untuk menentukan kolom mana yang aktif, kita menggunakan counter. Pada saat counter direset, maka kolom 0 aktif. kemudian jika kita memberikan sinyal clock, yaitu sinyal pada bit.1, maka kolom aktif akan berpindah ke kolom 1. Kemudian jika diberikan sinyal clock lagi, maka kolom yang aktif menjadi kolom 2. begitu seterusnya.</p>
<p style="text-align: justify;">Ada dua pilihan sinyal clock, yaitu transisi L ke H atau sebaliknya, yaitu transisi H ke L.</p>
<p style="text-align: justify;">Susunan kolom-kolom LED tergantung dari ukuran maupun orientasi. Untuk orientasi landscape, maka kolom sebelah kiri merupakan kolom bawah dan semakin ke kanan semakin naik. Ini berlaku untuk ukuran 8x. Sedangkan untuk ukuran 16x, maka susunan LED dibagi menjadi dua blok baris. Nomor kolom pertama pada blok baris kedua adalah nomor kolom terakhir blok baris pertama ditambah 1.</p>
<p>Lebih jelasnya adalah sebagai berikut:</p>
<pre>16x16

Baris0..7 : 0  1  2  ......15

Baris8..15: 16 17 18 ......31

16x32

Baris0..7 : 0  1  2  ......31

Baris8..15: 32 33 34 ......63

16x48

Baris0..7 : 0  1  2  ......47

Baris8..15: 48 49 50 ......95</pre>
<p style="text-align: justify;">Untuk setiap block baris, bit.0 akan mengendalikan LED paling atas, sedangkan bit.7 akan mengendalikan LED paling bawah.</p>
<p style="text-align: justify;">Untuk orientasi portrait, kita membagi LED menjadi kolom atau blok kolom dan baris. Counter akan menentukan baris yang aktif. Baris paling atas adalah baris 0, dan akan aktif jika sinyal reset diaktifkan. Baris aktif akan menaik seiring dengan didapatnya sinyal clock.</p>
<p style="text-align: justify;">Untuk ukuran 8x, kolom 0 adalah kolom paling kiri dan diaktifkan oleh bit.0. Sedangkan kolom 7 adalah kolom paling kanan dan diaktifkan oleh bit.7</p>
<p style="text-align: justify;">Ketentuan untuk ukuran 16x bisa dianalogikan dari posisi pada orientasi landscape.</p>
<p style="text-align: justify;">MXLED disimulasikan untuk bekerja seperti pada sistem matriks yang sesungguhnya. Jika kita mengatur perubahan baris atau kolom aktifnya dengan lambat, maka hanya akan terlihat delapan lampu yang bergerak melompat-lompat. Akan tetapi jika perubahannya cukup cepat, maka perubahan nyala lampu-lampunya akan terlihat mantap tidak berkedip. Jadi simulasi MXLED akan terasa seperti matriks led sungguhan.</p>
<p style="text-align: justify;">Anda bisa melihat contoh penggunaan MXLED ini pada contoh <a href="http://sulhansetiawan.com/mikrokontroler/experiment/menampilkan-gambar-pada-led-matriks-menggunakan-simulator/">Menampilkan Gambar pada LED Matriks Menggunakan Simulator</a></p>
<p style="text-align: justify;">
]]></content:encoded>
			<wfw:commentRss>http://sulhansetiawan.com/menggunakan-mxledexe-untuk-simulasi-matriks-led/feed</wfw:commentRss>
		<slash:comments>21</slash:comments>
		</item>
		<item>
		<title>IndexMaker &#8211; Membuat index.html untuk koleksi file html downloadan dari internet</title>
		<link>http://sulhansetiawan.com/indexmaker-membuat-indexhtml-untuk-koleksi-file-html-downloadan-dari-internet</link>
		<comments>http://sulhansetiawan.com/indexmaker-membuat-indexhtml-untuk-koleksi-file-html-downloadan-dari-internet#comments</comments>
		<pubDate>Mon, 22 Dec 2008 05:29:59 +0000</pubDate>
		<dc:creator>Sulhan</dc:creator>
				<category><![CDATA[File Management]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[Software GRATIS!]]></category>

		<guid isPermaLink="false">http://sulhansetiawan.com/?p=417</guid>
		<description><![CDATA[Saya suka mengoleksi file-file html yang berisi berbagai macam informasi yang biasanya saya peroleh dari internet.
Ada beberapa kumpulan file yang saya peroleh dalam bentuk paket, misalnya adalah berbagai file untuk tutorial. Untuk file-file yang seperti ini biasanya saya langsung mendapatkan file index.html yang berfungsi untuk mengakses semua file lainnya dengan mudah.
Kumpulan file html yang lain [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Saya suka mengoleksi file-file html yang berisi berbagai macam informasi yang biasanya saya peroleh dari internet.</p>
<p style="text-align: justify;">Ada beberapa kumpulan file yang saya peroleh dalam bentuk paket, misalnya adalah berbagai file untuk tutorial. Untuk file-file yang seperti ini biasanya saya langsung mendapatkan file index.html yang berfungsi untuk mengakses semua file lainnya dengan mudah.</p>
<p style="text-align: justify;">Kumpulan file html yang lain ada yang saya peroleh dengan mengambil dari situs tertentu menggunakan software semacam teleport, sehingga semua link yang terdapat pada situs tersebut akan secara otomatis diambil dan tentu saja kita juga secara otomatis mendapatkan file indexnya.</p>
<p style="text-align: justify;">Kumpulan file jenis ketiga adalah file-file yang diperoleh dari berbagai macam sumber yang kemudian saya tempatkan pada direktori tertentu yang saya beri nama sesuai dengan kategori dari isi file-file tersebut. Akan tetapi karena file-file tersebut saya peroleh dari mengumpulkan dari berbagai sumber, maka tentu saja pada direktori tersebut tidak memiliki file index.html yang berfungsi untuk mempermudah penjelajahan isinya. Akibatnya, untuk mengakses file-file pada direktori tersebut saya harus bolak-balik dari windows explorer untuk melakukan klik ganda dari sana, kemudian menuju browser seperti internet explorer atau opera (dll).</p>
<p style="text-align: justify;">Cara browsing file seperti di atas bukanlah cara yang menyenagkan. Pertama, kita harus bolak-balik untuk mengaktifkan windows explorer, kemudian kembali pada browser, dan setelah selesai membaca, kita kembali lagi pada windows explorer. Kedua, jumlah window untuk browser yang dibuka jadi terus bertambah, atau jika kita menggunakan browser yang mendukung multiple tab, maka jumlah tab yang dibuka juga semakin bertambah. Hal ini menyebabkan kita harus menambah pekerjaan ekstra yaitu menutup window atau tab tersebut. Ketiga, kita jadi kurang bisa mengikuti file mana saja yang telah kita buka dan file mana yang belum. Keempat, ini adalah akibat sampingan dari menutup window-window yang terbuka yang jumlahnya membuat desktop kita terasa sempit, atau menutup tab-tab pada browser yang jumlahnya sudah terlalu banyak sehingga kita bahkan kesulitan untuk membaca judul tabnya. Nah setelah kita tutup, terkadang kita harus kembali lagi untuk membaca file yang sudah ditutup tersebut. Akibatnya kita harus kembali lagi ke windows explorer untuk kembali klik ganda file yang mau kita buka lagi tersebut. Huh, menyebalkan <img src='http://sulhansetiawan.com/wp-includes/images/smilies/icon_sad.gif' alt=':-(' class='wp-smiley' /> </p>
<p style="text-align: justify;">Ada solusi lebih baik, yaitu kita membuat sendiri file index.html yang berguna untuk mempermudah browsing. Sayangnya jika koleksi file pada direktori tersebut cukup banyak, maka pekerjaan membuat index.html ini menjadi sangat membosankan. Wah, kita sudah harus merasa bosan sebelum kita sempat browsing. Kalau kategori pada direktori tersebut adalah kategori cerita seru, cerita seram, atau bahkan mungkin cerita saru <img src='http://sulhansetiawan.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' />  mungkin upaya membuat index.html yang membosankan tersebut akan segera terobati setelah kita membaca cerita s?r* tersebut. Akan tetapi jika kategori pada direktori tersebut adalah kategori cerita serius (ilmu pengetahuan) yang masih berpola s?r*, tetapi isinya seringkali membuat kepala pusing, maka kita benar-benar mendapatkan siksaan. Bosan, kemudian pusing, Huuuh <img src='http://sulhansetiawan.com/wp-includes/images/smilies/icon_sad.gif' alt=':-(' class='wp-smiley' /> </p>
<p style="text-align: justify;">Nah daripada saya harus medapatkan siksaan tersebut, maka akhirnya saya membuat program untuk membuat file index.html tersebut secara otomatis. Program tersebut saya beri nama <strong><a title="IndexMaker.zip (21,1KB)" href="http://sulhansetiawan.com/software/IndexMaker.zip">IndexMaker.exe</a></strong>.</p>
<p style="text-align: justify;">Cara menggunakan IndexMaker.exe sangatlah mudah. Kita cukup menempatkan program tersebut di direktori tempat berkumpulnya koleksi file-file txt, html, htm, atau mht. Setelah itu, klik ganda IndexMaker.exe untuk menjalankannya. Nah, IndexMaker.exe akan menambahkan sebuah file index.html yang merupakan file html yang berfungsi untuk mempermudah browsing direktori tersebut, file toc.html yang merupakan daftar isi dari file-file html, htm, dan mht pada direktori tersebut, dan yang terkhir adalah file cover.html yang akan tampil saat pertamakali kita membuka file index.html. Nah file yang terakhir ini sebaiknya dimodifikasi untuk mempercantik tampilan.</p>
<p style="text-align: justify;">Anda juga dapat mendaftarkan IndexMaker ke dalam registry sehingga kita bisa dengan mudah membuat index.html untuk semua folder hanya dengan klik kanan folder yang akan dibuat indexnya, kemudian pilih <strong>Make Index.html</strong>. Caranya adalah dengan menjalankan IndexMaker dengan menambahkan switch -r. Sedangkan untuk menghapus IndexMaker dari registry, switch yang ditambahkan adalah -u. Atau Anda juga bisa menjalankan file Reg.bat atau Unreg.bat yang disertakan dalam bundel.</p>
<p style="text-align: justify;">Setiap kali IndexMaker dijalankan, pertama kali IndexMaker akan mendeteksi apakah pada direktori tersebut telah terdapat file index.html atau belum. Jika sudah, maka IndexMaker akan menanyakan apakah akan mengganti file tersebut atau tidak. Jika pilihannya adalah Y, maka file index.html akan diganti dengan yang baru dan meminta beberapa parameter yang dibutuhkan. Parameter-parameter ini kemudian disimpan pada file IndexMaker.con yang ditempatkan pada folder tersebut. Dengan adanya file IndexMaker.con, maka setiap kali ada perubahan file pada folder tersebut, kita cukup melakukan klik kanan pada folder tersebut dan pilih menu <strong>Make Index.html</strong> dan file toc.html akan segera diperbarui tanpa melakukan perubahan pada file index.html dan cover.html. Dengan demikian jika Anda telah melakukan modifikasi pada cover.html untuk mempercantik tampilan, maka file tersebut tidak akan mengalami perubahan. Satu-satunya file yang diupdate hanyalah toc.html.</p>
<p style="text-align: justify;">File IndexMaker.con sendiri merupakan file text yang berisi lima baris yang menentukan parameter-parameter pembuatan index. Baris pertama dari file ini akan menentukan title yang akan ditampilkan pada title bar dari browser. Beris kedua adalah isi yang akan ditampilkan pada cover.html. Baris ketiga menentukan apakah akan dilakukan penyingkatan nama file pada daftar di toc.html atau tidak. Pilihan untuk baris ini adalah Y atau N. Jika baris ini berisi Y, maka nama file yang panjangnya melebihi 23 karakter akan diambil 20 karakter pertamanya saja ditambah tiga titik (&#8230;). Baris keempat menentukan file apa saja yang akan didaftarkan ke toc.html. Penulisan ekstensinya dipisahkan dengan titik koma (;) dan tidak boleh ada spasi. Baris yang kelima, menentukan apakah pendaftaran file ke toc.html dilakukan juga sampai sub direktori yang terdapat dalam folder tersebut secara rekursif atau hanya mencatat file-file dalam direktori tersebut saja. Pilihan untuk baris ini juga Y atau N. Baris yang terakhir, yaitu baris keenam, menentukan tipe penamaan alamat pada address bar. Jika kita memberikan nilai Y, maka alamat pada address bar akan bergaya seperti menggunakan cgi, yaitu menggunakan tanda tanya(?). Misalnya adalah: &#8230;./index.html?1. Sedangkan jika nilainya adalah N, maka alamat pada address bar akan selalu tetap yaitu index.html.</p>
<p style="text-align: justify;">Perlu diperhatikan, bahwa pilihan menggunakan pengalamatan menggunakan tanda tanya(?) tidak akan selalu berjalan mulus jika browser yang digunakan adalah internet explorer. Hal ini akan lebih terasa jika nama file-file pada direktori tersebut banyak menggunakan karakter-karakter yang aneh atau karakter-karekter yang tidak biasa digunakan untuk nama file seperti tanda plus (+).</p>
<p style="text-align: justify;">Dan terlepas dari apakah kita menggunakan alamat tetap atau alamat dengan tanda tanya, maka jika ada nama file pada direktori tersebut yang diawali dengan tanda (#), maka dipastikan bahwa link yang dibuat di dalam toc.html akan selalu gagal. Hal ini disebabkan oleh aturan bahwa href yang menggunakan tanda (#) akan mengacu pada anchor pada file yang sama. Dengan demikian browser tidak akan berpindah ke file yang lain akan tetapi akan tetap berada pada file yang aktif. Oleh karena itu, sebaiknya Anda tidak pernah menyimpan nama file html dengan awalan (#).</p>
<p style="text-align: justify;">Struktur yang dibentuk oleh IndexMaker.exe adalah membagi halaman menjadi dua bagian menggunakan frame, masing-masing adalah 20% untuk bagian kiri, yang akan diisi dengan toc.html, dan 80% untuk bagian kanan yang pertamakali akan diisi dengan cover.html. Jika kita klik daftar nama file yang terdapat pada frame kiri, maka file tersebut akan menggantikan isi dari cover.html. Nah dengan cara ini proses browsing menjadi jauh lebih nyaman.</p>
<p style="text-align: justify;">Dan sekarang saya tidak harus merasa bosan dahulu sebelum berpusing-pusing membaca halaman-halaman yang berisi petunjuk-petunjuk pemrograman. Setidaknya walaupun harus berpusing-pusing, tapi saya terbebas dari kebosanan <img src='http://sulhansetiawan.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p style="text-align: justify;">Kemudian saya berpikir bahwa mungkin banyak orang yang mengalami problem serupa dengan saya. Jadi, ketimbang program ini saya nikmati sendiri, alangkah lebih baiknya jika digunakan juga oleh orang lain yang membutuhkannya.</p>
<p style="text-align: justify;">Dan jika Anda juga termasuk orang yang pernah atau bahkan sedang mengalami masalah yang sama dengan saya, maka Anda sangat beruntung karena Anda tidak perlu lagi membuat file index.html tersebut secara manual. Anda cukup mendownload <strong><a title="IndexMaker.zip (21,1KB)" href="http://sulhansetiawan.com/software/IndexMaker.zip">IndexMaker.exe</a></strong> yang ukurannya relatif sangat kecil. Anda tidak perlu memikirkan berapa lama proses download akan selesai karena pasti sangat sebentar.</p>
<p style="text-align: justify;">Ok, selamat bersenag-senang.</p>
]]></content:encoded>
			<wfw:commentRss>http://sulhansetiawan.com/indexmaker-membuat-indexhtml-untuk-koleksi-file-html-downloadan-dari-internet/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>
