Havaya Yazı Yazmak Uygulaması – PIC16F628

Havaya Yazı Yazmak, PIC mi kaldı diyenler olabilir. Evet picler hala birçok yerde kullanılıyor. Bende arşivimi karıştırırken lise yıllarında PIC16F628 ile yaptığım havaya yazı yazma projesini sizinle paylaşmak istedim. Dijital dünyada saklı kalacağına her zaman dediğim gibi bazı kısımları bazıların işine yarayabilirse ne mutlu bana. Belki ilerleyen zamanlarda arduino ile yeniden daha gelişmiş bir model yapabilirim.

Pic 16F628 ile yapılmış devre şeması 3 buton 7 LED’ den oluşmaktadır.

Havaya Yazı Yazma Uygulaması Devre Şeması
Havaya Yazı Yazma Uygulaması Devre Şeması

Mekanik olarak bu 7 LED’ i ister yatayda ister dikeyde sıralı olarak dizin ve bir motora bağlı olan platforma sabitleyin.

Havaya Yazı Yazma Uygulaması Mekaniği
Havaya Yazı Yazma Uygulaması Mekaniği
Havaya Yazı Yazmak Devre şeması

Burada önemli olan pic16f628′ i programlamadan önce motorun saniyedeki tur sayısı ve sütun genişliği hesaplanıp belirlenmelidir.

İnsan beyni saniyede 15 kareye kadar olan resimleri algılayabildiği için bu sistemde motor saniyede 20 tur atacaktır.

1 saniye = 20 tur atması isteniyorsa

1 tur T = 1/f = 1/20 = 0,05 saniye = 50 milisaniye

Sistemin sütun sayısını hesaplamak için

Dairenin çevresi = 50cm ise

Örneğin; sütun genişliği = 0,5cm

50/0,5 = 100 sütun

Sistemin satır sayısını hesaplamaya gerek yoktur, çünkü sistemde 7 LED kullanıldığı için satır sayısı da 7 dir.

Havaya Yazı Yazma Matrisi
Havaya Yazı Yazma Matrisi

Yukarıdaki grafik oldukça kolaylık sağlayacaktır.

Bir sütun için gecikme süresi (LED in 0,5cm yanık kalma süresi) için

1 tur = 0,05 sn ise

0,05/100 = 0,0005 sn = 500 milisaniyelik bir gecikme yapılmalıdır. Yazdığımız metnin bitiş noktası da belirlenmelidir. Böylelikle boşta kalan kısım hesaplanıp gecikme yapılması çok önemlidir. Aksi taktirde görüntü oluşmaz.

Metin için kullanılan sütun sayısı;

Örneğin; 25 sütun ise

Boşta kalan kısım = 100 – 25 75 sütundur.

Bu durumda boşta kalan kısım için gecikme

Bir sütun için 500 mikro saniye ise; 75 x 0,0005 = 0,0375 = 37,5 milisaniye olmalıdır.

Metin için toplam gecikme 25 x 0,0005 = 0,0125 = 12,5 milisaniye

1 tur = metin süresi + botsa kalma süresi = 12,5 + 37,5 = 50 milisaniye

Havaya Yazı Yazma Tur Hesaplama
Havaya Yazı Yazma Tur Hesaplama

Assembly dilinde çift döngü yapmak için;

Havaya Yazı Yazma Gecikme Hesaplama
Havaya Yazı Yazma Gecikme Hesaplama

Komut cycle sayısı = 3 x N x M

Gecikme süresi = Komut cycle sayısı x 4 / f

12,5 milisaniye gecikme için

4 MHz lik osilatör kullanıldığın da GS = KSS X 4/4 den    GS = KSS olur

12,5 milisaniye = 12500 mikro saniye

KSS = 3xNxM olduğuna göre       12500 = 3xNxM   NxM = 4166    N=255 ise M=16

37,5 milisaniye gecikme için

37500 = 3xNxM    NxM = 12500    N=255 ise M=49

Örneğin bir metin olarak ABC harflerini yazdıralım.

Programı yazmak için grafiğe ihtiyacımız olacaktır.
Havaya Yazı Yazma Karakter Kodlaması
Havaya Yazı Yazma Karakter Kodlaması

Grafiğin alt tarafı metne bağlı olarak binary olarak doldurulur. Metne denk gelen kutucular 1 diğerleri ise 0 olarak yazılır. Programı yazarken binary kodlara bakılarak PORTB yönlendirilir.

Metin kısmı 15 sütun dan oluştuğu için gecikme süresi

15 x 0,0005 = 7.5 milisaniye

7500 = 3xNxM            NxM = 2500                N=255  ise M=10 olur.

Boşta kalan kısım 100 – 15 = 85 sütun dan oluştuğu için gecikme süresi

85 x 0,0005 = 42.5 milisaniye

42500 = 3xNxM          NxM = 14166              N=255  ise M=55 olur.

Pic Programı koduna gelicek olursak sıkı durun, o zamanlar daha C dili ile tanışmadığımdan kodu assembly dilinde yazmışım. geçmiş olsun 🙂

İlerleyen zamanlarda daha gelişmiş bir Havaya Yazı Yazmak Arduino uygulaması yaparız. İyi kodlamalar.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak.

This site uses Akismet to reduce spam. Learn how your comment data is processed.