Witam, Tak na oko 0*45 jest 0. Jako unsigned też powinno być 0. Spróbuj zamiast "20" dać "20.". Dodano po 27 20.0f. Bez f będzie double.
Ale ty nie wysyłasz tam stringa, tylko gołe dane binarne, skanowanie nie działa, bo spodziewa się tablicy znaków w formie np. "3.1415". Wypisz sobie w LabView otrzymane dane, to będziesz miał obraz sytuacji. Albo przekonwertuj w mikrokontrolerze na string za pomocą sprintf(), albo po stronie LabView złóż te wysłane cztery bajty do zmiennej float. Prawdopodobnie...
tylko i wyłącznie dzielenie i odejmowanie. Czyli [0]=liczba/100 (stałoprzecinkowe - pascal - div) [1]=liczba/10-[0]*100 itd. oczywiście do wykonania w pętli.
Aby float działał w printf/sprintf , należy dodać w opcjach linkera dodatkową bibliotekę. Jak to zrobić, opisane jest pod koniec pierwszego posta w temacie http://www.elektroda.pl/rtvforum/topic10...
The total number of bytes that may be passed to this function is limited due to the memory restrictions imposed by the 8051. A maximum of 15 bytes may be passed in SMALL or COMPACT model. A maximum of 40 bytes may be passed in LARGE model. Taki sam komentarz jest przy funkcji scanf. W Twoim przypadku po przygotowaniu napisu przez sprintf wypisuj go...
A dlaczego nie skorzystasz z ftoa? Nawet jeśli chcesz ją zmienić to warto zajrzeć do źródeł i je zmodyfikować do swoich potrzeb. A ogólnie to naprawdę potrzebujesz float? Jestem skłonny się założyć, że nie :)
Jeszcze nie spotkałem przetwornika A/D który wystawia dane typu FLOAT. Jest to zawsze ileś tam bitów a do 16 zastosój typ INT. Wtedy jest prosta funkcja "itoa"
Witam! krzychoocpp napisał: Nie jestem pewny czy obydwa rzutowania są potrzebne, chyba wystarcza tylko jedno. Masz rację wystarczy jedno rzutowanie: float f = (float)a / liczby; albo float f = a / (float)liczby; daje ten sam wynik; Pozdrawiam
Przedewszystkim zrób to inaczej... po prostu... main() { char bufor[20]; ... funkcja(bufor, ...); } funkcja(char* bufor, ...) { } I w ogóle nie ma problemu. Zmienna tmp w ogóle jest nieporozumieniem. Przecież wewnątrz funkcji możesz sobie zadeklarowac tablicę o dowolnym wymiarze... funkcja(...) { char tablica[1000]; } A pamięć możesz zwalniać gdzie...
Tablica Bufor() jest typu Byte więc to nie Stringi i konwersja Hexval do niczego się nie przyda. Bajty są zamieniane niejawnie we Frame tylko na potrzeby wyświetlania na LCD. Coś w ten deseń powinno działać. Ogólnie to można to mocno poskracać, ale nie chciałem zaciemniać. [syntax=vbnet]Dim Arr(4) As Byte Dim Test As Single At Arr(1) Overlay Dim Bufor(9)...
1. Co ci się ukazuje jak zamienisz to co podałeś na to: [syntax=c]float fl; fl = va_arg(args, float); ftoa(fl, 3, temp);[/syntax] ? 2. Owszem nie działa bo wywaliłeś zmienną oraz wywaliłeś znak &, czyli ma być przez zmienną: [syntax=c]uint32_t u32; u32 = va_arg(args,uint32_t); ftoa(*((float*)&u32), 3, temp);[/syntax]
Sprawdzałem u mnie na symulatorze i wszystko ok. Dodałeś stdlib? Jakieś warningi?
Napisz co ma dokladnie robic ten program, podaj dane we i dla przykladu dane wy. Wtedy postaramy sie cos zrobic. Jesli chodzi o twoj kod wyglada na nieco nieprzemyslany, wiec nie bede go poprawial.
Witam a może tak: [syntax=cpp] uint16_t liczba; uint8_t calkowita, ulamkowa; liczba = 1234; calkowita=liczba/100; ulamkowa=liczba%100; [/syntax] wtedy w oddzielnych zmiennych mamy cześć całkowita i cześć ułamkową. a obcinamy ostatnią liczbę instrukcją [syntax=cpp]ulamkowa=ulamkowa/10;[/synta...
Odpowiedź na pytanie z 1 postu: int val = 123; printf("U=%d.%d", val / 100, val % 100); Co do meritum: czy kod float nap1; nap1 = 257 * 0.0048; także obcina po przecinku? Jesteś w stanie sprawdzić jaki kod generuje kompilator?
(at)ditomek Niestety operacje na float są bardzo kosztowne nie tylko czasowo, ale także zajmują sporo miejsca. Pełna obsługa float to może być i 5 kB, tyle, że kompilator do spółki z linkerem są dosyć inteligentne i nieużywane fragmenty kodu są usuwane. Sens konwersji temperatury na float jest żaden, bo raz, że czujnik zwraca temperaturę w postaci...
Widzę bark odzewu ze strony autora. No trudno. Zamieszczam poprawioną wersję którą u mnie działa i się kompiluje. main.c https://obrazki.elektroda.pl/7395495900_... I jeszcze u autora nie widzę podłączenie nóżki 10 do Vcc.
Potem, jak chcesz to dziel przez 10 i na float ... Float? O zgrozo 1,5kB w plecy :) Tak to się robi: http://mikrokontrolery.blogspot.com/2011...
Cecha EA = -22 Cecha E6 = -26 wg algorytmu który podałem w moim pierwszym poście 0100 0000 0000 0000 0000 0000 * 2^(-22) 01,00 0000 0000 0000 0000 0000 = 1.0 kg -1kg 1100 0000 0000 0000 0000 0000 * 2^(-22) wniosek: najstarszy bit określa znak liczby, 1 - ujemna, 0 - dodatnia 0.1 kg 0110 0110 0110 0110 0110 0110 * 2 ^ (-26) 0,00011001100110011001100110...
Witam. Próbuję ogarnąć odczyt wagi i nie wiem co robię źle. W instrukcji komunikacji do wagi mam: "Wszystkie rejestry mają postać 2 bajtową (WORD). Dane zmiennoprzecinkowe (jak masa czy tara) przechowywane są w 2 kolejnych rejestrach i mają postać FLOAT. Jeżeli 1-szy rejestr składa się z 2 bajtów AB a drugi z 2 bajtów CD to FLOAT będzie miał postać...
witam, mam problem z konwersją float'a na tablice charów. char tablica[4]; sprintf(tablica, "%G", temp_in); USART_Transmit(tablica[0]... USART_Transmit(tablica[1]... USART_Transmit(tablica[2]... USART_Transmit(tablica[3]... w terminalu pokazuje się tylko znak zapytania...
Już wszystko wiem. Midlety w wersji CLDC 1.0 nie posiadaja wbudowanej klasy Float i Double i nie jest możliwe operowanie na tych zmiennych. Aby temu zaradzić trzeba użyć pakietu henson.midp.Float Klasa ta jest darmowa i można ją pobrać ze strony http://henson.newmail.ru/j2me/Float.htm Mam nadzieje, że w przyszłości komuś się to przyda, gdyż CLDC 1.0...
Moja funkcja lcd_str to to samo co u Ciebie LCD_WriteText. Wstawiłem ją tylko po to by można było się zorientować co ona robi a nie byś ją stosował.
gdyby zastosować funkcję "abs" to by można usunąć jeden duży blok w instrukcji warunkowej: [syntax=c]ulamek=abs(wynik%100000); // include <cstdlib>[/syntax] W instrukcjach warunkowych operator "&&" jest niepotrzebny, jak jedziesz po kolei z zakresami to jeden z nich dałoby się pominąć: [syntax=c]if (ulamek > 9999) { } else if (ulamek...
Witam! Wiersz z if: Przede wszystkim, zmienna x jest zmienną typu float (zmiennoprzecinkowa) a znaki reprezentowane są przez liczby typu int, zatem x powinno być zadeklarowane jako int. Pamiętaj, że przy operacjach arytmetycznych, typ char rozszerzony jest "z urzędu" do typu int a po ich wykonaniu przykracany do typu char! Dalej: w tym samym wierszu...
Po pierwsze - jaki język programowania? Po drugie - najlepiej sprawdź sam, co zostanie. Po co zgadywać?
A nie możesz zapisać floata jako 2 liczby 16bit w takim razie?
Spróbuj temp8E.setText("1234"); Jeśli to zadziała to buffer0 zawiera złe dane (brak znaku null kończącego text). W poście #62 pisałem też: Jeszcze konwersja float to ascii Kod: c
W skrypcie linkera muszą być zadeklarowane symbole o nazwach jak wyżej wyznaczające obszar pamięci przeznaczony dla sterty (heap). Proponuję ściągnąć projekt dla lpc2103 i przystosować postawowe pliki (startup, Makefile, skrypt linkera, tablica wektorów: lpc2103_rom.ld, Makefile, startup.S, vectors.S, hdr\hdr_cpsr.h) do swojego projektu, a większość...
To nie ma związku z typem procesora - dane z DS18B20 i sposób ich obróbki są zawsze takie same. Kodo powyżej jest przekombinowany i błędny. Poprawnych przykładów znajdziesz na tym forum sporo - wystarczy poszukać.
Niby dla ARM double i float to to samo a jednak nie to samo. Chyba Ci się pomyliło z AVR... Typ double na ARM jest pełną 64-bitową liczbą zmiennoprzecinkową podwójnej precyzji. volatile float f = 123.5434; f *= 123.123 też nie przejdzie przez koprocesor. Wyżej napisałem dokładnie o tym - bez końcówki "f" (albo rzutowania), to są liczby typu double,...
A co to za cudaczne obliczenia :wink: ... unsigned char wynik1=0; unsigned char wynik2=0; wynik1=read1w(); wynik2=read1w(); reset1w(); float temp=0; if((wynik2)!=0){ //temp ujemna wynik1=~wynik1; temp=wynik1+1; //dlaczego /2 i gdzie się podział wynik2 ? temp=-temp/2; //??? } else{ //temp dodatnia...
Problem był z inna zmienną. Wszystko jest ok.
Jeśli jest gdzieś błąd w kodzie ze względu na moje myślenie proszę abyście pomogli naprawić Sporo tego jest, prościej będzie jak wrzucę poprawny kod, to możesz sobie porównać ze swoim... protected override void OnPaint(PaintEventArgs e) ) i w nim umieścić kod odpowiedzialny za rysowanie. Dzięki temu za każdym razem, kiedy jest taka potrzeba, zostanie...
Stacja Pogodowa ESP8266 + wyświetlacz T6963 https://obrazki.elektroda.pl/7068126200_... Wcześniej stworzyłem stację pogodową przy której były użyte dwa mikrokontrolery Atmega328p (arduino nano) i ESP8266 (NodeMCU) z wyświetlaczem opartym na sterowniku T6963. Na forum https://obrazki.elektroda.pl/1280939000_... Zagadnienie...
Konwersję z liczby całkowitej na string łatwo można Sobie zaimplementować, implementacje funkcji itoa() też są dostępna, wystarczy poszukać w sieci: [url=http://en.wikipedia.org/wiki/Itoa]i... Część po przecinku też można wydobyć za pomocą itoa() wystarczy pomnożyć wynik przez wielokrotność 10 i zapisać go do integer. Warto ogólnie operować na liczbach...
Dzięki za podpowiedź ale w WinAVR + PN2 nie ma dostępnych opcji linkera poza ustawieniami w makefile. Nie mam pewności czy to tutaj ale tylko tutaj jest coś o FLOATach. Dopisałem "-lm" w każde możliwe miejsce ale to nie pomogło. Skopiowałem całą tamtą instrukcje ale też nic to nie dało :( Oryginalny makefile wygląda tak: ---------------- Library Options...
Gotowego programu nie mam, poniżej masz funkcję obsługi 1wire bez których się nie obejdziesz, musisz zrobić sobie tylko odpowiednie funkcje opóźnień, w listingu funkcje nazywają się np. waitus(x) -tzn czekaj x mikrosekund lub waitms -milisekundy, wait10us(x) -10*X mikrosekund itd. dodatkowo musisz przejrzeć aplikację i dopasować komendy, #define MATCH_ROM...
Funkcja ładnie działa dopóki nie wpiszę więcej niż 2 cyfry, wtedy pomniejsza lub powiększa ostatnią cyfrę o 1, pomyślałem że to może coś z licznikiem bufora, to jego kod: void dodaj_bufor(char znak) { //znak='a'; if (licznik_buf<17) licznik_buf++; bufor[licznik_buf-1]=znak; bufor[licznik_buf]='\0'; }
Witam. Mam pewien problem związany z konwersją zmiennej short do float. Moim zamiarem jest przeliczenie wartości z przetwornika AD na pewną wartość w postaci float. Schody zaczynają się na początku. Puki wartość ADC_out nie przekroczy 700 wszystko jest OK( ADCoutFLT przyjmuje wartość ADC_out ). Powyżej 700, ADCoutFLT przyjmuje wartość 5130. A dziej...
Taka operacja nazywa się parsowanie, poczytaj o BISONie oraz FLEXie. Przy pomocy tych programów wygenerujesz gotowy kod który "analizatora" na podstawie określonej gramatyki (w tym przypadku notacji matematycznej).
Na pewno nie brakuje mi pamięci flash (64KB) Na pewno. Komunikat błędu mówi, że kod (sam kod!) zajmuje 0x11b3b (72kB), a dane stałe - rodata - 0x1443 (5kB). Do tego jeszcze kilka sekcji tak naprawdę jest potrzebnych - choćby inicjalizacja sekcji data. W typowym kompilatorze gcc na ARM (używającym newlib) funkcja sprintf zajmuje 20kB kodu i kilka kB...
Dzieki, a czy moglbys mi to przetlumaczyc na delphi :)). Dzieki. Pozdrawiam.
Kompilator owszem i u mnie błędów kompilacji nie sygnalizuje. Ale program strasznie jest "ociężały" powolny i zawiesza się po jakimś czasie pracy - czego nie zaobserwowałem w moich poprzednich wersjach. Mnie razi używanie delay(). O ile przebolałbym to w samym setupie to w pętli głównej jest nie do przyjęcia. No ale czat uczył się na kodach z netu....
są to belki na power ledach ,drivery itp.Do tej pory wszystko pracowało przez kilka lat na jednym kanale PWM kótry rozjasniał belki ledowe w ciągu 60 min.Chciłbym to teraz przerobic na 4 niezależne kanały z potencjometrami abym mógł sobie regulować różne pasma Dodano po 21 Chciałbym uzyskać coś takiego[syntax=arduino]// Definiowanie pinów const int...
(...) tlenu i konwersja na procent displayOxygenPercentage(oxygenPercentage... // Wyświetlanie wartości na LCD break; } } } void displayOxygenPercentage(float percentage) { lcd.clear(); lcd.setCursor(0, 0); lcd.print("Tlen: "); lcd.print(percentage, 1); lcd.print("%"); } Przepraszam za nieporozumienie. Poprawię program, tak aby odczytywał tylko wartość...
Funkcja ta coś tam robi, operuje na danych i ma zwrócić wynik. Chciałbym móc jakoś sprawdzać czy funkcja wykonała się prawidłowo. Niby można by zrobić tak, że gdy funkcja zwraca wartości większe lub równe 0 to wtedy jest ok, a gdy zwróci np. -1 to znaczy, że jest jakiś błąd. Ale problem w tym, że wynikiem tej funkcji, może być też wartośc ujemna i...
Ok. Dokonałem konwersji na zmienną typu float - program działa. Tylko teraz nie wiem jak sprawdzić czy konwersja się powiodła. Jak mogę ją wyświetlić ? np. jako = label.caption... ?
1. Wielu programistów uważa, że float - to liczba rzeczywista. No i bardzo się mylą, z czego wynika mnóstwo kłopotów. Niedouctwo. 2. Niby większość współczesnych procesorów, w tym Cortex-M4, liczy na float równie szybko, jak na int, a taki np. Intel Core mnoży i dzieli double sporo szybciej niż int. Za to konwersja w obie strony.... - na tym naprawdę...
Panowie a jak sobie poradzić z tym że moją zmienną jest float? Z tego co widzę nie da się jej użyć w funkcji switch. Nie można. Trzeba użyć if-else, ale unikać operatorów ==, >= oraz <=. Alternatywnym sposobem jest konwersja zmiennych float np. po przemożeniu ich wartości do całkowitych long.
float konwersja konwersja string float konwersja float stringi
usunąć wirusa messengera schemat elektryczny lusterek domowa elektrownia wodna
philips 55pus7334 radia makita
Canon - drukarka nie drukuje w kolorze - przyczyny i rozwiązania Sony RM-U40 instrukcja obsługi – pilot do STR-KSL40, STR-SL40, funkcje, programowanie