Mapping Fonksiyonu

Başlatan isoment01, 04 Nisan 2020, 02:05:09

isoment01

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 ?

z

#1
Output=((Input-512) *90)>> 9;
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

fatal16

Output = ((Input/1023)*180)-90;

isoment01

Teşekkürler ben de yaptım :D

Elektroemre

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;
}

isoment01

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.

Yörük oğlu

Size nasıl ulaşabilirim emre bey sıze mühim bir konuda danismam gerek duranmusa702@gmail.com ulasrsanz sevinirim