Arduino Map Komutu

28/11/2018, 11:30

notrino

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.
10/12/2018, 14:08

notrino

(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.
25/01/2019, 01:29

ozanakkaya

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.
25/01/2019, 11:12

notrino

(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..
25/01/2019, 13:03

ozanakkaya

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)
25/01/2019, 14:44

notrino

(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