<?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>Widodo Budiharto</title>
	<atom:link href="http://widodo.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://widodo.com</link>
	<description>akademisi, pengusaha dan penulis</description>
	<lastBuildDate>Tue, 07 Sep 2010 05:46:17 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Aneka Proyek AVR</title>
		<link>http://widodo.com/praktikum/aneka-proyek-avr/</link>
		<comments>http://widodo.com/praktikum/aneka-proyek-avr/#comments</comments>
		<pubDate>Tue, 07 Sep 2010 05:30:29 +0000</pubDate>
		<dc:creator>widodo</dc:creator>
				<category><![CDATA[praktikum]]></category>

		<guid isPermaLink="false">http://widodo.com/?p=268</guid>
		<description><![CDATA[Here we intend to put links to some interesting projects with AVR microcontroller.
If you have seen or know project made with AVR microcontroller which you think may be interesting please let us know.
#001 MP3 players designed by Jesper Hansen
Set of four MP3 players made with Atmel AVRs. Open source software/hardware.
#002 Digital counter designed by Jesper [...]


No related posts.

Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[<p>Here we intend to put links to some interesting projects with AVR microcontroller.<br />
If you have seen or know project made with AVR microcontroller which you think may be interesting please let us know.</p>
<p><span style="color: #ff0000; font-size: medium;">#001 MP3 players designed by Jesper Hansen</span></p>
<p>Set of four <a href="http://www.myplace.nu/mp3" target="_blank">MP3 players</a> made with Atmel AVRs. Open source software/hardware.</p>
<p><span style="color: #ff0000; font-size: medium;">#002 Digital counter designed by Jesper Hansen</span></p>
<p><a href="http://www.myplace.nu/avr/countermeasures/index.htm" target="_blank">30-40MHz  digital counter</a> with AT90S2313. Open source software/hardware.</p>
<p><span style="color: #ff0000; font-size: medium;"><span id="more-268"></span>#003 Mini DSS (Direct Digital Synthesis) designed    by Jesper Hansen</span></p>
<p><a href="http://www.myplace.nu/avr/minidds/index.htm" target="_blank">Mini    DSS</a> with AT90S2313. Open source software/hardware.</p>
<p><span style="color: #ff0000; font-size: medium;">#004 Temperature controller designed by Jesper    Hansen</span></p>
<p><a href="http://www.myplace.nu/avr/thermo/index.htm" target="_blank">Temperature    controller</a> with AT90S2313 and DS1621. Open source software/hardware.</p>
<p><span style="color: #ff0000; font-size: medium;">#005 Guitar tuner designed by Jesper Hansen</span></p>
<p><a href="http://www.myplace.nu/avr/gtuner/index.htm" target="_blank">Guitar tuner</a> with AT90S2323. Open source software/hardware.</p>
<p><span style="color: #ff0000; font-size: medium;">#006 DDS VFO controlled with AT90S2313 designed    by T. Matsumoto</span></p>
<p><a href="http://www.try-net.or.jp/%7Ejr6end/e/oK.html" target="_blank">DDS VFO</a> with AT90S2323. HEX files and PCB patterns.</p>
<p><span style="color: #ff0000; font-size: medium;">#007 SMS messenger with AVR tiny designed by    Alberto Ricci Bitti </span></p>
<p><a href="http://www.riccibitti.com/tinyplanet/tiny_intro.htm" target="_blank">SMS  message</a> sender with ATtiny12.</p>
<p><span style="color: #ff0000; font-size: medium;">#008 TV DVM with AT90S1200 designed by Alberto    Ricci Bitti </span></p>
<p><a href="http://www.riccibitti.com/dvm.htm" target="_blank">TV DVM</a> with    AT90S1200.</p>
<p><span style="color: #ff0000; font-size: medium;">#009 Over 300 AVR projects done by students    in ECE 4760 at Cornell Universit</span></p>
<p><a href="http://instruct1.cit.cornell.edu/courses/ee476/FinalProjects/" target="_blank">ECE4760    projects</a> most done with ATMega32 class description and tutorials <a href="http://instruct1.cit.cornell.edu/courses/ee476/" target="_blank">here</a></p>


<p>No related posts.</p>
<p>Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://widodo.com/praktikum/aneka-proyek-avr/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sistem Monitoring Berbasis GSM SMS</title>
		<link>http://widodo.com/elektronika/sistem-monitoring-berbasis-gsm-sms/</link>
		<comments>http://widodo.com/elektronika/sistem-monitoring-berbasis-gsm-sms/#comments</comments>
		<pubDate>Fri, 03 Sep 2010 16:45:17 +0000</pubDate>
		<dc:creator>widodo</dc:creator>
				<category><![CDATA[elektronika]]></category>

		<guid isPermaLink="false">http://widodo.com/?p=264</guid>
		<description><![CDATA[Saat ini ramai para pengembang embedded system mengembangkan sistem monitoring berbasis GSM SMS.  Sistem ini akan mengirim informasi ke HP kita melaui modul GSM berbasis mikrokontroler.
Kita memiliki produk pengembangan sistem tersebut bernama SMART-51 GSM SMS yang terdiri dari sistem minimum 89s51 dan Modul GSM Starter kit berbasis SIM300, yang dapat mengirimkan informasi status 8 buah [...]


No related posts.

Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[<p>Saat ini ramai para pengembang embedded system mengembangkan sistem monitoring berbasis GSM SMS.  Sistem ini akan mengirim informasi ke HP kita melaui modul GSM berbasis mikrokontroler.</p>
<p>Kita memiliki produk pengembangan sistem tersebut bernama SMART-51 GSM SMS yang terdiri dari sistem minimum 89s51 dan Modul GSM Starter kit berbasis SIM300, yang dapat mengirimkan informasi status 8 buah input dan ADC.</p>
<p><a href="http://widodo.com/wp-content/uploads/2010/09/gsm.jpg" rel="lightbox[264]"><img class="aligncenter size-medium wp-image-265" title="gsm" src="http://widodo.com/wp-content/uploads/2010/09/gsm-300x225.jpg" alt="" width="300" height="225" /></a></p>
<p><span id="more-264"></span></p>
<p>berikut ini contoh kodenya<br />
$regfile = &#8220;reg51.dat&#8221;<br />
$crystal = 11059200<br />
$baud = 19200<br />
$timeout</p>
<p>Reset P2.2<br />
Waitms 200<br />
Config Lcd = 16 * 2<br />
Config Lcdpin = Pin , Db4 = P2.4 , Db5 = P2.5 , Db6 = P2.6 , Db7 = P2.7 , E = P2.1 , Rs = P2.0</p>
<p>Lcdinit<br />
Cursor Off<br />
Waitms 100<br />
Bl Alias P2.3<br />
Set Bl<br />
Rts Alias P3.2<br />
Reset Rts<br />
Cts Alias P3.3<br />
Set Cts<br />
Dtr Alias P3.4<br />
Set Dtr<br />
Dcd Alias P3.6<br />
Set Dcd<br />
Ring Alias P3.7<br />
Set Ring</p>
<p>Powersw Alias P1.0<br />
Reset Powersw<br />
Powerind Alias P1.2<br />
Set Powerind<br />
Netind Alias P1.4<br />
Set Netind</p>
<p>Dim X As Byte<br />
Dim Signal As Byte<br />
Dim Kar As Byte<br />
Dim Provider As String * 16<br />
Dim Q As String * 8</p>
<p>Config Timer0 = Timer , Mode = 1 , Gate = Internal<br />
Enable Timer0<br />
On Timer0 Cektime<br />
Enable Interrupts</p>
<p>Wait 1<br />
Cls<br />
Do<br />
If Powerind = 1 Then<br />
Lcd &#8220;Power is OFF&#8221;<br />
Wait 1<br />
Set Powersw<br />
Cls<br />
Lcd &#8220;Turning ON&#8230;&#8221;<br />
Wait 1<br />
Reset Powersw<br />
&#8216;      Wait 2<br />
End If<br />
If Powerind = 0 Then<br />
Cls<br />
Lcd &#8220;Power is ON&#8221;<br />
Wait 1<br />
Exit Do<br />
End If<br />
Loop</p>
<p>Cls<br />
Lcd &#8220;Searching&#8230;&#8221;</p>
<p>Bitwait Netind , Reset<br />
X = 0<br />
Signal = 0<br />
Do<br />
Waitms 200<br />
Start Timer0<br />
Bitwait Netind , Reset<br />
If X &gt; 29 Then<br />
Exit Do<br />
Else<br />
X = 0<br />
End If<br />
Incr Signal<br />
If Signal &gt; 100 Then<br />
Cls<br />
Lcd &#8220;No Network&#8221;<br />
Wait 2<br />
Cls<br />
Lcd &#8220;Please Reset or&#8221;<br />
Home Lower<br />
Lcd &#8220;Insert New SIM&#8221;<br />
Do<br />
Loop<br />
End If<br />
Loop</p>
<p>Cls<br />
Lcd &#8220;Network Found&#8221;<br />
Wait 1</p>
<p>Cls<br />
Lcd &#8220;Comm Testing&#8230;&#8221;<br />
Q = Chr(&amp;H0a) + &#8220;OK&#8221;<br />
Do<br />
Print &#8220;AT&#8221;<br />
Input Provider Timeout = 10000                             &#8216;dump read balasan GSM module<br />
Input Provider Timeout = 10000                             &#8216;real answer<br />
&#8216;   Lcd &#8220;AT &#8221; ; Provider<br />
If Provider = Q Then Exit Do<br />
Loop<br />
Waitms 250</p>
<p>Cls<br />
Reset Bl<br />
Lcd &#8220;Configuring&#8230;&#8221;<br />
Q = Chr(&amp;H0a) + &#8220;OK&#8221;<br />
Do<br />
Print &#8220;ATE0&#8243;<br />
Input Provider Timeout = 10000                             &#8216;dump read balasan GSM module<br />
Input Provider Timeout = 10000                             &#8216;real answer<br />
&#8216;   Lcd &#8220;ATEO &#8221; ; Provider<br />
If Provider = Q Then Exit Do<br />
Loop<br />
Waitms 250</p>
<p>Cls<br />
Lcd &#8220;Calling&#8230;&#8221;<br />
Print &#8220;AT+CHFA=1&#8243;<br />
Waitms 250</p>
<p>Print &#8220;ATD888;&#8221;                                               &#8216;disesuaikan dengan nomor CS masing2 provider<br />
Wait 1<br />
Cls</p>
<p>Lcd &#8220;5&#8243;<br />
Wait 1<br />
Home Upper<br />
Lcd &#8220;4&#8243;<br />
Wait 1<br />
Home Upper<br />
Lcd &#8220;3&#8243;<br />
Wait 1<br />
Home Upper<br />
Lcd &#8220;2&#8243;<br />
Wait 1<br />
Home Upper<br />
Lcd &#8220;1&#8243;<br />
Wait 1<br />
Home Upper<br />
Lcd &#8220;Hang Up&#8221;<br />
Print &#8220;ATH&#8221;<br />
Home Lower<br />
Lcd &#8220;Thank You&#8221;</p>
<p>Waitms 25</p>
<p>&#8230;&#8230;</p>
<p>Silahkan miliki alat ini, cocok untuk pengembangan TA/Riset, silahkan order di www.toko-elektronika.com.</p>


<p>No related posts.</p>
<p>Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://widodo.com/elektronika/sistem-monitoring-berbasis-gsm-sms/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Menjadi Penulis Buku</title>
		<link>http://widodo.com/tutorial/menjadi-penulis-buku/</link>
		<comments>http://widodo.com/tutorial/menjadi-penulis-buku/#comments</comments>
		<pubDate>Tue, 17 Aug 2010 13:39:10 +0000</pubDate>
		<dc:creator>widodo</dc:creator>
				<category><![CDATA[tutorial]]></category>

		<guid isPermaLink="false">http://widodo.com/?p=259</guid>
		<description><![CDATA[Dear All, bagi kamu-kamu yang senang menggoreskan pena, atau lebih  spesifik lagi yang berkecimpung di dunia pendidikan, sebagai seorang  pendidik tak dapat dipungkiri&#8230;menulis merupakan kemampuan utama yang  harus dimiliki.
Banyak teman-teman kita bertanya kepada daku, how  to start and how to publish our book.
Langkah-langkah  yang sering saya share ke mereka bahkan [...]


Related posts:<ol><li><a href='http://widodo.com/praktikum/panduan-dasar-menjadi-montir-radio-tapetvmonitorvcddvd/' rel='bookmark' title='Permanent Link: Panduan Dasar Menjadi Montir TV/DVD/RADIO-TAPE/TV/Monitor/VCD/DVD'>Panduan Dasar Menjadi Montir TV/DVD/RADIO-TAPE/TV/Monitor/VCD/DVD</a> <small>Pada tutorial ini, saya ingin membuka wawasan Anda bahwa jika...</small></li>
</ol>

Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[<p>Dear All, bagi kamu-kamu yang senang menggoreskan pena, atau lebih  spesifik lagi yang berkecimpung di dunia pendidikan, sebagai seorang  pendidik tak dapat dipungkiri&#8230;menulis merupakan kemampuan utama yang  harus dimiliki.</p>
<p>Banyak teman-teman kita bertanya kepada daku, how  to start and <em><strong>how to publish our book</strong></em>.</p>
<p>Langkah-langkah  yang sering saya share ke mereka bahkan Alhamdulillah sudah  banyak  yang berhasil, dapat saya jelaskan di sini:</p>
<p>1.  Jangan  pernah merasa Anda tidak mampu menulis, karena itu sudah menjadi 1  penghambat besar dalam diri Anda untuk maju.</p>
<p>2.  Banyak orang  berkata, saya tidak ada waktu, Omong kosong sih itu semua, &#8230;.sesuatu  yang berat mesti diniatkan dengan ikhlas.  Jika Anda ingin sukses  menulis, maka naikkan thread priority menulis  menjadi 1, manfaatkanlah  kemampuan <em>Multithreading</em> pada diri Anda.</p>
<p>3.  Bingung mau  menulis apa ? Cara termudahnya, menghayallah setinggi tingginya ingin  menulis apa, abaikan ucapan orang lain, toh yang sukses nanti  setidaknya  kita sendiri yang merasakan.</p>
<p>4. Ingin publish ? segera  kirimkan proposal Anda ke elexmedia/Andi Publisher/Graha Ilmu atau  penerbit bermutu lainnya.</p>
<p>So, dari sekarang, cobalah&#8230;. someday,  Anda akan memperoleh jauh lebih banyak manfaat dan keberkahan dari yang  telah Anda berikan ke orang lain melalui buku.<span id="more-259"></span></p>


<p>Related posts:<ol><li><a href='http://widodo.com/praktikum/panduan-dasar-menjadi-montir-radio-tapetvmonitorvcddvd/' rel='bookmark' title='Permanent Link: Panduan Dasar Menjadi Montir TV/DVD/RADIO-TAPE/TV/Monitor/VCD/DVD'>Panduan Dasar Menjadi Montir TV/DVD/RADIO-TAPE/TV/Monitor/VCD/DVD</a> <small>Pada tutorial ini, saya ingin membuka wawasan Anda bahwa jika...</small></li>
</ol></p>
<p>Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://widodo.com/tutorial/menjadi-penulis-buku/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Workshop Mikro dan Dasar Robotika</title>
		<link>http://widodo.com/uncategorized/workshop-mikro-dan-dasar-robotika/</link>
		<comments>http://widodo.com/uncategorized/workshop-mikro-dan-dasar-robotika/#comments</comments>
		<pubDate>Thu, 12 Aug 2010 02:12:03 +0000</pubDate>
		<dc:creator>widodo</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://widodo.com/uncategorized/workshop-mikro-dan-dasar-robotika/</guid>
		<description><![CDATA[Dear All, kita kembali mengadakan workshop Mikro AVR dan Robotika AVR/ Basic Stamp Based Dasar pada setiap hari pukul 8.00-12.00 WIB dan 13.00-17.00 WIB.
1. Pemrograman Mikrokontroler AVR dengan Bascom AVR,    Paket Kit Mikro Rp 600rb, dan biaya Workshop 300rb
2. Pemrograman Robotika dengan AVR,     Paket Kit Robot 900rb, dan biaya [...]


No related posts.

Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[<p>Dear All, kita kembali mengadakan workshop Mikro AVR dan Robotika AVR/ Basic Stamp Based Dasar pada setiap hari pukul 8.00-12.00 WIB dan 13.00-17.00 WIB.</p>
<p>1. Pemrograman Mikrokontroler AVR dengan Bascom AVR,    Paket Kit Mikro Rp 600rb, dan biaya Workshop 300rb</p>
<p>2. Pemrograman Robotika dengan AVR,     Paket Kit Robot 900rb, dan biaya Workshop 400rb.</p>
<p>3. Pemrograman Robotika dengan Basic Stamp    Paket Kit Robot 1.6 juta, dan biaya workshop 400rb.</p>
<p>Silahkan kontak Bpk. Widodo di 081410043883 untuk booking dan pembayaran, paling lambat 4 hari sebelum workshop.    Salam,  CV Pusat e-Technology</p>


<p>No related posts.</p>
<p>Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://widodo.com/uncategorized/workshop-mikro-dan-dasar-robotika/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Membuat USB AVR Programmer</title>
		<link>http://widodo.com/praktikum/membuat-usb-avr-programmer/</link>
		<comments>http://widodo.com/praktikum/membuat-usb-avr-programmer/#comments</comments>
		<pubDate>Fri, 04 Jun 2010 06:39:14 +0000</pubDate>
		<dc:creator>widodo</dc:creator>
				<category><![CDATA[praktikum]]></category>

		<guid isPermaLink="false">http://widodo.com/?p=235</guid>
		<description><![CDATA[USBASP is well known USB programmer for Atmel AVR microcontrollers originally supported by  Thomas Fischl. USB ASP is made of an Atmega8 and few components. The programmer uses a firmware driver that makes this programmer attractive to many amateurs.
Another thin why this programmer is so popular â€“ because it is officially included and supported [...]


No related posts.

Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[<p>USBASP is well known USB programmer for Atmel AVR microcontrollers originally supported by  <a href="http://www.fischl.de/" target="_blank">Thomas Fischl.</a> USB ASP is made of an Atmega8 and few components. The programmer uses a firmware driver that makes this programmer attractive to many amateurs.</p>
<p>Another thin why this programmer is so popular â€“ because it is officially included and supported in WinAVR (now version 20070122).</p>
<p>Once again lets see what this programmer is made off and how to set it up.<a href="http://widodo.com/wp-content/uploads/2010/06/usb_asp_cir.png" rel="lightbox[235]"><img class="aligncenter size-medium wp-image-236" title="usb_asp_cir" src="http://widodo.com/wp-content/uploads/2010/06/usb_asp_cir-300x186.png" alt="" width="300" height="186" /></a><span id="more-235"></span></p>
<p>The core of USBASP adapter is Atmega8 microcontroller clocked by 12MHz crystal. Soldered board is ready to be connected via simple USB cable with B type connector (Computer side needs A type of connector). Resistors R2 and R6 are current limiting resistors, that protect computer USB port. Resistor R7 helps computer to recognize device as LS (Low Speed). Diodes D1 and D2 indicates about data transfer. Header SV1 is compatible with STK200/300 just 4 and 6 pins are used for RXD and TXD (may be used for other purposes).</p>
<p><a href="http://widodo.com/wp-content/uploads/2010/06/STK200.png" rel="lightbox[235]"><img class="aligncenter size-medium wp-image-237" title="STK200" src="http://widodo.com/wp-content/uploads/2010/06/STK200-300x280.png" alt="" width="300" height="280" /></a>SCK signal can work at two frequencies <span style="text-decoration: line-through;">1.5MHz and 8MHz</span> 375kHz and 8kHz which can be selected by Jumper JP3. If Jumper is unconnected, then SCK speed is <span style="text-decoration: line-through;">8MHz</span> 375kHz. Low speed SCK is used when MCU is clocked with low speed oscillator like 32kHz.</p>
<p><a href="http://widodo.com/wp-content/uploads/2010/06/USB_ASP_block.png" rel="lightbox[235]"><img class="aligncenter size-medium wp-image-238" title="USB_ASP_block" src="http://widodo.com/wp-content/uploads/2010/06/USB_ASP_block-300x176.png" alt="" width="300" height="176" /></a></p>
<p>Jumper JP1 is used for programming adapter itself via ISP adapter. And last Jumper JP2 is used for powering adapter from USB port (not recommended).</p>
<p>This is how my adapter looks like:</p>
<p><a href="http://widodo.com/wp-content/uploads/2010/06/USBASP_Device_close.jpg" rel="lightbox[235]"><img class="aligncenter size-medium wp-image-239" title="USBASP_Device_close" src="http://widodo.com/wp-content/uploads/2010/06/USBASP_Device_close-300x122.jpg" alt="" width="300" height="122" /></a></p>
<p>To make this adapter work you need to program Atmega8 with driver firmware which can be downloaded from <a href="http://www.fischl.de/usbasp/">http://www.fischl.de/usbasp/</a> page (<a href="http://www.fischl.de/usbasp/usbasp.2006-12-29.tar.gz">usbasp.2006-12-29.tar.gz</a> -118 kB).</p>
<p>Few words about setting up USBASP adapter for work in Windows XP system.</p>
<p>After firmware is uploaded, then connect USB cable to adapter.</p>
<ul>
<li>Connect cable directly to USB port of computer avoiding Hubs (in my case computer didn’t detect adapter connected through hub);</li>
<li>Wait for windows information â€œNew Hardware Found USBASPâ€. If device isnt detected, check the board for errors and reconnect again;</li>
<li>
<div><script type="text/javascript">// <![CDATA[
google_ad_client = "pub-3358654082910421";
google_alternate_color = "FFFFFF";
google_ad_width = 234;
google_ad_height = 60;
google_ad_format = "234x60_as";
google_ad_type = "text_image";
google_ad_channel ="6381057567";
google_color_border = "FFFFFF";
google_color_link = "0000ff";
google_color_bg = "FFFFFF";
google_color_text = "191919";
google_color_url = "191919";
// ]]&gt;</script> <script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript">
</script><script type="text/javascript">// <![CDATA[
google_protectAndRun("ads_core.google_render_ad", google_handleError, google_render_ad);
// ]]&gt;</script><ins><ins></ins></ins></div>
<p>After device is detected Driver setup wizard opens. Select where USBASP driver is located. It is in directory you’ve downloaded with firmware. If you unpacked in C: drive, than driver should be in C:\usbasp.2006-12-29\bin\win-driver\ and press next:</p>
<p>After successful setup you should see following view in device list:<a href="http://widodo.com/wp-content/uploads/2010/06/instaling_uasbasp1.jpg" rel="lightbox[235]"><img class="aligncenter size-medium wp-image-242" title="instaling_uasbasp" src="http://widodo.com/wp-content/uploads/2010/06/instaling_uasbasp1-300x242.jpg" alt="" width="300" height="242" /></a></li>
</ul>
<p>After successful setup you should see following view in device list:</p>
<p><a href="http://widodo.com/wp-content/uploads/2010/06/USBASP_Device_ready1.jpg" rel="lightbox[235]"><img class="aligncenter size-full wp-image-244" title="USBASP_Device_ready" src="http://widodo.com/wp-content/uploads/2010/06/USBASP_Device_ready1.jpg" alt="" width="213" height="269" /></a>sumber: scienceprog.com</p>


<p>No related posts.</p>
<p>Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://widodo.com/praktikum/membuat-usb-avr-programmer/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Mengenal OpenCV dan Pengenalan Wajah</title>
		<link>http://widodo.com/teknologi-informasi/mengenal-opencv-dan-pengenalan-wajah/</link>
		<comments>http://widodo.com/teknologi-informasi/mengenal-opencv-dan-pengenalan-wajah/#comments</comments>
		<pubDate>Thu, 03 Jun 2010 12:40:29 +0000</pubDate>
		<dc:creator>widodo</dc:creator>
				<category><![CDATA[teknologi informasi]]></category>

		<guid isPermaLink="false">http://widodo.com/?p=227</guid>
		<description><![CDATA[OpenCV ialah program open source berbasiskan C++ yang saat ini banyak digunakan sebagai program computer  vision, salah satu penerapannya ialah pada robotika.  Dengan OpenCV, Anda dapat membuat interaksi antara manusia dan  robot (Human Robot Interaction.  Misalnya, wajah dari manusia dideteksi oleh camera/webcam, lalu diproses oleh  komputer, untuk kemudian diproses oleh robot untuk [...]


Related posts:<ol><li><a href='http://widodo.com/uncategorized/menampilkan-properti-dari-suatu-images/' rel='bookmark' title='Permanent Link: Menampilkan properti dari suatu images'>Menampilkan properti dari suatu images</a> <small>Here is a simple program to display image attributes like...</small></li>
<li><a href='http://widodo.com/praktikum/pengontrol-alat-berbasis-port-paralel/' rel='bookmark' title='Permanent Link: Pengontrol Alat Berbasis Port Paralel'>Pengontrol Alat Berbasis Port Paralel</a> <small>Kit ini merupakan aplikasi port parallel sebagai pengontrol alat menggunakan...</small></li>
</ol>

Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[<p>OpenCV ialah program open source berbasiskan C++ yang saat ini banyak digunakan sebagai program computer  vision, salah satu penerapannya ialah pada robotika.  Dengan OpenCV, Anda dapat membuat interaksi antara manusia dan  robot (Human Robot Interaction.  Misalnya, wajah dari manusia dideteksi oleh camera/webcam, lalu diproses oleh  komputer, untuk kemudian diproses oleh robot untuk melakukan aksi tertentu,  misalnya mengikuti/mengenal  wajah orang tersebut.  Kesemuanya itu membutuhkan OpenCV sebagai program utama antara webcam dan pengolahnya yaitu  komputer.  Silahkan kunjungi situs opencv.org  untuk download atau mengetahui berita terbaru tentang software ini. Anda juga diharapkan menginstal <em><strong>Visual C++ 2010 Express Edition</strong></em> sebagai editornya.</p>
<p>Sebagai contoh, buatlah program Win32 console application untuk menampilkan sebuah gambar di Windows, berikut contohnya :</p>
<p><span id="more-227"></span></p>
<p><strong>Demo.cpp:</strong></p>
<p>// Demo Program menampilkan gambar imut</p>
<p>#include &#8220;stdafx.h&#8221;</p>
<p>#include &#8220;conio.h&#8221;</p>
<p>#include &lt;cv.h&gt;</p>
<p>#include &lt;highgui.h&gt;</p>
<p>int main(int argc, char** argv)</p>
<p>{</p>
<p>IplImage* img  =cvLoadImage(argv[1]);</p>
<p>cvNamedWindow (&#8220;Contoh_DISPLAY_GAMBAR&#8221;,CV_WINDOW_AUTOSIZE);</p>
<p>cvShowImage(&#8220;Contoh_DISPLAY_GAMBAR&#8221;,img);</p>
<p>cvWaitKey(0);</p>
<p>cvReleaseImage(&amp;img);</p>
<p>cvDestroyWindow(&#8220;Contoh_DISPLAY_GAMBAR&#8221;);</p>
<p>}</p>
<p>Program di atas akan  meload file .jpg yang kita berikan menggukan cvLodImage(), lalu ditampilkan menggunakan cvNamedWindow().  Setelah dikompilasi,  eksekusi  file .exe yang tercipta atau jalankan dengan perintah:</p>
<p><strong>Demo fira.JPG</strong></p>
<p><strong> </strong></p>
<p>Maka akan tampil gambar  berikut :</p>
<p><a href="http://widodo.com/wp-content/uploads/2010/06/image005.jpg" rel="lightbox[227]"><img class="aligncenter size-full wp-image-228" title="image005" src="http://widodo.com/wp-content/uploads/2010/06/image005.jpg" alt="" width="194" height="275" /></a></p>
<p><strong> Gambar </strong><strong>1 </strong><strong> </strong><strong>Wajah cantik  yang nongol<br />
</strong></p>
<p>Jika Anda ingin  mendeteksi webcam dan mengambil image dari webcam tersebut, gunakan demo kode berikut ini, dimana fungsi yang umum  digunakan ialah :</p>
<p>pCapture = cvCaptureFromCAM( CV_CAP_ANY );</p>
<p><strong>WebcamCapture.cpp:</strong></p>
<p>// Demo koneksi  ke webcam  dan simpan frame</p>
<p>#include &#8220;stdafx.h&#8221;</p>
<p>#include &#8220;stdio.h&#8221;</p>
<p>#include &#8220;string.h&#8221;</p>
<p>#include &#8220;cv.h&#8221;</p>
<p>#include &#8220;highgui.h&#8221;</p>
<p>int main(int argc, char **  argv)</p>
<p>{</p>
<p>CvCapture * pCapture    = 0;</p>
<p>IplImage *  pVideoFrame = 0;</p>
<p>int         i;</p>
<p>char        filename[50];</p>
<p>// Inisialisasi video  capture</p>
<p>pCapture = cvCaptureFromCAM( CV_CAP_ANY );</p>
<p>if( !pCapture )</p>
<p>{</p>
<p>fprintf(stderr, &#8220;Gagal inisialisasi webcam\n&#8221;);</p>
<p>return -1;</p>
<p>}</p>
<p>// Ambil  3 frame video</p>
<p>for(i=0; i&lt;3; i++)</p>
<p>{</p>
<p>pVideoFrame = cvQueryFrame( pCapture );</p>
<p>if( !pVideoFrame )</p>
<p>{</p>
<p>fprintf(stderr,  &#8220;failed to get a video frame\n&#8221;);</p>
<p>}</p>
<p>//  tulis ke file</p>
<p>sprintf(filename, &#8220;VideoFrame%d.jpg&#8221;, i+1);</p>
<p>if( !cvSaveImage(filename, pVideoFrame) )</p>
<p>{</p>
<p>fprintf(stderr,  &#8220;failed to write image file %s\n&#8221;, filename);</p>
<p>}</p>
<p>}</p>
<p>// Terminasi  video capture</p>
<p>cvReleaseCapture( &amp;pCapture );</p>
<p>return 0;</p>
<p>}</p>
<p><strong>Pengenalan Wajah</strong></p>
<p>OpenCV ialah open source library computer vision, yang memudahkan pemrograman  deteksi  wajah, face tracking, face recognition, kalman filtering dn berbagai metode artificial intelligent.</p>
<p>OpenCV menggunakan sebuah tipe face detector yang disebut Haar Cascade classifier.  Gambar menunjukkan face detector berhasil bekerja pada sebuah  gambar.  Jika ada sebuah image (biasa dari file  /live video), face detector menguji tiap lokasi image dan mengklasifikasinya  sebagai “wajah” atau “bukan wajah”. Klasifikasi dimisalkan sebuah skala fix  untuk wajah, misal 50&#215;50 pixel.  Jika wajah pada image lebih besar atau lebih kecil dari pixel tersebut, classifier  terus menerus jalan beberapa kali, untuk mencari wajah  pada  gambar tersebut.</p>
<p>Classifier menggunakan data yang disimpan pada file XML untuk memutuskan bagaimana mengklasifikasi tiap  lokasi image.  OpenCV menggunakan 4 data XML untuk deteksi wajah depan, dan 1 untuk wajah profile.  Termasuk  juga 3 file XML bukan wajah: 1 untuk deteksi full body, 1 untuk upper body, dan 1 untuk lower body.  Anda harus memberitahukan classifier dimana menemukan file data yang akan anda gunakan. Salah satunya bernama haarcascade_frontalface_default.xml. Pada OpenCV, terletak pada :</p>
<p>Program_Files/OpenCV/data/haarcasades/haarcascade_frontalface_default.xml.</p>
<p><strong>Konsep Pendeteksian Wajah</strong></p>
<p>OpenCV face detector menggunakan metode Paul Viola dan Michael Jones. Metode mengkombinasikan :</p>
<ul>
<li>Fitur  rectangular  sederhana yang disebut fitur Haar</li>
<li>Integral imag untuk deteksi fitur yang cepat</li>
<li>Metode machine learning AdaBoost.</li>
<li>Sebuah pengklasifikasi cascade untkmengkombinasikan banyak fitur secara  efisien.</li>
</ul>
<p>Fitur yang digunakan Viola dan Jones menggunakan bentuk gelombang Haar. Bentuk gelombang Haar ialah  sebuah gelombang kotak.  Pada 2 dimensi, gelombang kotak ialah pasangan persegi yang bersebelahan, 1 terang dan 1  gelap. Haar ditentukan oleh pengurangan pixel rata-rata daerah gelap dari pixel rata-rata daerah terang.  Jika perbedeaan diatas threshold (diset selama learning), fitur tersebut dikatakan ada.</p>
<p>Implementasi Deteksi  Wajah:</p>
<ol>
<li>Variable  CvHaarClassifierCascade * pCascade menyimpan data dari file XML.  Untuk meload data XML ke pCascade, Anda dapat menggunakan fungsi cvLoad().  cvLoad ialah fungsi umum untuk meload data dari file yang  membutuhkan hingga 3 parameter input. JIka anda membuat kode pada C, set parameter  sisanya menjadi 0, jika menggunakan C++ hilangkan parameter yang tidak  digunakan.</li>
<li>Sebelum mendeteksi wajah pada  images, Anda membutuhkan objek  CvMemStorage.  Detector akan mendaftar wajah yang terdeteki ke buffer. Yang  harus anda kerjakan ialah membuatnya</li>
</ol>
<p>pStorage=CvCreateMemStorage(0);</p>
<p>dan  me<em>release</em>nya ketika telah selesai.</p>
<p>cvReleaseMemStorage(&amp;pStorage);</p>
<ol>
<li>Anda akan sering meload data  dari file, tentu ada kemungkinan salah path, sebaiknya berikan pengecekan untuk memastikan file diload dengan benar.</li>
</ol>
<p>if(!pInpImg  ||  !pStorage  || !pCascade)</p>
<p>{</p>
<p>printf  (“Inisialisasi gagal \n”);</p>
<p>}</p>
<p>exit (-1);</p>
<p>}</p>
<ol>
<li>Untuk menjalankan detector,  panggil objek cvHaarDetect.  Fungsi ini  membutuhkan 7  parameter, 3 pertama ialah pointer  image,  XML data dan memory buffer, sisanya diset  pada default C++.</li>
</ol>
<p>pFaceRectSeq =cvHaarDetectObjects</p>
<p>(pInpImg,  pCascade, pStorage,</p>
<p>1.1,  //tingkatkan skala pencarian dengan 10% tiap passing</p>
<p>3,  //drop group yang kurang dari 3 deteksi</p>
<p>CV_HAAR_DO_CANNY_PRUNNING //skip  region yang tidak berisi wajah</p>
<p>cvSize(0,));  //gunakan XML default untuk skala pencarian terkecil.</p>
<ol>
<li>Untuk membuat display Window  gunakan cvNamedWindow seperti berikut:</li>
</ol>
<p>cvNamedWindow  (“Haar Window”, CV_WINDOW_AUTOSIZE);</p>
<p>Untuk  memasukkan image ke display, panggil fungsi cvShowImage() dengan nama yang telah dibuat  pada window dan nama image yang ingin ditampilkan.</p>
<p>Berikut ini kodel lengkapnya :</p>
<p><strong>DetectFace.cpp:</strong><strong> </strong></p>
<p>// Hak Cipta cognotics.com</p>
<p>&#8230;</p>
<p>// *********************************************</p>
<p>#define OPENCV_ROOT  &#8220;C:/Program Files/OpenCV&#8221;</p>
<p>// *********************************************</p>
<p>void displayDetections(IplImage  * pInpImg, CvSeq * pFaceRectSeq);</p>
<p>int main(int argc, char** argv){</p>
<p>// variables</p>
<p>IplImage *  pInpImg = 0;</p>
<p>CvHaarClassifierCascade *  pCascade = 0;  // face detector</p>
<p>CvMemStorage *  pStorage = 0;        // memory for detector to use</p>
<p>CvSeq *  pFaceRectSeq;               // memory-access interface</p>
<p>// pengecekan</p>
<p>if(argc &lt;  2)</p>
<p>{</p>
<p>printf(&#8220;Missing name  of image file!\n&#8221;</p>
<p>&#8220;Usage: %s &lt;imagefilename&gt;\n&#8221;, argv[0]);</p>
<p>exit(-1);</p>
<p>}</p>
<p>// initializations</p>
<p>pInpImg =  (argc &gt; 1) ? cvLoadImage(argv[1], CV_LOAD_IMAGE_COLOR) : 0;</p>
<p>pStorage =  cvCreateMemStorage(0);</p>
<p>pCascade =  (CvHaarClassifierCascade *)cvLoad</p>
<p>((OPENCV_ROOT&#8221;/data/haarcascades/haarcascade_frontalface_default.xml&#8221;),</p>
<p>0, 0, 0 );</p>
<p>// validate that everything initialized properly</p>
<p>if( !pInpImg || !pStorage || !pCascade )</p>
<p>{</p>
<p>printf(&#8220;Initialization failed:  %s\n&#8221;,</p>
<p>(!pInpImg)?  &#8220;can&#8217;t load image file&#8221; :</p>
<p>(!pCascade)? &#8220;can&#8217;t load haar-cascade &#8212; &#8221;</p>
<p>&#8220;make sure  path is correct&#8221; :</p>
<p>&#8220;unable to allocate memory for data storage&#8221;, argv[1]);</p>
<p>exit(-1);</p>
<p>}</p>
<p>// detect faces in image</p>
<p>pFaceRectSeq =  cvHaarDetectObjects</p>
<p>(pInpImg, pCascade,  pStorage,</p>
<p>1.1,                       // increase search scale by 10% each pass</p>
<p>3,                         // merge groups of three detections</p>
<p>CV_HAAR_DO_CANNY_PRUNING,  // skip regions unlikely to contain a face</p>
<p>cvSize(40,40));            // smallest size face to detect = 40&#215;40</p>
<p>// tampilkn wajah yang terdeteksi</p>
<p>displayDetections(pInpImg, pFaceRectSeq);</p>
<p>// clean up and release resources</p>
<p>cvReleaseImage(&amp;pInpImg);</p>
<p>if(pCascade) cvReleaseHaarClassifierCascade(&amp;pCascade);</p>
<p>if(pStorage) cvReleaseMemStorage(&amp;pStorage);</p>
<p>return 0;</p>
<p>}</p>
<p>void displayDetections(IplImage  * pInpImg, CvSeq * pFaceRectSeq)</p>
<p>{</p>
<p>const char  * DISPLAY_WINDOW = &#8220;Haar Window&#8221;;</p>
<p>int i;</p>
<p>// create a window to display detected faces</p>
<p>cvNamedWindow(DISPLAY_WINDOW, CV_WINDOW_AUTOSIZE);</p>
<p>// draw a rectangular outline around each detection</p>
<p>for(i=0;i&lt;(pFaceRectSeq? pFaceRectSeq-&gt;total:0);  i++ )</p>
<p>{</p>
<p>CvRect* r  = (CvRect*)cvGetSeqElem(pFaceRectSeq, i);</p>
<p>CvPoint pt1  = { r-&gt;x, r-&gt;y };</p>
<p>CvPoint pt2  = { r-&gt;x + r-&gt;width, r-&gt;y + r-&gt;height };</p>
<p>cvRectangle(pInpImg, pt1,  pt2, CV_RGB(0,255,0), 3, 4, 0);</p>
<p>}</p>
<p>// tampilkan</p>
<p>cvShowImage(DISPLAY_WINDOW, pInpImg);</p>
<p>cvWaitKey(0);</p>
<p>cvDestroyWindow(DISPLAY_WINDOW);</p>
<p>}</p>
<p><a href="http://widodo.com/wp-content/uploads/2010/06/image009.jpg" rel="lightbox[227]"><img class="aligncenter size-medium wp-image-231" title="image009" src="http://widodo.com/wp-content/uploads/2010/06/image009-184x300.jpg" alt="" width="184" height="300" /></a></p>
<p><strong> Gambar </strong><strong>2 </strong><strong> </strong><strong>Wajah cantik  yang  terdeteksi</strong></p>
<p>Ok selamat mencoba, Anda juga dapat request workshop 1 hari full day atau inhouse untuk mencoba OpenCV ini.</p>


<p>Related posts:<ol><li><a href='http://widodo.com/uncategorized/menampilkan-properti-dari-suatu-images/' rel='bookmark' title='Permanent Link: Menampilkan properti dari suatu images'>Menampilkan properti dari suatu images</a> <small>Here is a simple program to display image attributes like...</small></li>
<li><a href='http://widodo.com/praktikum/pengontrol-alat-berbasis-port-paralel/' rel='bookmark' title='Permanent Link: Pengontrol Alat Berbasis Port Paralel'>Pengontrol Alat Berbasis Port Paralel</a> <small>Kit ini merupakan aplikasi port parallel sebagai pengontrol alat menggunakan...</small></li>
</ol></p>
<p>Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://widodo.com/teknologi-informasi/mengenal-opencv-dan-pengenalan-wajah/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Record Management System di J2ME</title>
		<link>http://widodo.com/teknologi-informasi/record-management-system-di-j2me/</link>
		<comments>http://widodo.com/teknologi-informasi/record-management-system-di-j2me/#comments</comments>
		<pubDate>Fri, 21 May 2010 03:51:22 +0000</pubDate>
		<dc:creator>widodo</dc:creator>
				<category><![CDATA[teknologi informasi]]></category>

		<guid isPermaLink="false">http://widodo.com/?p=213</guid>
		<description><![CDATA[Data storage and retrieval is an essential aspect of application development. The data that is stored will depend on the type and complexity of the application. In some cases the only persistent data to be stored is the application user preferences. In other cases you may need to store and manage a repository of contact [...]


No related posts.

Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[<p>Data storage and retrieval is an essential aspect of application development. The data that is stored will depend on the type and complexity of the application. In some cases the only persistent data to be stored is the application user preferences. In other cases you may need to store and manage a repository of contact information. On the high end, you could be designing a data storage solution for a full range of supply-chain data. No matter what the case, there is just one all-purpose data storage and management solution for MIDP-enabled devices, and that is the Record Management System (RMS).</p>
<p>In this article, the first of a companion series to the two-part <em>J2ME 101</em> tutorial series, we&#8217;ll explore the inner workings of MIDP&#8217;s persistent storage system. We&#8217;ll start with a quick overview of RMS, but most of the article (like the tutorial series) will be hands-on. Together, we&#8217;ll build MIDlets that will help you understand how data records are written to and read from the RMS, as well as the variety of sorting, searching, and retrieval options that are available within this remarkably well-rounded and compact data management system.</p>
<p>Please note that this article assumes that you are familiar with MIDlet development in the J2ME environment. You will need to have a J2ME development environment installed on your system in order to compile the code examples. See the <a href="http://www.ibm.com/developerworks/library/j-j2me3/#resources">Resources</a> section for links to installation instructions for the J2ME Wireless Toolkit (WTK).</p>
<p><span id="more-213"></span></p>
<p><a name="N1005F">Record management in MIDP</a></p>
<p>Put simply, the MIDP Record Management System (RMS) provides a means to store application data that persists across invocations of a MIDlet. You can visualize the RMS record store as a very simple database, where each row consists of two columns: one containing a unique row identifier, the other a series of bytes representing the data in the record. Table 1 illustrates a simple record store database.<br />
<a name="N10069"><strong>Table 1. A record store database</strong></a></p>
<p><strong>Record ID </strong><strong>Data</strong></p>
<p>1  Array of bytes</p>
<p>2   Array of bytes</p>
<p>3 Array of bytes</p>
<p>&#8230;</p>
<p>The unique row identifer is an integer value. The first entry will have the ID of 1, the next of 2, and so on. Row identifiers are not re-used if a row is deleted. That is, if we have three rows in a table with the IDs 1, 2, and 3, deleting ID 2 will remove this identifier permanently from the record store. If we were to add another row to this table, it would have an identifier of 4.</p>
<p>Record stores are identified by name. A name may consist of up to 32 characters, and all characters are case sensitive. No two record stores within a MIDlet suite (that is, a collection of one or more MIDlets packaged together) may contain the same name.</p>
<p>Each record store has a version number as well as a date/time stamp. Both values are updated whenever a record is added, replaced, or deleted.</p>
<hr /><a name="N100AE">Creating a record store</a></p>
<p>No constructor exists for creating a record store. Instead, we use a set of three dual-purpose methods to create and/or open record stores. Each method is shown in Listing 1.<br />
<a name="N100B7"><strong>Listing 1. Creating and opening record stores</strong></a></p>
<table border="0" cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<pre>RecordStore openRecordStore(String recordStoreName,
                               boolean createIfNecessary)
RecordStore openRecordStore(String recordStoreName,
                               boolean createIfNecessary,
                               int authmode,
                               boolean writable)
RecordStore openRecordStore(String recordStoreName,
                               String vendorName,
                               String suiteName)</pre>
</tr>
</tbody>
</table>
<div>
<h2>Deleting a record store</h2>
<p>When a MIDlet suite is deleted from a device, any record stores created by the suite will also be removed.</p>
</div>
<p>The first method opens the named record store if it exists. If the named record store does not exist, and if the parameter <code>createIfNecessary</code> is set to <code>true</code>, the method can be used to create a new (named) record store. The second method operates in the same fashion but employs two additional parameters to specify the record store&#8217;s access restrictions. The first parameter specifies whether or not only those MIDlets in the same suite can access the record store. The second one specifies whether MIDlets that have access to the record store, can create new records. The last method provdes a means for a MIDlet to open a record store in another MIDlet suite.</p>
<p><a name="N100D5">The RecordStore API</a></p>
<p>A handful of methods are available for working with a record store. These range from adding, deleting, and replacing record contents to enumerating through a record store. Each available method is shown in Listing 2.</p>
<table border="0" cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<pre>void closeRecordStore()
void deleteRecordStore(String recordStoreName)
String[] listRecordStores()
int addRecord(byte[] data, int offset, int numBytes)
void setRecord(int recordId, byte[] newData, int offset, int numBytes)
void deleteRecord (int recordId)
byte[] getRecord (int recordId)
int getRecord (int recordId, byte[] buffer, int offset)
int getRecordSize (int recordId)
int getNextRecordID()
int getNumRecords()
long getLastModified()
int getVersion()
String getName()
int getSize()
int getSizeAvailable()
RecordEnumeration enumerateRecords(RecordFilter filter,
                                      RecordComparator comparator,
                                      boolean keepUpdated)
void addRecordListener (RecordListener listener)
void removeRecordListener (RecordListener listener)
void setMode(int authmode, boolean writable)</pre>
</tr>
</tbody>
</table>
<div>
<h2>Locking a record</h2>
<p>Unlike a traditional database, RMS offers no methods to lock a record store. It is up to the device implementation to ensure that all operations are synchronous. Should you use separate threads to access a record store, it is up to you to ensure that threads accessing resources do not interfere with each other.</p>
</div>
<p>You&#8217;ll learn more about the <code>RecordStore</code> API and many of its methods as we work through the examples in the sections that follow.</p>
<p><a name="N100F8">The ReadWrite MIDlet</a></p>
<p>Our first illustrative example is the ReadWrite MIDlet. This MIDlet has the ability to create a record store, write several records into persistent storage, read back those same records, and delete the record store upon exiting. As you study the code below, note that the MIDlet contains several &#8220;convenience&#8221; methods, which are methods used time and again when working with the RMS. Convenience methods are the methods used to open, close, and delete record stores.</p>
<p>Take a look at the complete code for the <a href="http://www.ibm.com/developerworks/library/j-j2me3/side-j2me3-1.html">ReadWrite MIDlet</a> and then we&#8217;ll discuss it in more detail.</p>
<p><a name="N10107">Notes about the code</a></p>
<p>A couple of points are worth mentioning before we move on. First, note that in this example we created a new record store by passing <code>true</code> for the <code>createIfNecessary</code> parameter when calling <code>RecordStore.openRecordStore(REC_STORE, true)</code>, as previously explained.</p>
<p>Second, when we wrote to the record store with <code>writeRecord(String str)</code>, we first converted the Java string parameter into a byte array. This byte array was then passed to <code>addRecord(rec, 0, rec.length)</code> to insert a record into the record store.</p>
<p>Finally, in the <code>readRecords()</code> method we allocated a byte array to store any record data we read from the RMS. This allows us to make a specific check on each read to ensure that the array is large enough to hold the data. Once the record has been retrieved, we can output the contents to the console.</p>
<p>Figure 1 shows the output of the ReadWrite MIDlet when it is run from within the J2ME WTK.<br />
<a name="N1012F"><strong>Figure 1. Record output from the ReadWrite MIDlet</strong></a></p>
<p><a href="http://widodo.com/wp-content/uploads/2010/05/readwrite_console.gif" rel="lightbox[213]"><img class="aligncenter size-medium wp-image-214" title="readwrite_console" src="http://widodo.com/wp-content/uploads/2010/05/readwrite_console-300x135.gif" alt="" width="300" height="135" /></a></p>
<p><a name="N1013B">Read and write Java primitives</a></p>
<p>The ReadWrite MIDlet only writes text strings to the record store. For the next example, we&#8217;ll add the ability to store and manipulate arrays of integer, boolean, and string values. We&#8217;ll also add support for reading and writing using Java streams. As with the previous example, we&#8217;ll write several records and then read them back from the store.</p>
<p>As with any MIDlet that needs to access the record store, we begin by using the <code>openRecordStore()</code> method to allocate and open (or create) a record store, as shown in Listing 3.<br />
<a name="N1014A"><strong>Listing 3. Create a record store</strong></a></p>
<table border="0" cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<pre>private RecordStore rs = null;    // Record store
...

public void openRecStore()
{
     ...
     // Create record store if it does not exist
     rs = RecordStore.openRecordStore(REC_STORE, true);
     ...
}</pre>
</tr>
</tbody>
</table>
<p>Listing 4 shows the primitive data types we&#8217;ll write to the record store.<br />
<a name="code4"><strong>Listing 4. Java primitive data types</strong></a></p>
<table border="0" cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<pre>public void writeTestData()
{
     boolean[] booleans = {true,false};
     int[] integers = {17 , 4};
     String[] strings = {"Golf", "Tennis"};

     writeStream(booleans, integers, strings);
}</pre>
</tr>
</tbody>
</table>
<p>If you&#8217;re familiar with using streams in the Java language, you&#8217;ll find little difference between working with a MIDlet and with a more traditional Java application. The steps are as follows:</p>
<ul>
<li>Allocate streams</li>
<li>Write the data</li>
<li>Flush the stream</li>
<li>Transfer the stream data into an array</li>
<li>Write the array to the record store</li>
<li>Close the streams</li>
</ul>
<p>Listing 5 shows how to write to RMS using a stream:</p>
<table border="0" cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<pre>public void writeStream(boolean[] bData, int[] iData, String[] sData)
{
     try
     {
        // Write data into an internal byte array
       ByteArrayOutputStream strmBytes = new ByteArrayOutputStream();

       // Write Java data types into the above byte array
       DataOutputStream strmDataType = new DataOutputStream(strmBytes);

       byte[] record;

       for (int i = 0; i &lt; sData.length; i++)
       {
         // Write Java data types
         strmDataType.writeBoolean(bData[i]);
         strmDataType.writeInt(iData[i]);
         strmDataType.writeUTF(sData[i]);

         // Clear any buffered data
         strmDataType.flush();

         // Get stream data into byte array and write record
         record = strmBytes.toByteArray();
         rs.addRecord(record, 0, record.length);

         // Toss any data in the internal array so writes
         // starts at beginning (of the internal array)
         strmBytes.reset();
       }

       strmBytes.close();
       strmDataType.close();

     }
     catch (Exception e)
     {
       db(e.toString());
     }
}</pre>
</tr>
</tbody>
</table>
<p>Next we want to read from the record store. We begin by creating the necessary input streams, then loop through each record, storing its contents in a byte array. Accessing the data input stream we read each Java primitive type from the byte array and print the associated contents to the console, as shown in Listing 6.<br />
<a name="N1017D"><strong>Listing 6. Reading a stream from the record store</strong></a></p>
<table border="0" cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<pre>public void readStream()
{
     try
     {
       // Allocate space to hold each record
       byte[] recData = new byte[50];

       // Read from the specified byte array
       ByteArrayInputStream strmBytes = new ByteArrayInputStream(recData);

       // Read Java data types from the above byte array
       DataInputStream strmDataType = new DataInputStream(strmBytes);

       for (int i = 1; i &lt;= rs.getNumRecords(); i++)
       {
         // Get data into the byte array
         rs.getRecord(i, recData, 0);

         // Read back the data types
         System.out.println("Record #" + i);
         System.out.println("Boolean: " + strmDataType.readBoolean());
         System.out.println("Integer: " + strmDataType.readInt());
         System.out.println("String: " + strmDataType.readUTF());
         System.out.println("--------------------");

         // Reset so read starts at beginning of array
         strmBytes.reset();
       }

       strmBytes.close();
       strmDataType.close();

     }
     catch (Exception e)
     {
       db(e.toString());
     }
}</pre>
</tr>
</tbody>
</table>
<p>Now check out the source code for the <a href="http://www.ibm.com/developerworks/library/j-j2me3/side-j2me3-2.html">ReadWritePrimitives MIDlet</a>. Study it carefully, and then run the code in your WTK emulator to view the output if you like.</p>
<p>The console output for the ReadWritePrimitives MIDlet should look as shown in Figure 2.<br />
<a name="N10190"><strong>Figure 2. Output of the ReadWritePrimitives MIDlet</strong></a><br />
<a href="http://widodo.com/wp-content/uploads/2010/05/readwrite_console_prm.gif" rel="lightbox[213]"><img class="aligncenter size-medium wp-image-215" title="readwrite_console_prm" src="http://widodo.com/wp-content/uploads/2010/05/readwrite_console_prm-300x155.gif" alt="" width="300" height="155" /></a></p>
<p><a name="N1029A">Building a comparator</a></p>
<p>For the most part, the code for the IntegerSort MIDlet (see the <a href="http://www.ibm.com/developerworks/library/j-j2me3/side-j2me3-3.html">complete source code</a>) won&#8217;t differ much from that of our previous MIDlets. The biggest change is the addition of a comparator class (Listing 13) and the methods for extracting the appropriate fields and performing the actual sorting. Following is the <code>ComparatorInteger</code> class that handles all the details for the IntegerSort MIDlet.<br />
<a name="N102AB"><strong>Listing 13. The ComparatorInteger class</strong></a></p>
<table border="0" cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<pre>/*--------------------------------------------------
* Compares two integers to determine sort order
* Each record passed in contains multiple Java data
* types - use only the integer data for sorting
*-------------------------------------------------*/
class ComparatorInteger implements RecordComparator
{
     private byte[] recData = new byte[10];

     // Read from a specified byte array
     private ByteArrayInputStream strmBytes = null;

     // Read Java data types from the above byte array
     private DataInputStream strmDataType = null;

     public void compareIntClose()
     {
       try
       {
         if (strmBytes != null)
           strmBytes.close();
         if (strmDataType != null)
           strmDataType.close();
       }
       catch (Exception e)
       {}
     }

     public int compare(byte[] rec1, byte[] rec2)
     {
       int x1, x2;

       try
       {
         // If either record is larger than our buffer, reallocate
         int maxsize = Math.max(rec1.length, rec2.length);
         if (maxsize &gt; recData.length)
           recData = new byte[maxsize];

         // Read record #1
         // We want the integer from the record, which is
         // the second "field" thus we must read the
         // String first to get to the integer value
         strmBytes = new ByteArrayInputStream(rec1);
         strmDataType = new DataInputStream(strmBytes);
         strmDataType.readUTF();       // Read string
         x1 = strmDataType.readInt();  // Read integer

         // Read record #2
         strmBytes = new ByteArrayInputStream(rec2);
         strmDataType = new DataInputStream(strmBytes);
         strmDataType.readUTF();       // Read string
         x2 = strmDataType.readInt();  // Read integer

         // Compare record #1 and #2
         if (x1 == x2)
           return RecordComparator.EQUIVALENT;
         else if (x1 &lt; x2)
           return RecordComparator.PRECEDES;
         else
           return RecordComparator.FOLLOWS;

       }
       catch (Exception e)
       {
         return RecordComparator.EQUIVALENT;
       }
     }</pre>
</tr>
</tbody>
</table>
<p>Pay close attention to the code for reading the Java primitives. We need to retrieve the integer value from each record. However, this value is the second &#8220;field&#8221; stored in each record. Therefore, we simply read the string (UTF) value and toss it aside. The second read stores the integer value in a local variable (x1 or x2). These values are then compared to determine the proper sort order.</p>
<table border="0" cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<pre>// Read record #1
...
strmDataType.readUTF();       // Read string
x1 = strmDataType.readInt();  // Read integer

// Read record #2
...
strmDataType.readUTF();       // Read string
x2 = strmDataType.readInt();  // Read integer

// Compare record #1 and #2
if (x1 == x2)
     return RecordComparator.EQUIVALENT;
else if (x1 &lt; x2)
     return RecordComparator.PRECEDES;
else
     return RecordComparator.FOLLOWS;</pre>
</tr>
</tbody>
</table>
<p><a name="N102C1">Building an enumerator</a></p>
<p>With the comparator code written, we next create an enumerator, referencing an instance of the <code>ComparatorInteger</code> class. The enumerator will create a result set of records from the record store, using the comparator as the sorting algorithm. Listing 15 is a partial listing of the <code>readStream()</code> method which creates the comparator as well as the enumerator, and loops through the result set displaying record contents on the console.<br />
<a name="N102D2"><strong>Listing 15. readStream() method</strong></a></p>
<table border="0" cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<pre>public void readStream()
{
    ...

     if (rs.getNumRecords() &gt; 0)
     {
       // Create instance of the comparator
       ComparatorInteger comp = new ComparatorInteger();

       // Create enumerator, referencing the comparator
       RecordEnumeration re = rs.enumerateRecords(null, comp, false);

       // Loop through all elements in the result set
       int i = 1;
       while (re.hasNextElement())
       {
         // Get data into the byte array
         rs.getRecord(re.nextRecordId(), recData, 0);

         // Read back the data types
         System.out.println("Record #" + i++);

         System.out.println("String: " + strmDataType.readUTF());
         System.out.println("Integer: " + strmDataType.readInt());
         System.out.println("--------------------");

         // Reset so read starts at beginning of array
         strmBytes.reset();
       }

     ...

}</pre>
</tr>
</tbody>
</table>
<hr />Back to top</p>
<p><a name="N102DC">The RecordFilter API</a></p>
<p>Sorting with a comparator is one option when working with an enumerator, searching with a filter is the other. A minor difference between a comparator and a filter is that a <em>comparator</em> returns the entire record store in sorted order, whereas a <em>filter</em> returns only those records that match a specified criteria. If you apply both a comparator and a filter, records that match the search criteria will be returned in sorted order.</p>
<p>Like the <code>RecordComparator</code>, the <code>RecordFilter</code> is implemented by the addition of a single method, <code>matches()</code>, to the enumerator code. The enumerator calls the<code>matches()</code> method for each record in the store. Based on the boolean return value, the record either becomes a member of the result set or is tossed aside as a record that does not meet the search criteria.<br />
<a name="N102FD"><strong>Listing 16. The RecordFilter API&#8217;s matches() method</strong></a></p>
<table border="0" cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<pre>boolean matches(byte[] candidate)</pre>
</tr>
</tbody>
</table>
<p>Listing 17 shows a class that implements the <code>RecordFilter</code> interface. Notice that the search string is specified as a parameter to the constructor <code>SearchFilter</code>. The string is saved in a private variable so we have access to the string when the enumerator calls the <code>matches()</code> method to create the result set. For this example, the search string is also converted to lowercase, resulting in a search that is <em>not</em> case-sensitive.<br />
<a name="N1031F"><strong>Listing 17. Building a RecordFilter</strong></a></p>
<table border="0" cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<pre>//********************************************************
// Create filter class for searching
//********************************************************
class SearchFilter implements RecordFilter
{
     private String searchText = null;

     public SearchFilter(String searchText)
     {
       // Text to find
       this.searchText = searchText.toLowerCase();
     }

     public boolean matches(byte[] candidate)
     {
       String str = new String(candidate).toLowerCase();

       // Does the text exist?
       if (searchText != null &amp;&amp; str.indexOf(searchText) != -1)
         return true;
       else
         return false;
     }
}

...

//********************************************************
// How to access the filter using a record enumeration
//
// Note: Variable 'rs' is created outside the scope of
//       this method
//********************************************************
// Create search filter
SearchFilter search = new SearchFilter("abc");

// Reference filter when creating the result set
RecordEnumeration re = rs.enumerateRecords(search, null, false);

// If there is at least one record in result set, a match was found
if (re.numRecords() &gt; 0)
{
     // At least one record in the result set, do something here...
     ...
}</pre>
</tr>
</tbody>
</table>
<p>Note that the actual code that performs the search in this example is quite trivial. Using the Java string method <code>indexOf()</code>, we look for the specified search string and return a boolean value indicating success or failure.</p>
<p>We&#8217;ll build one last MIDlet to illustrate what you&#8217;ve learned so far. (Here&#8217;s the complete source for the <a href="http://www.ibm.com/developerworks/library/j-j2me3/side-j2me3-4.html">StringSearch MIDlet</a>.) In addition to allowing us to search the RMS for records, this MIDlet beefs up the user interface we&#8217;ve worked with so far. Instead of using only the console for output, we&#8217;ll display a <code>TextField</code> component (which you should recall from the tutorial series!) that will prompt the user for a text string. When requested, we&#8217;ll search the record store for the string. Any and all matches will be appended on the display, showing the search results.</p>
<p>Listing 18 shows the search strings that will be written into the record store.<br />
<a name="N10342"><strong>Listing 18. Entries to the record store</strong></a></p>
<table border="0" cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<pre>public void writeTestData()
{
     String[] strs = {
                     "I think this would be a good time for a beer. (FDR)",
                     "I'll make it a felony to drink small beer. (Shakespeare)",
                     "They who drink beer will think beer. (Washington Irving)",
                     "I would give all my fame for a pot of ale. (Shakespeare)"};
     writeRecords(strs);
}</pre>
</tr>
</tbody>
</table>
<p>Figure 4 shows the MIDlet with two different search results.</p>
<p><a href="http://widodo.com/wp-content/uploads/2010/05/search_output.gif" rel="lightbox[213]"><img class="aligncenter size-medium wp-image-219" title="search_output" src="http://widodo.com/wp-content/uploads/2010/05/search_output-300x180.gif" alt="" width="300" height="180" /></a>sumber: ibm.com<a href="http://widodo.com/wp-content/uploads/2010/05/sort_records.gif" rel="lightbox[213]"></a></p>


<p>No related posts.</p>
<p>Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://widodo.com/teknologi-informasi/record-management-system-di-j2me/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Mengenal ANFIS (Adaptive Neuro Fuzzy)</title>
		<link>http://widodo.com/teknologi-informasi/mengenal-anfis-adaptive-neuro-fuzzy/</link>
		<comments>http://widodo.com/teknologi-informasi/mengenal-anfis-adaptive-neuro-fuzzy/#comments</comments>
		<pubDate>Sun, 16 May 2010 17:27:38 +0000</pubDate>
		<dc:creator>widodo</dc:creator>
				<category><![CDATA[teknologi informasi]]></category>

		<guid isPermaLink="false">http://widodo.com/?p=203</guid>
		<description><![CDATA[Adaptive Neuro Fuzzy Inference System (ANFIS) saat ini ramai digunakan sebagai sistem pengontrol atau estimator/predictor.  Program yang dikembangkan dari kode demo ANFIS dari  Roger Jang dapat didownload di toko-elektronika.com pada bagian download kode buku Kendali Cerdas.
As we have already seen, fuzzy systems present particular problems to a developer:
Rules. The if-then rules have to be [...]


No related posts.

Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[<p>Adaptive Neuro Fuzzy Inference System (ANFIS) saat ini ramai digunakan sebagai sistem pengontrol atau estimator/predictor.  Program yang dikembangkan dari kode demo ANFIS dari  Roger Jang dapat didownload di toko-elektronika.com pada bagian download kode buku Kendali Cerdas.</p>
<p><span id="more-203"></span>As we have already seen, fuzzy systems present particular problems to a developer:</p>
<p>Rules. The if-then rules have to be determined somehow. This is usually done by ‘knowledge acquisition’ from an expert. It is a time consuming process that is fraught with problems.</p>
<p>Membership functions. A fuzzy set is fully determined by its membership function. This has to be determined. If it’s gaussian then what are the parameters?</p>
<p>The ANFIS approach learns the rules and membership functions from data.</p>
<p>ANFIS is an <em>adaptive network</em>. An adaptive network is network of nodes and directional links. Associated with the network is a learning rule &#8211; for example back propagation. It’s called adaptive because some, or all, of the nodes have parameters which affect the output of the node. These networks are learning a relationship between inputs and outputs.</p>
<p>Adaptive networks covers a number of different approaches but for our purposes we will investigate in some detail the method proposed by Jang known as ANFIS.</p>
<p>The ANFIS architecture is shown below. The circular nodes represent nodes that are fixed whereas the square nodes are nodes that have parameters to be learnt.</p>
<p><span style="font-size: x-small; font-family: Arial;"><span style="font-size: x-small; font-family: Arial;"> <a href="http://widodo.com/wp-content/uploads/2010/05/anfistruc.jpg" rel="lightbox[203]"><img class="aligncenter size-medium wp-image-206" title="anfistruc" src="http://widodo.com/wp-content/uploads/2010/05/anfistruc-300x136.jpg" alt="" width="300" height="136" /></a></span></span></p>
<p><em> An ANFIS architecture for a two rule Sugeno system</em></p>
<p><span style="font-size: medium;"> </span></p>
<p>For the training of the network, there is a forward pass and a backward pass. We now look at each layer in turn for the forward pass. The forward pass propagates the input vector through the network layer by layer. In the backward pass, the error is sent back through the network in a similar manner to backpropagation.</p>
<p>Berikut hasil program yang dibuat :</p>
<p><a href="http://widodo.com/wp-content/uploads/2010/05/smartanfis.jpg" rel="lightbox[203]"><img class="aligncenter size-medium wp-image-202" title="smartanfis" src="http://widodo.com/wp-content/uploads/2010/05/smartanfis-300x234.jpg" alt="" width="376" height="214" /></a></p>
<p>Program di atas dibuat berdasarkan referensi :</p>
<p>[1] &#8220;ANFIS: Adaptive-Network-based Fuzzy Inference Systems,&#8221; IEEE Trans. on Systems, Man and Cybernetics, Vol. 23, No. 3, pp 665-685, May 1993.</p>


<p>No related posts.</p>
<p>Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://widodo.com/teknologi-informasi/mengenal-anfis-adaptive-neuro-fuzzy/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Panduan Mempelajari Mikrokontroler bagi Pemula</title>
		<link>http://widodo.com/elektronika/panduan-mempelajari-mikrokontroler-bagi-pemula/</link>
		<comments>http://widodo.com/elektronika/panduan-mempelajari-mikrokontroler-bagi-pemula/#comments</comments>
		<pubDate>Sun, 16 May 2010 12:32:57 +0000</pubDate>
		<dc:creator>widodo</dc:creator>
				<category><![CDATA[elektronika]]></category>
		<category><![CDATA[AVR Atmega 8535]]></category>
		<category><![CDATA[KRCI]]></category>
		<category><![CDATA[mikrokontroler]]></category>

		<guid isPermaLink="false">http://widodo.com/?p=193</guid>
		<description><![CDATA[Banyak sekali pelajar / pemula yang tertarik dengan mikrokontroler, namun ragu untuk memulainya dari mana.  Untuk itu, solusi paling tepat ialah melihat minat dan anggaran dana.  Anda tidak akan mampu menguasai teknologi tersebut jika tidak mau berusaha memilikinya(minimal pinjam ke teman) dan mempelajarinya secara bersungguh-sungguh.  Berikut ini beberapa pilihan tepat yang dapat Anda [...]


Related posts:<ol><li><a href='http://widodo.com/praktikum/panduan-dasar-menjadi-montir-radio-tapetvmonitorvcddvd/' rel='bookmark' title='Permanent Link: Panduan Dasar Menjadi Montir TV/DVD/RADIO-TAPE/TV/Monitor/VCD/DVD'>Panduan Dasar Menjadi Montir TV/DVD/RADIO-TAPE/TV/Monitor/VCD/DVD</a> <small>Pada tutorial ini, saya ingin membuka wawasan Anda bahwa jika...</small></li>
</ol>

Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[<p>Banyak sekali pelajar / pemula yang tertarik dengan mikrokontroler, namun ragu untuk memulainya dari mana.  Untuk itu, solusi paling tepat ialah melihat minat dan anggaran dana.  Anda tidak akan mampu menguasai teknologi tersebut jika tidak mau berusaha memilikinya(minimal pinjam ke teman) dan mempelajarinya secara bersungguh-sungguh.  Berikut ini beberapa pilihan tepat yang dapat Anda pilih sesuai keinginan.<span id="more-193"></span></p>
<p><a href="http://widodo.com/wp-content/uploads/2010/05/dtminsis331.jpg" rel="lightbox[193]"><img class="aligncenter size-medium wp-image-195" title="dtminsis33" src="http://widodo.com/wp-content/uploads/2010/05/dtminsis331-300x260.jpg" alt="" width="300" height="260" /></a></p>
<p>1.  Menguasai Mikrokontroler<strong> </strong>keluarga <strong> </strong> MCS-51 seperti<strong> 89s51/89s52</strong></p>
<p>Mikrokontroler ini masih sangat ramai dan dipelajari di kampus &#8211; kampus dengan harga IC yang sangat murah, menggunakan bahasa assembly, C atau Bascom 8051.</p>
<ul>
<li><a href="http://toko-elektronika.com/index.php?h=9&amp;UID=20100516120122115.124.95.142&amp;ItemID=39">DT 51 Tutorial Pack</a></li>
<li><a href="http://toko-elektronika.com/index.php?h=9&amp;UID=20100516120122115.124.95.142&amp;ItemID=163">DT 51 Low Cost Micro Starter Pack</a></li>
</ul>
<p>2.  Menguasai Mikrokontroler AVR <strong>Atmega8535/16/32/128</strong></p>
<p>Mikrokontroler ini lagi trend dan handal biasanya menggunakan Atmega8535/16/32/128, dapat menggunakan bahasa assembly, C dan Bascom AVR.</p>
<ul>
<li><a href="http://toko-elektronika.com/index.php?h=9&amp;UID=20100516114944115.124.95.190&amp;ItemID=1496">SmartAVR ver 4.0</a></li>
</ul>
<ul>
<li>DT Combo AVR dan Exercise Kit</li>
</ul>
<ul>
<li><a href="http://toko-elektronika.com/index.php?h=9&amp;UID=20100516120122115.124.95.142&amp;ItemID=924">DT-AVR Low Cost Micro Starter Pack</a></li>
</ul>
<p><a href="http://widodo.com/wp-content/uploads/2010/05/smartver401.jpg" rel="lightbox[193]"><img class="aligncenter size-medium wp-image-196" title="smartver401" src="http://widodo.com/wp-content/uploads/2010/05/smartver401-231x300.jpg" alt="" width="231" height="300" /></a></p>
<p>3.  Menguasai Mikrokontroler Basic Stamp</p>
<p>Mikrokontroler ini sangat mudah, bahasanya menggunakan Basic Stamp Compiler, namun harga lebih mahal.</p>
<ul>
<li><a href="http://toko-elektronika.com/index.php?h=9&amp;UID=20100516120122115.124.95.142&amp;ItemID=1081">DT- Basic Mini System</a></li>
</ul>
<p>4.  Menguasai Mikrokontroler <strong>PIC 16f877/16f84A</strong></p>
<p>Mikrokontroler ini sangat handal dan powerfull, bisa menggunakan bahasa assembly dan PicBasic.</p>
<ul>
<li><a href="http://toko-elektronika.com/index.php?h=9&amp;UID=20100516120122115.124.95.142&amp;ItemID=1338">DT-Proto 40 pin PIC 17f877</a></li>
</ul>
<p>dan komponen pelengkapnya seperti :</p>
<ul>
<li>Led tester</li>
<li>lcd</li>
<li>sensor suhu LM 35</li>
<li>sensor jarak PING</li>
</ul>
<p>Silahkan order lebih lengkap di <a href="http://toko-elektronika.com">toko-elektronika.com</a></p>


<p>Related posts:<ol><li><a href='http://widodo.com/praktikum/panduan-dasar-menjadi-montir-radio-tapetvmonitorvcddvd/' rel='bookmark' title='Permanent Link: Panduan Dasar Menjadi Montir TV/DVD/RADIO-TAPE/TV/Monitor/VCD/DVD'>Panduan Dasar Menjadi Montir TV/DVD/RADIO-TAPE/TV/Monitor/VCD/DVD</a> <small>Pada tutorial ini, saya ingin membuka wawasan Anda bahwa jika...</small></li>
</ol></p>
<p>Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://widodo.com/elektronika/panduan-mempelajari-mikrokontroler-bagi-pemula/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Membuat Display Scope berbasis Visual C#.Net</title>
		<link>http://widodo.com/teknologi-informasi/membuat-display-scope-berbasis-visual-c-net/</link>
		<comments>http://widodo.com/teknologi-informasi/membuat-display-scope-berbasis-visual-c-net/#comments</comments>
		<pubDate>Sun, 16 May 2010 09:15:10 +0000</pubDate>
		<dc:creator>widodo</dc:creator>
				<category><![CDATA[teknologi informasi]]></category>

		<guid isPermaLink="false">http://widodo.com/?p=186</guid>
		<description><![CDATA[Sering jika Anda membangun aplikasi untuk menampilkan data, dibutuhkan scope/display untuk menampilkan  grafik dari data tersebut, misalnya menampilkan suhu, kelembaban dan kecepatan putar motor.  Cara paling mudah saat ini dapat menggunakan Visual C# dan PlotLab.
Langkah-langkahnya:
1.  Install PlotLab ver 4.5, silahkan diunduh di www.mitov.com.
2. Buat sebuah proyek di Visual VC#.net, lalu konfigurasikan PlotLab tersebut.
2.  Tempelkan scope [...]


Related posts:<ol><li><a href='http://widodo.com/praktikum/robot-avoider-berbasis-atmega16/' rel='bookmark' title='Permanent Link: Robot Avoider berbasis ATmega16'>Robot Avoider berbasis ATmega16</a> <small>Aplikasi ini merupakan contoh penerapan mikrokontroler AVR ATmega16 pada robot...</small></li>
<li><a href='http://widodo.com/teknologi-informasi/saatnya-beralih-ke-visual-studio-2010-express-edition/' rel='bookmark' title='Permanent Link: Saatnya beralih ke Visual Studio 2010 Express Edition'>Saatnya beralih ke Visual Studio 2010 Express Edition</a> <small>Jika Anda ingin membuat program handal dan mudah, silahkan pelajari...</small></li>
<li><a href='http://widodo.com/teknologi-informasi/mengenal-opencv-dan-pengenalan-wajah/' rel='bookmark' title='Permanent Link: Mengenal OpenCV dan Pengenalan Wajah'>Mengenal OpenCV dan Pengenalan Wajah</a> <small>OpenCV ialah program open source berbasiskan C++ yang saat ini...</small></li>
</ol>

Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[<p>Sering jika Anda membangun aplikasi untuk menampilkan data, dibutuhkan scope/display untuk menampilkan  grafik dari data tersebut, misalnya menampilkan suhu, kelembaban dan kecepatan putar motor.  Cara paling mudah saat ini dapat menggunakan Visual C# dan PlotLab.</p>
<p>Langkah-langkahnya:</p>
<p>1.  Install PlotLab ver 4.5, silahkan diunduh di www.mitov.com.</p>
<p>2. Buat sebuah proyek di Visual VC#.net, lalu konfigurasikan PlotLab tersebut.</p>
<p>2.  Tempelkan scope seperti gambar di bawah, dan konfigurasikan properti yang sesuai dengan keinginan Anda. Tambahkan 2 buah channel pada properti window.</p>
<p><a href="http://widodo.com/wp-content/uploads/2010/05/plot2.jpg" rel="lightbox[186]"><img class="aligncenter size-medium wp-image-189" title="plot" src="http://widodo.com/wp-content/uploads/2010/05/plot2-300x204.jpg" alt="" width="326" height="221" /></a></p>
<p>3. Masukkan kode demo untuk membangkitkan nilai berikut :</p>
<p><a href="http://widodo.com/wp-content/uploads/2010/05/plot2.jpg" rel="lightbox[186]"></a><a href="http://widodo.com/wp-content/uploads/2010/05/code.jpg" rel="lightbox[186]"><img class="aligncenter size-medium wp-image-190" title="code" src="http://widodo.com/wp-content/uploads/2010/05/code-300x209.jpg" alt="" width="312" height="215" /></a></p>
<p>4.  Jalankan program</p>
<p><a href="http://widodo.com/wp-content/uploads/2010/05/hasil.jpg" rel="lightbox[186]"><img class="aligncenter size-medium wp-image-191" title="hasil" src="http://widodo.com/wp-content/uploads/2010/05/hasil-300x206.jpg" alt="" width="316" height="206" /></a></p>
<p>Anda juga dapat memesan aplikasi ini yang dihubungkan dengan pengukuran alat berbasis mikrokontroler.</p>
<p>Tertarik ? Selamat mencoba.</p>


<p>Related posts:<ol><li><a href='http://widodo.com/praktikum/robot-avoider-berbasis-atmega16/' rel='bookmark' title='Permanent Link: Robot Avoider berbasis ATmega16'>Robot Avoider berbasis ATmega16</a> <small>Aplikasi ini merupakan contoh penerapan mikrokontroler AVR ATmega16 pada robot...</small></li>
<li><a href='http://widodo.com/teknologi-informasi/saatnya-beralih-ke-visual-studio-2010-express-edition/' rel='bookmark' title='Permanent Link: Saatnya beralih ke Visual Studio 2010 Express Edition'>Saatnya beralih ke Visual Studio 2010 Express Edition</a> <small>Jika Anda ingin membuat program handal dan mudah, silahkan pelajari...</small></li>
<li><a href='http://widodo.com/teknologi-informasi/mengenal-opencv-dan-pengenalan-wajah/' rel='bookmark' title='Permanent Link: Mengenal OpenCV dan Pengenalan Wajah'>Mengenal OpenCV dan Pengenalan Wajah</a> <small>OpenCV ialah program open source berbasiskan C++ yang saat ini...</small></li>
</ol></p>
<p>Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://widodo.com/teknologi-informasi/membuat-display-scope-berbasis-visual-c-net/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>
