1- Özellikler / İşlevler
- İstenilen notalarla farklı farklı parçalar, istenilen hız seçenekleriyle kaydedilebilecek.
- İstenilen parça çalınabilecek.
- Kaydedilen parça sistem kapatılsa da, elektrik kesilse de hafızada kalacak.
- Arayüz olacak, kullanıcıya menü, seçenekler sunulacak, bilgilendirmeler yapılacak.
- Kullanıcı denetimi tuş takımıyla yapacak.
2 – Donanımsal gerçekleme
- Donanımsal altyapı olarak Kocaeli Üniversitesi Elektronik ve Haberleşme Mühendisliği öğretim görevlisi Yrd. Doc. Dr. Mehmet YAKUT tarafından tasarlanan MYPICLAB 1.0 PICOLIC deney kiti kullanılmıştır.
- PIC16F877 kullanılmıştır.
- 2×16 LCD ile ara yüz oluşturulmuştur.
- Kit üzerindeki 24 (4×6) adet tuştan, 8 tanesi kullanılmıştır.
- Bir yükselteç ile hoparlör kullanılmıştır.
2.a – Donanım yapısı
PIC16F877’nin port bağlantıları (kit için):
- B0: Hoparlöre giden yükselteç, baz
- B4 – B5 – B6 – B7: Tuş takımı dikey tarama
- C0 – C1 – C2 – C3 – C4 – C5: Tuş takımı düşey tarama
- D0: LCD – E
- D1: LCD – RS
- D2: LCD – RW
- D4: LCD – D4
- D5: LCD – D5
- D6: LCD – D6
- D7: LCD – D7
Diğer LCD bacakları:
LCD – VDD: +5V LCD – VSS: GND 
2.b – Pratiğe uyarlama
Sistem kapatıldığında, elektrik kesildiğinde kaydedilen parçaların silinmemesi için verileri EEPROM’a yazıyoruz. PIC16F877 256 byte’lık bir EEPROMa sahiptir. Bir parçanın 60-70 nota uzunluğunda olduğu kabul edilerek melodi çaları 4 parça kapasiteli olarak tasarlıyoruz. Notalar dışında kaydedilmesi gereken şeyler ise; Parça uzunluğu – bellekte 60 notalık 60 byte yer ayırdığımızı kabul edersek, 60 notadan kısa bir parça kaydedildiğinde boş vakit geçirmesini engellemek, kaydedilen notalar bittiğinde baştan tekrar çalmaya başlanması için parça uzunluğunu kaydetmeliyiz. Parça hızı – bir notanın kaç milisaniye çalınacağıyla ilgilidir. Parçalar için menü seçeneğinde şöyle bir ön tanımlama yapıyoruz; 1: 100 ms 2: 200 ms 3: 500 ms 4: 800 ms 5: 1000 ms
2.c – EEPROM kullanım tasarımı
256 bytelık bir EEPROM’da kaydetmemiz gereken 4 parça bulunmakta. Ayrıca her parça için hız ve parça uzunluğu olmak üzere 8 byte veri de kaydedilecek. EEPROM veri tahsisini şu şekilde yapıyoruz;
| EEPROM adres |
Tahsis |
| 1 |
1. parça uzunluğu |
| 2 |
2. parça uzunluğu |
| 3 |
3. parça uzunluğu |
| 4 |
4. parça uzunluğu |
| 5 |
1. parça hız |
| 6 |
2. parça hız |
| 7 |
3. parça hız |
| 8 |
4. parça hız |
| 9 |
BOŞ |
| 10 |
1. parça başlangıç |
| … |
1. parça |
| 70 |
2. parça başlangıç |
| … |
2. parça |
| 130 |
3. parça başlangıç |
| … |
3. parça |
| 190 |
4. parça başlangıç |
| … |
4. parça |
| 256 |
4. parça bitiş |
2.d – Tuş algılama / Tuş takımı tarama
Tuş takımı bağlantısında tuşların sol bacakları dikey tarama için B portuna bağlıdır. Her satır için farklı B portu kullanılmıştır(b0-b1-b2-b3). Tuşların sağ bacaları da yatay tarama için C portuna bağlanmıştır. Her sütun için farklı C portu kullanılmıştır(c0-c1-c2-c3-c4-c5). Bu şekilde her tuş için farkı bir B-C portu birleşimi oluşmuştur. Örneğin, sağ alt tuşa basıldığında b3 ile c5 kısa devre olmaktadır. Tuş takımı taramada yapılacak olan şey bu kısa devre olan portları tespit etmektir; Sırayla b0-b1-b2-b3 portlarını aktif yapıp, her seferinde c portlarını tarayarak hangi c portunun aktif olduğunu tespit edeceğiz. Bu projede üst satırdaki tuşlar, 2. satırda ilk tuş ve en sağ en alt tuş olmak üzere toplam 8 tuş kullanılmıştır. Buna göre algoritmanın yapacağı iş;
- B0’ı aktif yap
- C0-c1-c2-c3-c4-c5 test et, aktif olan basılıdır.
- Aktif olan yoksa B0’ı pasif yap, B1’i aktif yap.
- C0’a bak. Aktifse basılmıştır.
- Aktif değilse B1’i pasif yap. B3’ü aktif yap.
- C5’e bak. Aktifse basılmıştır.
- Aktif değilse hiçbir tuş basılı değildir. Sonsuz döngü içinde bunları baştan uygula.
ÖNEMLİ: Yukarıda anlatılan döngü çok kısa bir sürede (mili/mikrosaniyeler) tamamlanacaktır. İnsanın bir tuşa basması ortalama 500ms sürebilir. 500ms boyunca tuş takımı binlerce kez taranacaktır. Eğer tuş takımı taramada tuş basışlarını her algıladığımızda işlem yapsak, kullanıcı o tuşa bir kez basmışsa bile binlerce kez basmış gibi algılanacaktır. Buna bir çözüm olarak şu algoritma üretilmiştir; Tuş algılandığında program ayrı bir sonsuz döngüye sokularak, tuşun bırakıldığı (portun pasif olduğu) anı bekleyecektir. Tuş bırakıldığı anda bekleme döngüsünden çıkılacak ve tuşa basıldı işlemleri yapılacaktır. Bu şekilde tuşa bir kez basıldığı algılanacaktır.
2.e – Nota tanımlama / kaydetme
Voice.h dosyasında notaların frekans karşılığı tanımlanmıştır. Voice.h dosyasında tanımlanan generate_tone fonksiyonuna C_NOTE[4] şeklinde nota gönderilmelidir. Ancak bu şekilde kayıt için EEPROM’da çok yer kullanmak gerekecektir. Bu sebeple kendi tanımlamalarımızı yapıyoruz ve bir nevi sıkıştırma yapmış oluyoruz. Bu tanımlamaya göre her nota için sayı karşılığını belleğe atıyoruz, bellekten çağırıp o sayıya karşılık gelen notayı (frekansı) fonksiyona gönderiyoruz. Tanımlama tablosu;
| Nota |
Frekans |
Kod |
| DO |
523 |
1 |
| RE |
582 |
2 |
| Mİ |
659 |
3 |
| FA |
740 |
4 |
| SOL |
831 |
5 |
| LA |
880 |
6 |
| Sİ |
988 |
7 |
Örneğin, LA-Mİ-DO şeklinde bir nota dizilimi belleğe 6-3-1 sayılarıyla kaydedilecektir.
5 – Sistemin çalışması
Sistem çalıştırıldığında kullanıcıya LCD ekranda bir menü çıkacak. Menüden “kaydet” veya “çal” seçilecek. Kaydetme için hangi parça üzerine (1-2-3-4) yazılacağı seçilecek, kaydetme işlemi yapılacak, “giriş” tuşu ile kayıt sonlandırılacak. Notalar kaydedildikten sonra bu parça için hız seçenekleri sunulacak. 2.b’deki tabloya göre kullanıcıya 1-2-3-4-5 seçenekleri sunulacak. Kayıt işlemi tamamlandıktan sonra ana menüye geri dönülecek. Çalma işleminde ise hangi parçanın çalınacağı sorulacak (1-2-3-4). Buna göre seçilen parça sonsuz döngü içinde çalınmaya başlanacak. Parçanın herhangi bir anında “giriş” tuşuna basılırsa program ana menüye geri dönecek. 
4 – Yazılımsal gerçekleme
Yazılımsal gerçekleme belirlediğimiz PIC için ASM ve HEX kodlarını üretebileceğimiz PIC C ile yapılmıştır. Kolaylık olması için fonksiyon tanımlamaları ve etiket yönlendirmeleri kullanılmıştır.
4.A - Fonksiyonlar
main öncesinde tanımlanan fonksiyonlar. main içinde çağırılacaktır.
4.A.1 – melodibas
Görevi bölüm 2.e’de tanımlanan kodlara göre voice.h içinde tanımlanan generate_tone fonksiyonunu çalıştırmak. Fonksiyona giriş olarak nota kodu ve nota çalma uzunluğu gönderilecek.
void melodibas(int melodikod,int notasure) { int nota; if(melodikod==1) { nota=523; } else if(melodikod==2) { nota=587; } else if(melodikod==3) { nota=659; } else if(melodikod==4) { nota=740; } else if(melodikod==5) { nota=831; } else if(melodikod==6) { nota=880; } else if(melodikod==7) { nota=988; } generate_tone(nota,notasure); }
4.A.2 – menutusu
Parça çalınırken her notadan sonra, yani her melodibas fonksiyonundan sonra çağıracağımız fonksiyon. Tuş takımındaki sağ alt tuşu kontrol edecektir. Eğer tuşa basılıyla “1” döndürecektir. Ve bu teste göre parça çalmadan çıkılıp ana menüye dönülecektir.
int menutusu() { output_high(PIN_B4); if(input(PIN_C5)==1) { while(input(PIN_C5)==1) { } return 1; } else { return 0; } }
4.A.3 – tustara
Parça kaydetme esnasında her nota kaydı sonrasında çağırılacak. Geriye basılan notanın 2.e’deki tablodaki kod karşılığını döndürecektir. Eğer sağ alt “giriş” tuşuna basılırsa bu parçanın bittiği anlamına gelecektir. “giriş” tuşu algıladığında geriye “10” döndürecektir. Bu şekilde parça kaydını bitirip hız belirleme işlemine geçeceğiz.
int tustara() { int tus=0; while(tus==0) { output_high(PIN_B4); if(input(PIN_C5)==1) { while(input(PIN_C5)==1) {} tus=10; } output_low(pin_b4); output_high(pin_b6); if(input(pin_c0)==1) { tus=7; while(input(pin_c0)==1) {} } output_low(pin_b6); output_high(pin_b7); if(input(pin_c0)==1) { tus=1; while(input(pin_c0)==1) {} } else if(input(pin_c1)==1) { tus=2; while(input(pin_c1)==1) {} } else if(input(pin_c2)==1) { tus=3; while(input(pin_c2)==1) {} } else if(input(pin_c3)==1) { tus=4; while(input(pin_c3)==1) {} } else if(input(pin_c4)==1) { tus=5; while(input(pin_c4)==1) {} } else if(input(pin_c5)==1) { tus=6; while(input(pin_c5)==1) {} } output_low(pin_b7); } return tus; }
4.B – Etiketler
Program akışında kullanıcının isteklerine göre yapılacak olan işlemlerin akış sırasını belirlemek için etiketleme kolay bir yöntemdir. Kullanıcıdan tercih beklenir, tercihe göre ilgili kod parçacığının etiketine yönlendirme yapılır. Etiketler asıl program akışını belirler, main içindedir.
4.B.1 – menu
Ana menü etiketidir. Sistem ilk çalıştırıldığında devreye girer. İçerisinde kullanıcıdan “kaydet” veya “çal” seçeneklerinden birini seçmesini bekleyecek bir sonsuz döngü vardır. Bu seçeneklere göre yeni etiket yönlendirmeleri yapılır.
menu: lcd_init(); printf(lcd_putc,"1| KAYIT\n2| CAL"); while(1) { output_high(pin_b7); if(input(pin_c0)==1) { while(input(pin_c0)==1) { } goto kayitmenu; } if(input(pin_c1)==1) { while(input(pin_c1)==1) { } goto calmenu; } }
4.B.2 – calmenu
Ana menüden “çal” seçeneği ile “calmenu” etiketine yönlendirme yapılır. calmenu kullanıcıya hangi parçayı çalmak istediğini sorar, sonsuz döngü içerisinde 1-2-3-4 tuşlarından birine basılmasını bekler. Tuş algılandığında “baslangic” etiketine gönderir. baslangıc etiketinin ilgili işlemleri için kullanıcının bastığı tuşa göre “parcano” değişkenini belirler.
calmenu: lcd_init(); printf(lcd_putc,"PARCA SECiNiZ:\n 1 | 2 | 3 | 4"); while(1) { output_high(pin_b7); if(input(pin_c0)==1) { while(input(pin_c0)==1) {} parcano=1; goto baslangic; } if(input(pin_c1)==1) { while(input(pin_c1)==1) {} parcano=2; goto baslangic; } if(input(pin_c2)==1) { while(input(pin_c2)==1) {} parcano=3; goto baslangic; } if(input(pin_c3)==1) { while(input(pin_c3)==1) {} parcano=4; goto baslangic; } }
4.B.3 – kayitmenu
Ana menüden kayıt seçeneğinin seçilmesiyle bu etikete yönlendirme yapılacak. kayitmenu etiketi içerisinde kullanıcıya yeni yapılacak olan kaydın hangi parça üzerine yapılacağı sorulacak (1-2-3-4). Buna göre parça kayıt numarası, o parçanın çalma hızı kayıt yeri, parçanın nota kayıt başlangıç adresi değişkenlere atanacak. Kullanıcı parça seçtiği anda kullanıcıya “parça kayıtta” bilgilendirmesi yapılacak ve “kayitislemler” etiketine yönlendirme yapılacak.
while(1) { output_high(pin_b7); if(input(pin_c0)==1) { while(input(pin_c0)==1) {} parcakayitno=1; parcabaslangicadres=10; parcahizadres=5; lcd_init(); printf(lcd_putc,"1 numarali parca\nkayitta..."); goto kayitislemler; } if(input(pin_c1)==1) { while(input(pin_c1)==1) {} parcakayitno=2; parcabaslangicadres=70; parcahizadres=6; lcd_init(); printf(lcd_putc,"2 numarali parca\nkayitta..."); goto kayitislemler; } if(input(pin_c2)==1) { while(input(pin_c2)==1) {} parcakayitno=3; parcahizadres=7; parcabaslangicadres=130; lcd_init(); printf(lcd_putc,"3 numarali parca\nkayitta..."); goto kayitislemler; } if(input(pin_c3)==1) { while(input(pin_c3)==1) {} parcakayitno=4; parcahizadres=8; parcabaslangicadres=190; lcd_init(); printf(lcd_putc,"4 numarali parca\nkayitta..."); goto kayitislemler; } }
4.B.4 – baslangic
Sistemin esas işlevi olan melodi çalma işini yapan kısım “baslangic” etiketiyle başlayan kısım. “calmenu”den aldığı “parcano” bilgisiyle o parçanın çalma hızını, parça uzunluğunu EEPROM’dan çeker ve sonsuz döngü içerisinde esas işlemleri yapar. Bu sonsuz döngü içerisinde parçanın notalarını EEPROM’dan sırayla okur, “melodibas” ile sesi üretir, nota uzunluğuyla test yapar (çalınan nota sayısı parçanın nota sayısına eşitlendiğinde parçayı baştan çalmaya başlar) ve her seferinde “menutusu” fonksiyonu ile kullanıcının menüye çıkış talebinin olup olmadığını kontrol eder ki bu sonsuz çalma döngüsünden tek çıkış yolu menü tuşuna basılmasıdır.
baslangic: if(parcano==1) { notasayisi=read_eeprom(1); notauzunluk=read_eeprom(5); calmasira=10; lcd_init(); printf(lcd_putc,"1 numarali parca\ncaliniyor..."); } if(parcano==2) { notasayisi=read_eeprom(2); notauzunluk=read_eeprom(6); calmasira=70; lcd_init(); printf(lcd_putc,"2 numarali parca\ncaliniyor..."); } if(parcano==3) { notasayisi=read_eeprom(3); notauzunluk=read_eeprom(7); calmasira=130; lcd_init(); printf(lcd_putc,"3 numarali parca\ncaliniyor..."); } if(parcano==4) { notasayisi=read_eeprom(4); notauzunluk=read_eeprom(8); calmasira=190; lcd_init(); printf(lcd_putc,"4 numarali parca\ncaliniyor..."); } // calma dongusu basla kalannota=notasayisi; while(1) { melodibas(read_eeprom(calmasira),notauzunluk); calmasira++; if(kalannota==0) { goto baslangic; } if(menutusu()==1) { goto menu; } kalannota--; } // calma bitti
4.B.5 – kayitislemler
“kayitmenu”den kaçıncı parça üzerine kayıt yapılacağı ve o parçanın EEPROM adres bilgileriyle birlikte “kayitislemler”e yönlendirme yapılacak. Kayıt yapılırken kullanıcı do-re-mi-fa-sol-la-si notaları için 7 tuşla melodi girecektir. Basılan her tuşla ilgili nota “melodibas” ile kullanıcıya dinletilecektir. Girilecek olan parça bittiğinde “giriş” tuşuna basacaktır. Girilen tuş testi “tustara” fonksiyonuyla yapılmaktadır. tustara fonksiyonu 2.e’deki tabloya göre nota kodlarını gönderecektir. Eğer giriş tuşuna basılırsa “10” sayısını geri gönderecektir. Yani kayitislemler kısmında gelen tuş 10 olmadığı sürece devam etmelidir. Her yeni girilen nota EEPROM’da bir sonraki adrese yazılacaktır. 10 sayısı geldiğinde ise parçanın toplam uzunluğu o parçanın uzunluk adresine yazılacaktır. Daha sonra da parçanın hızının belirlenmesi için “hizkayit” etiketine yönlendirme yapılacaktır.
kayitislemler: tussira=0; while(1) { tusgelen=tustara(); if(tusgelen==10) { // parca uzunluk kayit write_eeprom(parcakayitno,tussira); goto hizkayit; } write_eeprom((parcabaslangicadres+tussira),tusgelen); melodibas(tusgelen,500); tussira++; }
4.B.6 – hizkayit
Bir parçanın tüm notaları girildikten sonra “kayitislemler”den “hizkayit”a yönlendirme yapılacak. Kullanıcıdan girilen parçanın çalma hızı seçilmesi istenecek. Bunun için bölüm 2.b’deki tanımlama kullanılacak. Kullanıcıya girdiği parçanın kaydedildiği bilgisi 1 saniye boyunca gösterilecek ve arkasından 1-2-3-4-5 hız seçeneklerinden birini seçmesi istenecek. Sonsuz döngü içinde tuş takımı taraması yapılacak, kullanıcının seçtiği hız seçeneğine göre 1 saniye boyunca LCD ekranda o hız seçeneğinin milisaniye cinsinden karşılığıyla, kaydedildi bilgisi gösterilecek. Bu şekilde parçanın kayıt işlemi tamamen bitmiş olacak ve ana menüye dönülecek.
hizkayit: lcd_init(); printf(lcd_putc,"PARCA KAYDEDiLDi."); delay_ms(1000); lcd_init(); printf(lcd_putc,"HIZ GIRINIZ:\n1|2|3|4|5"); delay_ms(1000); while(1) { output_high(pin_b7); if(input(pin_c0)==1) { while(input(pin_c0)==1) {} write_eeprom(parcahizadres,100); lcd_init(); printf(lcd_putc,"HIZ: 1=100ms\nKAYDEDILDI..."); delay_ms(1000); goto menu; } if(input(pin_c1)==1) { while(input(pin_c1)==1) {} write_eeprom(parcahizadres,200); lcd_init(); printf(lcd_putc,"HIZ: 2=200ms\nKAYDEDILDI..."); delay_ms(1000); goto menu; } if(input(pin_c2)==1) { while(input(pin_c2)==1) {} write_eeprom(parcahizadres,500); lcd_init(); printf(lcd_putc,"HIZ: 3=500ms\nKAYDEDILDI..."); delay_ms(1000); goto menu; } if(input(pin_c3)==1) { while(input(pin_c3)==1) {} write_eeprom(parcahizadres,800); lcd_init(); printf(lcd_putc,"HIZ: 4=800ms\nKAYDEDILDI..."); delay_ms(1000); goto menu; } if(input(pin_c4)==1) { while(input(pin_c4)==1) {} write_eeprom(parcahizadres,1000); lcd_init(); printf(lcd_putc,"HIZ: 5=1000ms\nKAYDEDILDI..."); delay_ms(1000); goto menu; } }
5 – Sistemin simülasyonu
Sistem, bölüm 2.a’da sunulan şekildeki gibi Proteus’ta kurulmuş, yazılan C kodlarının HEX çıktıları PIC16F877’ye tanıtılmıştır. PIC çalışma frekansı 20MHz seçilmiştir. Bu görsel raporda yalnızca ara yüz simülasyonu gösterilebilmektedir.
5.A – Ana Menü
Sistem çalıştırıldığı anda ana menü çıkıyor.

5.B – Kayıt menüsü
Ana menüden “1” seçeneğiyle beliriyor.

5.C – Parça kayıt
Kayıt menüsünden herhangi bir parça seçildiğinde görünen kayıt ekranı;

5.D – Parça kaydedildi
Parçanın tüm notalarını girdikten sonra “giriş” tuşuna bastığımızda nota kayıt işlemi sonlanıyor ve 1 saniye boyunca kaydedildi bilgisi gösteriliyor.

5.E – Hız kayıt
Parçanın nota kayıtlarından sonra bölüm 2.b’deki tanımlamalara göre kullanıcıdan o parça için hız seçmesini istiyoruz.


Hız kayıt işlemi de tamamlanınca ana menüye dönüş olacak.
5.F – Çalma menüsü
Ana menüden “çal”ı seçince karşımıza hangi parçayı çalmak istediğimizi soran parça menüsü çıkıyor. 
5.G – Çalma işlemi

Bu esnada, çalma döngüsünden tek çıkış yolu “giriş” tuşuna basılması. Bu sayede ana menüye dönülebilir.
|
8 Şubat, 2008 saat 03:21
[...] EMRAH ÜSTÜN internet güzel bir şeydir ← PIC C ve PIC16F877 ile kaydedilebilir melodi çalar [...]
8 Şubat, 2008 saat 22:23
Güzel proje olmuş Emrah, bir ara denemem lâzım
12 Şubat, 2008 saat 00:01
[...] (more…) [...]
17 Şubat, 2008 saat 09:42
[...] (more…) [...]
17 Şubat, 2008 saat 09:42
[...] (more…) [...]
5 Mart, 2008 saat 09:24
5 Nisan, 2008 saat 00:21
çok güzel
20 Haziran, 2008 saat 02:14
peki bizim laboratuvardaki sette de şu frekans tablosu hazırda var mı? yani örneğin 1. tuşa basıldığı zaman, istediğim notayı çaldırmam kolay olur mu? burada bana düşen iş çok mu fazla? ben bu işi 5 günde halledebilir miyim?
20 Haziran, 2008 saat 02:56
frekans tablosu dediğin sayılardan ibaret. her tuş için bir sayı atayacaksın. işin o kısmı hiç zor değil.
tuş takımı okuma yapıldıktan sonra gerisi kolay, bence yapılır.
20 Haziran, 2008 saat 14:48
aslında tuş takımı olarak settekini kullanmayı da düşünmüyordum.. yani kendim 8 ‘lik bi tuş takımı yapıp onlara birer nota atamak suretiyle org benzeri bi şey yapacaktım.. 5 günde yer mi yemez mi diye merak ediyordum ama gerek kalmadı artık
anladın sen onu..
sormuşken devam edeyim; peki bu notaları setten dışarı yani bi hoparlöre nasıl basarız? bi ara birim, bi dönüştürücü gibi bi şey mi kullanmak gerek? dac kullanmak işimizi görmez sanırım..?
20 Haziran, 2008 saat 14:56
hayırlı olsun ilk başta.
son başta da,
verileri apörlö’ye dac’la göndermek eziyet olur. yani bir de genlik değişsin dersen ohoooo…
pwm ile yapacaksın. bir tuşa direlim 10khz çıkartacak değeri attın, tuşa basılı olduğu süre boyunca 10 khz lik pwm vereceksin. yani porttan olur direk. iyi mi?
20 Haziran, 2008 saat 20:35
yani port çıkışı doğrudan hobarlöye mi bağlı olacak? ayrıca notaların frekansı sabit mi? pwm ‘le yapalım da onun hesabı nasıl olacak, anlayamadım bi türlü.. yani frekansı elde etmek için pwm ‘in dolu-boş kısımlarını nasıl ayarlarız? kısacası, istediğim frekansı elde etmek için gereken sayısal hesap, basit bi şey mi? nasıl bi şey?
21 Haziran, 2008 saat 01:12
birincisi hayırdır? geçmişsin meraktan mı?
ikincisi,
portu direk hobarloya verebilirsin, 2.55V yetecek bir hobarloya tabi. olmadı basit bir yükselteç de olur. pwm frekansını da şu şekilde, %50 lik pwm lerle frekansı değiştireceksin.
şuraya bir göz at. farklı frekanslar için darbe şekilleri var.
21 Haziran, 2008 saat 04:44
meraktan soruyorum yahu.. vizede aklımıza gelen en orijinal fikir ‘mini org’ gibi bi şey yapmaktı.. büt sonucunu görmeden önce tekrar bi proje arayışına başlamıştım da o sebepten merak etmiştim ama gerek yok tabi artık..
tamam anladım artık, yeterli bu kadar açıklama..