Arduinoda bulunan MAP ve CONSTRAIN komutlarına benzer bir komut varmı Proton'da

Başlatan dyonizos, 10 Ocak 2015, 10:08:11

dyonizos

Selam arkadaşlar,
Arduinoda bulunan ve çok işime yarayacak özelikle MAP komutuna benzer bir komut var mı Protonda ?

Yani min ve max iki deger arasını diğer min ve max iki degere gore ayarlamak.

val = map(val, 0, 1023, 0, 255);

Analogdan okunan 0-1023 arasındaki değer 0-255 arasında bir değer olarak alıyoruz.

Buna benzer bir komut var mı?

Mucit23

Buna benzer bir komut yokda orda yapılan oran kurmak. Tek satırda aynı işlemi yaparsın.

0-1023 arasını 0-255 arasına oranlamak istiyosan aşağıdaki formül işini görür

Sonuc=(ADC_Degeri*255)/1023

z

Atla deve bir özellik değilmişki. İki satır fazladan kod yaz.

Sonuç = (ADC - Vmin2) * (Vmax2 - Vmin2 + 1) / (Vmax1 - Vmin1 + 1)  + Vmin2

Örneğin

Vmax1=1023  Vmin1=0
Vmax2=255    Vmin2=0

ADC=511

Sonuç= (511-0) * (256-0)/(1024-0)+0 = 127

Eğer max min değerlerin değişmeyecek ve hep böyle ise ADCden okunan değeri doğrudan 4'e bölmen de yeterli.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

mistek

float constrain(float value, float a, float b)
{
      if(value < a) return a;
      if(value > b) return b;

      return value;
}
boş işlerin adamı ---- OHM Kanunu: I = V/R ---- Güç Formülü: P = V*I = I^2*R = V^2/R

Kabil ATICI

o kadar kasmaya gerek var mı?  0-1023--->0-255 için;
sonuc=deger/4;
ambar7

dyonizos

Biraz kasıp formülle yapmak lazım. Eğer ki değerler 1023 ve 255 olmaz ise 4 olayı işe yaramayacak.
Ama formül ile hesaplama işe yaradı. teşekkürler. Sadece bunun arduinodaki gibi bir fonksiyonu olsaydı bir çok yerde bu hesaplamanın gerektiği zamanlarda kolaylık olurdu.
cevaplar için teşekkürler.

serdararikan


Kabil ATICI

@dyonizos
Haklısın!

Unutma,her ne kadar işlemcini belirtmemiş isende, tahmini olarak kapasitesi sınırlı 8 bitlik bir işlemci ile uğraşıyorsun. ASM kodu olarak bölme bile yok.

Ekstra olarak yaptıracağın her işlem, işlemci için iş yükü, zaman kaybı anlamını taşır. Kullandığın derleyici düzeyinde görmesen bile, senin istediğini işlemciye istediğin işi yapabilmek için derleyici ne kodlar ekliyor.

Benim söylediğim bile ek bir yüktür. İşlemci açısından@ serdararikan şekli en uygunudur.

Okudur değerin 10 bit olarak kullanımın yoksa doğrudan 8 bit olarak oku. Birçok işlemci bunun yapılmasına izin veriyor...
ambar7