Map() Fonksiyonu Arduino/Stm32/Raspberry Pi

map fonksiyonu geliştirme kartları





Elektronik ve yazılımda okuduğumuz veya yazdığımız veriyi anlamlandırmak için birçok fonksiyon kullanıyoruz. Bunlardan biri de map() fonksiyonu. Bu fonksiyon ileri seviye yazılım dillerinde genelde hazır olarak bulunuyor. Peki map() fonksiyonu olmayan dillerde bu “mapleme” işini nasıl halledeceğiz ?

Not : Pyhton’daki map() fonksiyonu liste düzenlemeye yarar. Biz daha farklı bir konudan bahsedeceğiz. Yazı boyunca anlattığımız map() fonksiyonunu Python’da nasıl kullanacağınızı da anlattık.

Önce Map() fonksiyonunu iyice anlayalım, sonra kendi map() fonksiyonumuzu yazalım…

Map() Fonksiyonu ne işe yarar ?

Temel olarak yaptığı iş, herhangi bir aralıktaki değeri, başka bir aralığa çevirmektir. Analog pinlerden okuduğunuz değer 0-1023 aralığında olacaktır. Map() fonksiyonu ile bu aralığı farklı bir aralığa kolayca çevirebilirsiniz. Eğer taşlar yerine oturmadıysa devam eden 3 paragrafı da okumanızı tavsiye ederim.


Örneğin 10 bitlik bir ADC’den bir değer okuyorsunuz ve bu okuduğunuz değerle orantılı olarak 12 bitlik bir DAC’tan çıkış vereceksiniz. 10 bitlik bir ADC size (0,1023) aralığında değer verir. Kullandığınız 12 bitlik DAC ise (0,4095) aralığında çıktı verir. Şimdi biraz nefeslenip örneğe devam edelim.

Örneğimizi daha kolay anlaşılması için detaylandıralım. Potansiyometreden aldığınız değer ile ledin parlaklığını kontrol etmeye çalıştığımızı düşünelim. Potansiyometreyi %50 olacak şekilde çevirdiğimizde (yani ADC’den okuduğumuz değer 511 olduğunda) ledin de parlaklığını %50 olarak ayarlamamız gerekir. Eee şimdi DAC’tan vermemiz gereken değer 511 mi ? Tabi ki hayır. DAC’tan da %50’lik bir değer verip ledi de %50 parlaklıkta yakabilmemiz için DAC değeri 2047 olmalıdır ki 2047/4095=%50 olsun. Oran %25,%50,%75 olduğunda bu değerleri basit bir içler dışlar çarpımı veya mantıktan bulabilirisiniz ama bu sadece anı kurtarır.
Eğer (242,513) aralığındaki 350 değerinin (914,1423) aralığında kaça denk geldiğini arıyor olsaydık işlemler bu kadar kolay olur muydu ?

Kısaca a-b aralığındaki bir değerin eşitini x-y aralığında bulan fonksiyon = map() fonksiyonudur.

Kendi map() fonksiyonumuzu yazalım!

1-)Öncelikle ST kullandığımızı varsayalım. Aşağıdaki örnek ST içindir.

int In = Okunan giriş değeri
int InMin = Okunan değerin alt sınırı
int InMax = Okunan değerin üst sınırı
int OutMin = Yazılacak değerin alt sınırı
int OutMax = Yazılacak değerin üst sınırı

uint16_t map(int In ,int InMin , int InMax , int OutMin , int OutMax ){
	return (In - InMin) * (OutMax - OutMin) / (InMax - InMin) + OutMin;
} // şablon olarak kopyalayabileceğiniz map fonksiyonu



map fonksiyonu st
map fonksiyonu st

2-)Arduino için map() fonksiyonu.

map(in, inMin, inMaks, outMin, outMaks)

Map() fonksiyonu Arduino’nun standard kütüphanesinde mevcuttur.

map fonksiyonu arduino
map fonksiyonu arduino

3-) Pyhton için değer aralıklayan map fonksiyonu.


def map(giris ,inmin ,inmax ,outmin ,outmax):
	return (giris - inmin) * (outmax - outmin) / (inmax - inmin) + outmin;

x=map(350,242,513,914,1423)
print("Çıkış değerimiz")
print(x)

map fonksiyonu pyhton örneği
map fonksiyonu pyhton örneği



Aklınıza takılan kısımları canlı iletişimden veya yorum yap kısmından bize iletebilirsiniz.

Alperen Kılıç

Yıldız Teknik Üniversitesinde part-time öğrencilik yapan Alperen okul dışında birçok şeyle ilgili. Biraz yazılım, biraz donanım, yarım su bardağı da tasarım biliyor. TechTeachTeam ile beraber GüvenlikTeknolojileri.net'te yazan Alperen, İstanbul Gençlik Platformu ve Türk Eğitim Vakfı gönüllüsü. Teknolojik aygıtınız (andoridi sevmem ama elimden geleni yaparım) bozulduğunda Alperen yanınızda, Apple'a laf söylerseniz karşınızdadır.

You may also like...

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir