Konwersja Char[] -> Float/Double [C/AVR] - poważny proble

To forum jest dla wszystkich pasjonatów mikrokontrolerów AVR Atmela. Wymiana doświadczeń i pomoc dla początkujących w pisaniu programów zarówno w C, Asemblerze jak i BASCOM. Zapraszam znawców tematu, aby pomogli wszystkim początkującym!
ODPOWIEDZ
challenger
-
Posty: 7
Rejestracja: 30 cze 2009, 18:26
Lokalizacja: warszawa

Konwersja Char[] -> Float/Double [C/AVR] - poważny proble

Post autor: challenger » 10 lip 2009, 1:10

Problem przeogromny choć sprawa wydaje się prosta.

Jest kilka sposobów przekonwertowania stringa na typ zmiennoprzecinkowy, np:

sscanf( string_wejściowy, "%f", &liczba );

albo funkcja:

atof()

lub

liczba = strtod( string_wejściowy , NULL );

ŻADNA Z TYCH FUNKCJI NIE DZIAŁA!!!
Przynajmniej pod Atmegą8. Wartość przetworzonego stringa sprawdzam na lcd i dla pewności robie zapytanie w if (np if (liczba=3.14) zapal_leda) ale i to nie pomaga.

Nie jestem w stanie sprawdzić faktycznie przemielnej zmiennej. Zwykle na wyświetlaczu pali się :
16937.0000000
i delikatnie oscyluje w zależności od wartości stringa wejściowego.

Czy ktoś wie jak poprawnie zamienić string (char*) na float lub doube?

Awatar użytkownika
c4r0
Moderator
Posty: 2150
Rejestracja: 13 kwie 2004, 19:56
Lokalizacja: z lasu
Kontakt:

Post autor: c4r0 » 13 lip 2009, 6:04

A czy jak zrobisz dodatkową zmienną float i ustawisz jej jakąś wartość ręcznie to wyświetla się poprawnie na tym wyświetlaczu?

ODPOWIEDZ