map()

[Math]

Açıklama

Bir sayıyı bir aralıktan diğerine yeniden eşler. Yani, fromLow değeri toLow ile eşlenir,yüksekten yükseğe bir değer, aradaki değerler ile aradaki değerler vb.

Değerleri aralık içinde sınırlamaz,çünkü aralık dışı değerler bazen amaçlanmış değerlerdir ve faydalıdır.aralıklarda sınırlar isteniyorsa. constrain() işlevi, bu işlevden önce veya sonra kullanılabilir,

Her iki aralığın "alt sınırlarının" "üst sınırlardan" daha büyük veya daha küçük olabileceğini unutmayın, bu nedenle map()işlevi bir sayıyı aralığını tersine çevirmek için kullanılabilir.

y = map(x,1,50,50,1);

İşlev ayrıca negatif sayılarda da iyi çalışır, örn;

y = map(x,1,50,50,-100);

map() işlevi tamsayı matematiği kullanır, bu nedenle kesirler oluşturmaz, Kesirli kalanlar kesilir ve yuvarlanmaz veya ortalaması alınmaz. matematik bunu yapması gerektiğini gösterebilir.

Sözdizimi

map(value, fromLow, fromHigh, toLow, toHigh)

Parametreler

value: değer verilecek sayı

fromLow: verilen değerin geçerli aralığının alt sınırı.

fromHıgh: verilen değerinin geçerli aralığının üst sınırı.

toLow: verilen değerin hedef aralığının üst sınırı

toHigh: verilen değerin hedef aralığının üst sınırı

Geri Dönüş

Eşlenen değer

Örnek Kod

/* Bir analog değerini 8 bit (0 - 255) ile eşleyin */
void setup() {}
                        
void loop() {
int val = analogRead(0);
val = map(val, 0, 1023, 0, 255);
analogWrite(9, val);
}                        
                    

Ek

Matematiksel olarak eğimli olanlar için, işte tüm fonksiyon

long map(long x, long in_min, long in_max, long out_min, long out_max) {
return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;
}

                    

Notlar ve Uyarılar

Daha önce belirtildiği gibi, map() işlevi tamsayı matematiğini kullanır. Dolayısıyla kesirler bundan dolayı bastırılabilir. Örneğin, 3/2, 4/3, 5/4 gibi kesirlerin tümü, farklı gerçek değerlerine rağmen map() işlevinden 1 olarak döndürülecektir. Bu nedenle, projeniz kesin hesaplamalar gerektiriyorsa (örneğin, 3 ondalık basamağa kadar doğru voltaj), lütfen map()'ten kaçınmayı ve hesaplamaları kodunuza kendiniz manuel olarak uygulamayı düşünün.