Yayınlar

Ekim, 2019 tarihine ait yayınlar gösteriliyor

adc okuma referans alma yöntemi dijital filtre

Resim
Bir işlemcinin adc pinlerinden okuma yaparken 1 ölçüm yerine 15-20 ölçüm alıp ortadaki değerleri değerlendirmek daha doğru sonuçlar almamızı sağlayacaktır. Etepic forumunda rast geldiğim adc okuma yöntemi basic formunda ama diğer dillere de çevrilebilir.  Önemli olan mantığı kavramak. Ete hoca yine püf noktaları anlatmış.

Örnek aşağıdadır
HAM VAR WORD
TOPLAM VAR WORD
OKUNAN VAR WORD[20]TEMP VAR WORD
I VAR BYTE

PAUSE 200

BASLA:
FOR I=0 TO 19
    ADCIN 0,HAM
    OKUNAN[I]=HAM
    PAUSEUS 10
NEXT

TOPLAM=0FOR I=7 TO 12
TEMP=OKUNAN[I]TOPLAM=TOPLAM+TEMP
NEXT
HAM=TOPLAM/6Bu sistemin avantajı, okumanın daha stabil olduğu ortalardan belirli bir sayıdaki okuma adedini dizi içinden alıp toplayıp ortalamasını almak şeklinde açıklanabilir. Birde digital filtre örneği yine ete'den:


OKUNAN VAR WORD[15]  'parentez içinde kaç adet dizideğişkeni ihtiyacımız var ise o rakamı yazıyoruz . 15 adet okuma yapacağımız için değişken adedimiz 15 olacaktır. Ama sıralamada sıfır dahil olduğu için 0-14 arasını kullan

en büyük en küçük sayıyı bulma kodu c basic

Resim
Bazı değerleri karşılaştırmak istediğinizde kullanabileceğiniz örnek C ve basic kodları aşağıdadır:

Basic:
Dim sayi1 as integer =12456
Dim sayi2 as integer =12245
Dim sayi3 as integer =13456
Dim sayi4 as integer =12411
Dim kontrol as integer = sayi1

if sayi2 < kontrol then kontrol = sayi2
if sayi3 < kontrol then kontrol = sayi3
if sayi4 < kontrol then kontrol = sayi4

print kontrol

C:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Dört_Sayıdan_En_Büyüğü
{
    class Program
    {
        static void Main(string[] args)
        {
            //Kullanıcının klavyeden girdiği dört sayıdan büyük olanının hangisi
            //olduğunu ekrana yazan C# console programını yazın.

            int kontrol,sayi1,sayi2,sayi3,sayi4;

            Console.Write("1. Sayıyı Giriniz:");
            sayi1 = Convert.ToInt16(Console.ReadLine());
            Console.Write("2. Sayıyı Giriniz:");
            sayi2 = Convert.ToInt16(C…

HMC5883L HMC5983 pusula devresi proton basic

Resim
Bir süredir HMC5883L pusula modülü ile çalışmalar yapıyorum, bunları paylaşmamın doğru olacağını düşündüm.

Öncelikle piyasada FAKE olarak adlandırabileceğimiz modüller mevcut. Bu modüllerin chip üzerinde hmc önünde DB veya DA ibaresi mevcut. Bu db ve da ile üretilen modellerin kalibre ve bir takım işlemlerle çalıştığı söyleniyor ama çalışan sağlam modül varken kimse bu işle uğraşmak istemez.

Paylaştığım kod hem HMC5883 hem de HMC5983 ile çalıştığını da belirteyim. Daha önce aynı modül için CCS C kodu paylaşmıştım. Onu da kullanabilirsiniz. Eğer orjinal HMC5883L  bulamazsanız HMC5983L veya basınç sensörü barındıran HMC5983L+BMP180 kullanabilirsiniz.

Ayrıca manyetik sapma koda ilave edilmeli. Dünyadaki her yerin manyetik sapma değeri farklı oluyor. Ve bu değere her yıl 6 dakika eklemek gerekiyor. Manyetik sapma değerlerini aşağıdaki linkten öğrenebilirsiniz:

http://www.magnetic-declination.com/

Not: Pusula sensörü 45 derece altı eğimde hatalı ölçüm yapar. Bunu dikkate alınız. Yapmış old…

proton basic pic18f2550 config setting ayarları

Resim
Proton basic son sürümünü kullanmak istediğimde pic18f2550 için bazı sıkıntılarla karşılaştım. Eski proton basic versiyonunda config ayarlamaları derleyici tarafından yapılırken 3.7.2.8 versiyonunda biraz uğraştırıcı oluyor. Neyseki etepic forumunda ete hocanın pic basic pro için hazırladığı pic18f2550 config ayarları yardımıma yetişti ve aşağıdaki listeyi oluşturabildim. Bu listenin altında usb config ayarları olan ikinci bir listede mevcut onuda etepic forumdaki pwm.c rumuzlu üye hazırlamış.

Ayrıca aşağıdaki linkteki programı proton basic yüklü pcye kurarsanız, proton idesine fuse generator eklenmiş olacak. Bu sayede istediğiniz config fuse ayarını yapabilirsiniz:

http://www.protonbasic.co.uk/content.php/2607-PIC-FuseConfigurator-Mk2


Config_Start FOSC = HS MCLRE = On PWRT = On FCMEN = Off IESO = Off BOR = Off VREGEN = Off WDT = Off PBADEN = Off CCP2MX = Off STVREN = Off LVP = Off XINST = Off Debug = Off Cp0 = Off Cp1 = Off Cp2 = Off Cp3 = Off CPB = Off CPD = Off WRT0 = Off WRT1 = Off WRT2 = Off WRT3 = Off WR…

mikrobasic button led code sample

Resim
Mikro basic ve MikroC derleyici örnek kodlarında port bazlı buton led örnekleri verilmiş, aynı portta buton led örneği yoktu bu nedsenle hazırlamak istedim. Portc 2. bitine buton, 0 bitine ise led bağlanmış durumda.  Derleyicide buton kütüphanesi seçilmeli.

program Button_Test

dim eskidurum as byte

main:
  ANSELA = 0   'A PORTU ADC KAPATILDI
  ANSELB = 0   'B PORTU ADC KAPATILDI
  ANSELC = 0   'C PORTU ADC KAPATILDI

  TRISC2_bit = 1 'PORTC.2 BİTİ GİRİŞ OLARAK AYARLANDI
  TRISC0_bit = 0 'PORTC.0 BİTİ ÇIKIŞ OLARAK AYARLANDI
  LATC = 0       'PORTC SIFIRLANDI

  eskidurum = 0 'DURUM DEĞİŞKENİ

  while TRUE
    if (Button(PORTC, 2, 1, 1)) then ' POTRC 2. BİTİNİ KONTROL ET
      eskidurum = 1
      LATC.0 = 0
    end if
    if (eskidurum and Button(PORTC, 2, 1, 0)) then 'PORTC2 PİNİNİN 1-0 DURUMUNU KONTROL ET
      eskidurum = 0
      LATC.0 = 1
    end if
  wend
end.