<?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>FxDev &#124; ße Different Everytime! &#187; 16</title>
	<atom:link href="http://www.fxdev.org/etiket/16/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.fxdev.org</link>
	<description>FxDev &#124; This Evolution is Revolution</description>
	<lastBuildDate>Wed, 01 Feb 2012 22:16:58 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>C#: Gauge</title>
		<link>http://www.fxdev.org/c-gauge/</link>
		<comments>http://www.fxdev.org/c-gauge/#comments</comments>
		<pubDate>Sun, 22 Aug 2010 12:40:44 +0000</pubDate>
		<dc:creator>FxDev</dc:creator>
				<category><![CDATA[Mühendislik]]></category>
		<category><![CDATA[16]]></category>
		<category><![CDATA[atmega]]></category>
		<category><![CDATA[c]]></category>
		<category><![CDATA[Demo]]></category>
		<category><![CDATA[ege]]></category>
		<category><![CDATA[fxdev]]></category>
		<category><![CDATA[gauge]]></category>
		<category><![CDATA[izmir]]></category>
		<category><![CDATA[pic]]></category>
		<category><![CDATA[port]]></category>
		<category><![CDATA[seri]]></category>
		<category><![CDATA[serial]]></category>
		<category><![CDATA[slider]]></category>
		<category><![CDATA[terminal]]></category>
		<category><![CDATA[üniversitesi]]></category>
		<category><![CDATA[voltage]]></category>

		<guid isPermaLink="false">http://www.fxdev.org/?p=801</guid>
		<description><![CDATA[Çocuklarla meşe oynayacağım, iş yerine gideceğim, raporları yazacağım derken uzun bir süredir siteyle ilgilenemedim. Fakat bu geri dönüşte herkesin oldukça fazla ilgisini çekeceğini düşündüğüm bir konuya el attım: Gauge. İnternette dolaşırken &#8216;gauge&#8217;nin oldukça fazla anlama sahip olduğunu gördüm; 1 milin 100&#8242;de biri, tüfek namlusu ölçü birimi, ölçü aygıtı.. Benim ise ilgilendiğim tanımı &#8216;gösterge&#8217; olanıydı. Daha [...]]]></description>
			<content:encoded><![CDATA[<p><a class="lightbox" title="Microsoft Visual C# 2010" href="http://www.fxdev.org/wp-content/uploads/2010/08/c.png"><img class="alignright size-full wp-image-789" title="Microsoft Visual C# 2010" src="http://www.fxdev.org/wp-content/uploads/2010/08/c.png" alt="" width="214" height="32" /></a>Çocuklarla meşe oynayacağım, iş yerine gideceğim, raporları yazacağım derken uzun bir süredir siteyle ilgilenemedim. Fakat bu geri dönüşte herkesin oldukça fazla ilgisini çekeceğini düşündüğüm bir konuya el attım: <strong>Gauge</strong>.<br />
İnternette dolaşırken &#8216;gauge&#8217;nin oldukça fazla anlama sahip olduğunu gördüm; 1 milin 100&#8242;de biri, tüfek namlusu ölçü birimi, ölçü aygıtı.. Benim ise ilgilendiğim tanımı &#8216;gösterge&#8217; olanıydı. Daha önce C#&#8217;ta chart işlemlerini <a href="http://www.fxdev.org/cosinus-sinus-array-creator/" target="_blank"><strong>burada</strong></a> paylaşmıştım, fakat &#8216;chart&#8217; yapmak istediklerimi tam olarak karşılamamaktaydı, bu yüzden C#&#8217;ın drawing yani çizim kısmına girmem gerekti.<br />
Öncelikle kendim bir seven-segment uygulaması yapmaya karar verdim. Seven segment&#8217;in o köşeli yapısını vermek için <strong>System.Drawing</strong> sınıfının <strong>Polygon</strong> metodunu kullandım. Biraz matematiksel hesaptan sonra yanda görülen sonucu elde ettim.<span id="more-801"></span><a class="lightbox" title="Seven Segment" href="http://www.fxdev.org/wp-content/uploads/2010/08/seven_segment.png"><img class="alignright size-full wp-image-802" title="Seven Segment" src="http://www.fxdev.org/wp-content/uploads/2010/08/seven_segment.png" alt="" width="181" height="350" /></a> Fakat yapmak istediğimi, aklımdakini bir türlü oluşturamadım.<br />
C#&#8217;ta şekil çizmenin nasıl olduğunu öğrendikten sonra ise Amerika&#8217;yı tekrar keşfetmemek amacıyla internette aramalara koyuldum ve sonunda aradığım gauge&#8217;leri buldum.</p>
<p><strong>1) Seven Segment</strong><br />
İlk gauge&#8217;miz biz elektronikçilerin asla vazgeçemeyeceği seven segmentle ilgili. Codeproject&#8217;te gördüğüm seven segment uygulaması <a href="http://dmitrybrant.com/2009/07/01/seven-segment-display-for-dot-net" target="_blank"><strong>Dmitry Brant</strong></a>&#8216;a ait ve oldukça başarılı bir tool. İster tek bir seven segment öğesini ister küme halinde bulunan seven segment öğelerini formunuza yerleştirip, renginden, yatıklığına, büyüklüğünden, şekline kadar her şeyle oynayabiliyorsunuz. Telif hakları konusunda Dmitry Brant sadece ticari uygulamalar için kendisi ile görüşülmesini istemiş fakat Türkiye gibi bir ülkede kim bunu dikkate alır orası muamma.</p>
<p><strong>2) Gauge</strong><br />
İkinci ve gördüğümde &#8216;işte bu&#8217; dediğim gauge toolumuzu ise <a href="http://www.ucancode.net/CSharp_Tutorial_GDI+_Gauge_Source_Code.htm" target="_blank"><strong></strong><strong>bu siteden</strong></a> buldum. İlk bakışta hiç bir şey anlaşılmasa da kaynak dosyayı indirip projenize dahil etmenizle gerçekten her anlamda kontrol edebildiğiniz bir göstergeniz oluyor. Büyüklüğünü, renklerini, açılarını, gösterge büyüklüklerini yani hemen hemen her şeyi kontrol edebiliyorsunuz. Tek yapmanız gereken class dosyasını projenize eklemek.</p>
<p><strong>3) Sliding Scale</strong><br />
Üçüncü gaugemiz ise <a href="http://www.codeproject.com/KB/miscctrl/SlidingScale.aspx" target="_blank"><strong>Tefik Becirovic</strong></a>&#8216;e ait. Özellikle eski tip elektrik panolarında gördüğüm bu gösterge yerine göre oldukça faydalı işlevlerde kullanılabilir.</p>
<p>Projelerinize ayrı bir renk katacak bu göstergeler ile bir uygulama yapmamak olmazdı elbette. Bu düşünce ile aklıma ilk gelen uygulama, mikrodenetleyiciye bağlı sensörlerden alınan bilgilerin bu gaugeler kullanılarak bilgisayarda gösterilmesiydi ve sonucunda aşağıda görülen yapı ortaya çıktı.<br />
<a class="lightbox"  title ="Atmega 16 Terminal" href="http://www.fxdev.org/wp-content/uploads/2010/08/atmega_16_terminal.png"><img src="http://www.fxdev.org/wp-content/uploads/2010/08/atmega_16_terminal.png" alt="" title="Atmega 16 Terminal" width="640" height="585" class="aligncenter size-full wp-image-803" /></a>Yukarıdaki resimden de görüleceği üzere seri porttan haberleşme için gerekli protokolleri ayarlayan kısım <a href="http://www.fxdev.org/serial-port-terminal/" target="_blank"><strong>daha önceki projemden</strong></a> bire bir alınma. Projenin nasıl bir işleve sahip olduğu ise aşağıdaki videodan görülebilir. Videoyu tam ekran seyretmenizi öneririm. (Eğer video açılmıyorsa youtube ile ilgili bir probleminiz var demektir.)</p>
<p><a href="http://www.fxdev.org/c-gauge/"><em>Click here to view the embedded video.</em></a></p>
<p>Videodan da görüleceği üzere Proteus ve yazdığım program arasındaki bağlantı, Proteus&#8217;un içerisinde bulunan COMPIM adlı araçla mümkün olmuştur. Projenin kaynak kodlarını paylaşmayacak olsamda seri porttan gönderdiğim seri bilgi şu şekilde.<br />
4 bit: İlk seven segment dizisinin değeri, 1234 şeklinde gitmeli,<br />
4 bit: İkinci seven segment dizisinin değeri, 1234 şeklinde gitmeli,<br />
4 bit: İlk gerilim kaydırıcısının değeri, 5V=1024 olarak düşünülmeli, maksimum 1024 gönderilmeli,<br />
4 bit: İkinci gerilim kaydırıcısının değeri, 5V=1024 olarak düşünülmeli, maksimum 1024 gönderilmeli,<br />
4 bit: Üçüncü gerilim kaydırıcısının değeri, 5V=1024 olarak düşünülmeli, maksimum 1024 gönderilmeli,<br />
4 bit: İlk sıcaklık göstergesinin değeri, 5V=1024 olarak düşünülmeli, maksimum 1024 gönderilmeli,<br />
4 bit: İkinci sıcaklık göstergesinin değeri, 5V=1024 olarak düşünülmeli, maksimum 1024 gönderilmeli,<br />
4 bit: İlk gerilim göstergesinin değeri, 5V=1024 olarak düşünülmeli, maksimum 1024 gönderilmeli,<br />
4 bit: İkinci gerilim göstergesinin değeri, 5V=1024 olarak düşünülmeli, maksimum 1024 gönderilmeli.</p>
<p>Toplamda 36 byte boyutundaki diziyi C# ile çekmek için ise aşağıdaki kod öbeğini kullanabilirsiniz.</p>
<pre class="brush: csharp">private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e )
        {
            text = serialPort1.ReadExisting();

            if (text_temp.Length == 36 &#038;&#038; flag == true)
            {
                flag = false;
            }
            else if(flag==true)
            {
                if (text_temp.Length < = 36)
                    text_temp += text;
                else
                    text_temp = "";
            }
        }</pre>
<p>Son olarak gauge denemesi yaparken kullandığım <strong>CoreAudioApi</strong> adlı API'ye değinelim. Windows seslerini kontrol etmek için tasarlanmış bu .dll, <a href="http://www.codeproject.com/KB/vista/CoreAudio.aspx" target="_blank"><strong>Ray M.</strong></a> tarafından yazılmış ve tamamen bedava. Api bilgisayarın master sesini kontrol ettiği gibi, o anki sağ, sol ve master ses seviyelerini de alabiliyor. Bu da bizlere ses düzeylerini öğrenmemiz konusunda yardımcı oluyor.</p>
<p>Denememin sonucunda bu API'yi ve gauge'leri kullanarak aşağıda görebileceğiniz VuMetre uygulamasını yaptım.<br />
<a class="lightbox"  title ="Computer VuMeter" href="http://www.fxdev.org/wp-content/uploads/2010/08/computer_vumeter.png"><img src="http://www.fxdev.org/wp-content/uploads/2010/08/computer_vumeter.png" alt="" title="Computer VuMeter" width="600" height="177" class="aligncenter size-full wp-image-805" /></a>Bu uygulamaya ait video görüntüsü ise aşağıdan görülebilir. (Bilgisayarın sesini açarak dinleyiniz.)</p>
<p><a href="http://www.fxdev.org/c-gauge/"><em>Click here to view the embedded video.</em></a></p>
<p>Sonuç olarak tüm bu değerleri bir label'a ya da textbox'a yazdırıp, değişen değerleri yine gözlemleyebilirdik fakat örneklerde görüldüğü üzere gauge'ler projeye hem görsel hem de okuma kolaylığı kazandırdığından, kullanıcılar tarafından her zaman tercih edilmektedir. Bu yüzden sonraki yazılarımda bulduğum yeni gauge'leri yine sizlerle buradan paylaşacağım.</p>
<p>Programların 32 ve 64 bitlik sürümlerini ve Atmega16 için Proteus ve .hex dosyalarını <a href="http://www.4shared.com/file/fm6faJZQ/Gauge.html" target="_blank"><b>buradan</b></a> indirebilir, yeni sürüm güncellemelerini <a href="http://www.fxdev.org/muhendislik/"><b>Mühendislik</b></a>/<a href="http://www.fxdev.org/muhendislik/c-sharp/"><b>C#</b></a> bölümünden takip edebilirsiniz. Programların çalışabilmesi için sisteminizde Microsoft .NET Framework kurulu olması gerekmektedir. Microsoft .NET Framework kurulum dosyasına <a href="http://www.microsoft.com/net/" target="_blank"><b>buradan</b></a> ulaşabilirsiniz. Ayrıca programları istediğiniz şekilde paylaşıp, kullanabilirsiniz.</pre>
<div name="googleone_share_1" style="position:relative;z-index:5;float: left; margin-right: 290px;"><g:plusone size="standard" count="1" href="http://www.fxdev.org/c-gauge/">{lang: 'tr'}</g:plusone></div>]]></content:encoded>
			<wfw:commentRss>http://www.fxdev.org/c-gauge/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>AVR&#8217;ye Merhaba</title>
		<link>http://www.fxdev.org/avrye-merhaba/</link>
		<comments>http://www.fxdev.org/avrye-merhaba/#comments</comments>
		<pubDate>Thu, 27 May 2010 22:47:37 +0000</pubDate>
		<dc:creator>FxDev</dc:creator>
				<category><![CDATA[İnceleme]]></category>
		<category><![CDATA[Mühendislik]]></category>
		<category><![CDATA[16]]></category>
		<category><![CDATA[adc]]></category>
		<category><![CDATA[ansi c]]></category>
		<category><![CDATA[atmega]]></category>
		<category><![CDATA[atmel]]></category>
		<category><![CDATA[avr]]></category>
		<category><![CDATA[lm35]]></category>
		<category><![CDATA[sıcaklık]]></category>
		<category><![CDATA[voltage]]></category>
		<category><![CDATA[voltaj]]></category>

		<guid isPermaLink="false">http://www.fxdev.org/?p=722</guid>
		<description><![CDATA[Final sınavları başlayınca insana nereden geldiğini bilmediğim bir sıkıntı basıyor. Geçen senelerde bu sıkıntı anlarında sitemi düzenler ya da photoshop ile header tasarladım fakat bu dönem bir değişiklik yapıp, başka tür bir mikrodenetleyiciye giriş yapmak istedim. 8051 ile başlayan mikrodenetleyici maceram, PIC ile ilerlemiş fakat nedense hiç bir zaman Atmel&#8217;in ürettiği AVR&#8217;ye bulaşmamıştım. Hemen bu [...]]]></description>
			<content:encoded><![CDATA[<p><a class="lightbox"  title ="Atmel" href="http://www.fxdev.org/wp-content/uploads/2010/05/Atmel.jpg"><img src="http://www.fxdev.org/wp-content/uploads/2010/05/Atmel.jpg" alt="" title="Atmel" width="248" height="179" class="alignright size-full wp-image-724" /></a>Final sınavları başlayınca insana nereden geldiğini bilmediğim bir sıkıntı basıyor.<br />
Geçen senelerde bu sıkıntı anlarında sitemi düzenler ya da photoshop ile header tasarladım fakat bu dönem bir değişiklik yapıp, başka tür bir mikrodenetleyiciye giriş yapmak istedim.<br />
8051 ile başlayan mikrodenetleyici maceram, PIC ile ilerlemiş fakat nedense hiç bir zaman Atmel&#8217;in ürettiği AVR&#8217;ye bulaşmamıştım. Hemen bu eksiğimi gidermek, en azından ben buna el attım demek için kolları sıvadım.<br />
Öncelikle PIC&#8217;ten AVR&#8217;ye geçiş yapacaklar için söylemem gereken birinci şey şu: AVR için gerekli derleyiciler <b>bedava</b>!<span id="more-722"></span><br />
Evet yanlış duymadınız, PIC mikrodenetleyicilerde olduğu gibi yok deneme süresiymiş, yok başka bir şeymiş uğraşmıyorsunuz. Bu, eğer bir firma iseniz, çok büyük bir avantaj demek.<br />
Ayrıca belirtmem gerekiyor, Atmega16&#8242;nın datasheet&#8217;i bugüne kadar gördüğüm en güzel, en açıklayıcı datasheetlerden biri. Utanmasa sizin yerinize kodunuzu yazacak.<br />
&#8220;Vay bu çok güzelmiş&#8221; diyorsanız, sırayla yapmanız gerekenler ise şöyle:</p>
<p>- Öncelikle <a href="http://winavr.sourceforge.net/" target="_blank"><b>WinAVR</b></a>&#8216;yi bilgisayarımıza kuruyoruz.<br />
- Daha sonra <a href="http://www.eclipse.org/" target="_blank"><b>Eclipse</b></a> sitesinden Eclipse IDE for C/C++ Developer pakedini indiriyoruz, hemen bir yere dosyaları çıkartıp çalıştırıyoruz.<br />
- Daha sonra ise Eclipse&#8217;in Help sekmesinden Install New Software/Add kısmına basıp Location bölümüne &#8220;http://avr-eclipse.sourceforge.net/updatesite/&#8221; yazarak, eklentiyi yüklüyoruz ve hepsi bu.</p>
<p>Artık yeni proje oluşturup, AVR mikrodenetleyicinizi seçip kullanabilirsiniz.<br />
WinAVR&#8217;de ANSI C kullanıldığı için, daha önce PIC için hazırladığım donanım kütüphanelerimi çok az değiştirip kullanmak gerçekten çok rahat. Buradan hâlâ Pic Basic, CCS C kullananlara duyurulur.</p>
<p>Ben ilk örneğimi, Atmega16&#8242;nın ADC&#8217;lerinden bilgi okuyup, bunu LCD&#8217;de göstermek için uyguladım. Aşağıda uygulamaya ait resmi ve yazdığım basit kodları bulabilirsiniz. Üzerinde herhangi bir değişiklik yapıp kullanabilirsiniz.<br />
Yalnız kodu iyi incelerseniz PIC&#8217;teki TRISx yerine DDRx&#8217;nin geldiğini, PORT&#8217;larn PIC&#8217;teki gibi RB0 gibi bit bit kontrol edilemediğini göreceksiniz. İlk AVR denemelerinizde buna dikkat edip, &#8216;maskeleme&#8217; ne imiş öğrenmeniz gerekiyor. Gerisi yine size kalmış.</p>
<p>Sonuç olarak söylemem gerekirse; AVR ne denli güzelse, finaller de o denli sıkıcı.<br />
Herkese çalışmalarında, bana da finallerde başarılar.<a class="lightbox" title="Atmega16 ADC Uygulaması" href="http://www.fxdev.org/wp-content/uploads/2010/05/ADC.png"><img class="aligncenter size-full wp-image-723" title="Atmega16 ADC Uygulaması" src="http://www.fxdev.org/wp-content/uploads/2010/05/ADC.png" alt="" width="526" height="407" /></a></p>
<p><b>ADC Okuma Örneği:</b></p>
<pre class="brush: c">/* **** www.FxDev.org ****
 * ADC'den Gerilim ve Sıcaklık Ölçen Program
 */

#include "avr/io.h"
#include "util/delay.h"
#include "lcd.h"

#define ADC_REF_AREF 0x00
#define ADC_REF_AVCC 0x40
#define ADC_REF_INT  0xC0

unsigned char ADC_REF_TYPE;

void adc_init(unsigned char ADC_REF)
{
	ADCSRA = 0x87;
	ADC_REF_TYPE = ADC_REF;
}

unsigned int read_adc(unsigned char adc_channel)
{
	ADMUX = ADC_REF_TYPE | adc_channel;
	ADCSRA |= 0x40;
	while (ADCSRA &#038; 0x40);
	return ADC;
}

int main(void)
{
	unsigned int sicaklik,voltaj;
	PORTC=0x00;
	DDRC=0xFF;

	lcd_init();

	adc_init(ADC_REF_AVCC);

	lcd_yaz("FxDev.org Sunar!");
	lcd_gotoxy(2,1);
	lcd_yaz("AVR'ye Merhaba..");
	_delay_ms(1500);
	lcd_clear();

	lcd_gotoxy(1,1);
	veri_yolla('C');
	veri_yolla(0xDF);
	veri_yolla(':');
	lcd_gotoxy(2,1);
	lcd_yaz("V :");

	for(;;)
	{
		lcd_gotoxy(1,4);	// Okunan değer LCD'ye yazılıyor
		sicaklik=read_adc(0)*48; // Hesaplama yapılıyor
		_delay_us(50);
		veri_yolla(sicaklik/1000+48);
		veri_yolla((sicaklik%1000)/100+48);
		veri_yolla('.');
		veri_yolla((sicaklik%100)/10+48);
		veri_yolla(sicaklik%10+48);
		veri_yolla(0xDF);
		veri_yolla('C');
		lcd_gotoxy(2,4);
		voltaj=(int)(read_adc(1)/2.048);
		_delay_us(50);
		veri_yolla(voltaj/1000+48);
		veri_yolla((voltaj%1000)/100+48);
		veri_yolla('.');
		veri_yolla((voltaj%100)/10+48);
		veri_yolla(voltaj%10+48);
		veri_yolla('V');
	}
}</pre>
<div name="googleone_share_1" style="position:relative;z-index:5;float: left; margin-right: 290px;"><g:plusone size="standard" count="1" href="http://www.fxdev.org/avrye-merhaba/">{lang: 'tr'}</g:plusone></div>]]></content:encoded>
			<wfw:commentRss>http://www.fxdev.org/avrye-merhaba/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
	</channel>
</rss>

