Arkadaşlar Arduino'daki map() fonksiyonuna benzer bir fonksiyon yapmaya çalıştım ama işin içinden çıkamadım şöyleki;
0-1023 arasındaki değeri -90, +90 arasında mappleyen bir fonksiyon yapamadım. Arduinodaki pozitif aralıklar için doğru oluyor. Negatifini yapamadım yardımcı olabilicek var mı acaba ?
Output=((Input-512) *90)>> 9;
Output = ((Input/1023)*180)-90;
Teşekkürler ben de yaptım :D
Arduinonun orijinal fonskiyonu bu:
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;
}
Bu kodun işaretli sayılarda çalışması gerekli. long default olarak signed olmalı. Kullanıdınız compiler nedir?
Olmazsa şöyle deneyin garanti olsun;
#include <stdint.h>
int32_t map(int32_t x, int32_t in_min, int32_t in_max, int32_t out_min, int32_t out_max) {
return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;
}
Alıntı yapılan: Elektroemre - 04 Nisan 2020, 17:11:16Arduinonun orijinal fonskiyonu bu:
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;
}
Bu kodun işaretli sayılarda çalışması gerekli. long default olarak signed olmalı. Kullanıdınız compiler nedir?
Olmazsa şöyle deneyin garanti olsun;
#include <stdint.h>
int32_t map(int32_t x, int32_t in_min, int32_t in_max, int32_t out_min, int32_t out_max) {
return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;
}
Evet çalışıyormuş hocam sıkıntı kodda değilmiş assign ettiğim yerdeymiş bende kafayı yemiştim niye böyle oluyor diye assign ettiğim variable'ın data tipini yanlış atamışım hallettim.
Size nasıl ulaşabilirim emre bey sıze mühim bir konuda danismam gerek duranmusa702@gmail.com ulasrsanz sevinirim