Proton Array ve Ortalama

Başlatan ercan_wrc, 17 Mart 2011, 02:18:27

ercan_wrc

Arkadaşlar merhaba;
protonda array tanımlayıp ortalama almak istiyorum.
bunu için şöyle bir kod yazdım ama ne derece doğru bilmemiyorum sizlere sormak istedim.
Yapmak istediğim şey potansiyometrenin 60 kere okunması ve sonra bunun ortalamasını almak istiyorum
(okunan değer en fazla 1016 olduğu için byte değişkeni 65000 alıyor o nedenle 60kere ölçüp ortalamasını almak istiyorum.)
Bilmiyorum bu kadar kolay bir kodla bu ölçüm ortalaması olabilirmi :) isisimde şuan problem olduğu için deneyemedim


Dim HAM As  Word
Dim ary[60] As Byte
Dim i As Byte

    If ADCON0.2=1
....
.....
.....
       For i = 1 To 60
           ary = ary[i-1] + HAM
       Next
       HAM = ary / 60

Maxim

neden array tanımlayıp ortalama alıyoruz anlamadım ?
hem 1016 word olmalı değilmi ?

normal word olarak 60 kere örnek alıp ona /60 desek olmazmı ?

ercan_wrc

Alıntı yapılan: Maxim - 17 Mart 2011, 07:52:36
neden array tanımlayıp ortalama alıyoruz anlamadım ?
hem 1016 word olmalı değilmi ?

normal word olarak 60 kere örnek alıp ona /60 desek olmazmı ?

evet word olmalı :)
doğru ya benim gece 2 de düşüncemde array kullanma sebebim çok uçuk değerleri iptal etmekti aslında
yani saniyede koşullara göre fazla değişkenlik gösteren bir pot olacak mesela ölçtüm 800 ölçtüm 750 ölçtüm 770 vs vs ölçtüm 525 bu 525 gibi doğrulup payını azalatacak sayıları elemekti düşüncem. ama normalde değişkenlede yapılır. gece belli bi uğraştan sonra kafa duruyo :) doğrusunuz. teşekkürler

alayli

Alıntı yapılan: ercan_wrc - 17 Mart 2011, 11:27:33
Alıntı yapılan: Maxim - 17 Mart 2011, 07:52:36
neden array tanımlayıp ortalama alıyoruz anlamadım ?
hem 1016 word olmalı değilmi ?

normal word olarak 60 kere örnek alıp ona /60 desek olmazmı ?

evet word olmalı :)
doğru ya benim gece 2 de düşüncemde array kullanma sebebim çok uçuk değerleri iptal etmekti aslında
yani saniyede koşullara göre fazla değişkenlik gösteren bir pot olacak mesela ölçtüm 800 ölçtüm 750 ölçtüm 770 vs vs ölçtüm 525 bu 525 gibi doğrulup payını azalatacak sayıları elemekti düşüncem. ama normalde değişkenlede yapılır. gece belli bi uğraştan sonra kafa duruyo :) doğrusunuz. teşekkürler

Bu söylediğinizi @Maxim 'in dediği şekilde yapamazsınız. Amacınızın bu olduğunu daha önceki mesajınızda belirtmiş olsaydınız muhtemelen @Maxim'de farklı öneride bulunurdu.

Ortalamanın çok altında ve üstünde kalan değerleri ortalama hesabının dışında tutmak için dediğiniz gibi word array kullanmalısınız. Daha sonra bunları küçükten büyüğe veya büyükten küçüğe sıralamalısınız. Bu işlemler bir hayli zaman alacağı ve değişken kullanımı gerektireceği için örnek alma sayısını işlem hızınıza ve kullandığınız Pic'in Ram alanına bağlı olarak optimize etmenizde fayda var. Örneğin 60 değilde 30 örnek alıp sıralamada  üst ve altta kalan 7'şer uç örneği çıkartıp ortada kalan 16 tanenin ortalamasını alabilirsiniz. Sıralama algoritmaları ve örnek kodlarla ilgili https://www.picproje.org/index.php/topic,32011.0.html linki fazlasıyla işinize yarayacaktır...
Anca kazganmiş itmiş ilimiz törümüz erti. Türk Oguz begleri budun esiding. Üze tengri basmasar, asra yir telinmeser, Türk budun, ilingin törüngin kim artati? (udaci erti)

ercan_wrc

#4
Alıntı yapılan: alayli - 17 Mart 2011, 11:57:40
Alıntı yapılan: ercan_wrc - 17 Mart 2011, 11:27:33
Alıntı yapılan: Maxim - 17 Mart 2011, 07:52:36
neden array tanımlayıp ortalama alıyoruz anlamadım ?
hem 1016 word olmalı değilmi ?

normal word olarak 60 kere örnek alıp ona /60 desek olmazmı ?

evet word olmalı :)
doğru ya benim gece 2 de düşüncemde array kullanma sebebim çok uçuk değerleri iptal etmekti aslında
yani saniyede koşullara göre fazla değişkenlik gösteren bir pot olacak mesela ölçtüm 800 ölçtüm 750 ölçtüm 770 vs vs ölçtüm 525 bu 525 gibi doğrulup payını azalatacak sayıları elemekti düşüncem. ama normalde değişkenlede yapılır. gece belli bi uğraştan sonra kafa duruyo :) doğrusunuz. teşekkürler

Bu söylediğinizi @Maxim 'in dediği şekilde yapamazsınız. Amacınızın bu olduğunu daha önceki mesajınızda belirtmiş olsaydınız muhtemelen @Maxim'de farklı öneride bulunurdu.

Ortalamanın çok altında ve üstünde kalan değerleri ortalama hesabının dışında tutmak için dediğiniz gibi word array kullanmalısınız. Daha sonra bunları küçükten büyüğe veya büyükten küçüğe sıralamalısınız. Bu işlemler bir hayli zaman alacağı ve değişken kullanımı gerektireceği için örnek alma sayısını işlem hızınıza ve kullandığınız Pic'in Ram alanına bağlı olarak optimize etmenizde fayda var. Örneğin 60 değilde 30 örnek alıp sıralamada  üst ve altta kalan 7'şer uç örneği çıkartıp ortada kalan 16 tanenin ortalamasını alabilirsiniz. Sıralama algoritmaları ve örnek kodlarla ilgili https://www.picproje.org/index.php/topic,32011.0.html linki fazlasıyla işinize yarayacaktır...

Gece iyi konsantire oluşum demekki :D yardımlarınız için teşekkürler pic 16F877A linki inceliyorum şimdi. yapmak istediğim şey median filter olarak geçiyor

ercan_wrc

Arkadaşlar protonda arraydeki sayıları sıralamaya alamadım nasıl yapılıyor? ayrıca en baştan ve en sondan 5'er değişkeni silme işlemini en kolay nasıl yapabilirim? örnek kod(proton) yazabilecek olan var mı?

        For i = 0 To 9
            ary = HAM
        Next
            HAM = ary[0]+ary[1]+ary[2]+ary[3]+ary[4]+ary[5]+ary[6]+ary[7]+ary[8]+ary[9]
            HAM = HAM / 10