Witam.
Proc: Atmega8
IDE: Bascom
Piszę dość spory kawałek kodu, a zatrzymałem się na prostej funkcji.
Jej zadanie mam być konwersja liczby z jednego zakresu na inny (np. 0-1023 na 0-255).
Napisałem taki kawałek kodu:
Jest to żywcem przepisane polecenie 'map()' z projektu arduino.
http://www.arduino.cc/en/Reference/Map
Wywołują tę funkcję w ten sposób:
gdzie pierwszy argument to zmienna do konwersji, dwie liczby określające zakres wejściowy i dwie zakres wyjściowy. Mimo to w zmiennej "A" mam cały czas wartość 0.
Kod prosty jak but, a mimo to nie działa :/ W czym tkwi błąd? (pewnie jak zwykle w programiście).
Zadeklarowane typy zmiennych wynikają z zakresu liczb jakich będę używał. Sposób przekazywania parametrów (BYREF) wymusił Bascom - wywalał błędy jeśli zostawiłem wartości domyślne. A taki a nie inny sposób obliczeń wynika z tego, że nie da się chyba w Bascomie pisać skomplikowanych równań (przyjmuje tylko 3 argumenty).
Proc: Atmega8
IDE: Bascom
Piszę dość spory kawałek kodu, a zatrzymałem się na prostej funkcji.
Jej zadanie mam być konwersja liczby z jednego zakresu na inny (np. 0-1023 na 0-255).
Napisałem taki kawałek kodu:
Function Mapuj(byval Z As Byte , Byval In_min As Integer , Byval In_max As Integer , Byval Out_min As Integer , Byval Out_max As Integer) As Byte
Local Alfa As Long
Local Beta As Long
Local Gamma As Long
Local Delta As Long
Local Epsilon As Long
Local Dzeta As Long
'Local Temp As Integer
Alfa = Z - In_min
Beta = Out_max - Out_min
Gamma = In_max - In_min
Delta = Alfa * Beta
Epsilon = Delta / Gamma
Dzeta = Epsilon + Out_min
'Temp =(z - In_min) *(out_max - Out_min) /(in_max - In_min) + Out_min
Mapuj = Dzeta
End FunctionJest to żywcem przepisane polecenie 'map()' z projektu arduino.
http://www.arduino.cc/en/Reference/Map
Wywołują tę funkcję w ten sposób:
A = Mapuj(kat , 0 , 180 , 120 , 580)gdzie pierwszy argument to zmienna do konwersji, dwie liczby określające zakres wejściowy i dwie zakres wyjściowy. Mimo to w zmiennej "A" mam cały czas wartość 0.
Kod prosty jak but, a mimo to nie działa :/ W czym tkwi błąd? (pewnie jak zwykle w programiście).
Zadeklarowane typy zmiennych wynikają z zakresu liczb jakich będę używał. Sposób przekazywania parametrów (BYREF) wymusił Bascom - wywalał błędy jeśli zostawiłem wartości domyślne. A taki a nie inny sposób obliczeń wynika z tego, że nie da się chyba w Bascomie pisać skomplikowanych równań (przyjmuje tylko 3 argumenty).