Skip to main content

AccessTr.neT


Arduino Map Komutu

Arduino Map Komutu

Çözüldü #1
Merhabalar,

Arduino da belli aralıktaki sinyali başka bir aralık için skalalandırırken Map komutu kullanılıyor. Örneğin;
Kod:
Output= map (input,0,1023,0,255)
Bu kodlamada 0-1023 aralığındaki analog sinyal 0-255 aralığındaki çıktıya dönüştürülüyor. Aynı şekilde Access'te Vba da böyle bir skalalandırma komutu var mı? Yani 0-500'ü 4-250'ye çevirmek istediğimi düşünün mesela..
Tşk.
Cevapla
#2
(28/11/2018, 11:30)notrino yazdı: Merhabalar,

Arduino da belli aralıktaki sinyali başka bir aralık için skalalandırırken Map komutu kullanılıyor. Örneğin;
Kod:
Output= map (input,0,1023,0,255)
Bu kodlamada 0-1023 aralığındaki analog sinyal 0-255 aralığındaki çıktıya dönüştürülüyor. Aynı şekilde Access'te Vba da böyle bir skalalandırma komutu var mı? Yani 0-500'ü 4-250'ye çevirmek istediğimi düşünün mesela..
Tşk.


Selamlar,
Bu konuyu şu şekilde değiştiriyorum zira paralel bir sonuç oluşuyor;

Ekli örneğimde "Input" değerlerine yukardan aşağıya -30 ile 80 yazın, "Output" değerlerine 4 ve 20 yazın. Şimdi "İstenen Input" kısmına örneğin 15 yazın. Butona basınca "Sonuç Output" olarak 10,54 gibi bir değer bulacaksınız. Bu doğru bir değerdir. Kodlamada iki noktalı koordinat sisteminin lineer denkleme dönüşmüş hali bulunuyor. Klasik olarak hesaplanmış bir metot bu. Benim merak ettiğim şey, bu hesaplama yerine Vba ya da Access içinde özel ve basit bir komut var mı? Yani iki ya da daha çok  noktalı Input değerlerini, verilen Output değerlerine göre skalalandıracak basit bir komut arıyorum. Tşk.
.zip skalalandırma.zip (Dosya Boyutu: 23,32 KB | İndirme Sayısı: 7)
Cevapla
#3
Bununla ilgili ayrı kod olacağını sanmıyorum, hesaplama için fonksiyon yazılabilir, ancak yazılacak fonksiyon içerisine yine aynı hesaplama dahil edilecek.


public function MapHesap(a as double, b  as double, c as double, das  double, e As double) as double

gibi fonksiyon yazılması lazım, altına yazılacak hesaplama kodu zaten forma yazılacak.
Cevapla
#4
(25/01/2019, 01:29)ozanakkaya yazdı: Bununla ilgili ayrı kod olacağını sanmıyorum, hesaplama için fonksiyon yazılabilir, ancak yazılacak fonksiyon içerisine yine aynı hesaplama dahil edilecek.


public function MapHesap(a as double, b  as double, c as double, das  double, e As double) as double

gibi fonksiyon yazılması lazım, altına yazılacak hesaplama kodu zaten forma yazılacak.

Evet, evet y=f(x) gibi bir fonksiyonla bu işi çözebiliyorum aslında. Ben sadece Map komutunda olduğu gibi tek satırlık bir kodla bu skalalandırma işini yapabilir miyim diye merak etmiştim. Teşekkürler..
Cevapla
#5
Yazılacak fonksiyon;
Public Function MapHesap(istenen As Double, in1 As Double, in2 As Double, out1 As Double, out2 As Double) As Double

MapHesap = ((istenen - in1) * (out1 - out2) / (in1 - in2)) + out1

End Function


Kod içerisinde kullanımı,

Me.Metin9 = MapHesap(Me.Metin7 , Me.Metin0, Me.Metin2, Me.Metin4 , Me.Metin6)
Cevapla
#6
(25/01/2019, 13:03)ozanakkaya yazdı: Yazılacak fonksiyon;
Public Function MapHesap(istenen As Double, in1 As Double, in2 As Double, out1 As Double, out2 As Double) As Double

MapHesap = ((istenen - in1) * (out1 - out2) / (in1 - in2)) + out1

End Function


Kod içerisinde kullanımı,

Me.Metin9 = MapHesap(Me.Metin7 , Me.Metin0, Me.Metin2, Me.Metin4 , Me.Metin6)

Teşekkürler
Cevapla

Bir hesap oluşturun veya yorum yapmak için giriş yapın

Yorum yapmak için üye olmanız gerekiyor

ya da