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.
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 :)
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)...
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...
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
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...
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...
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?
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.
(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...
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...
Float o wartości 0x3E6872B0 to dokładnie 0.226999998093. Ta wartość float jest zapisana na 32bitach w formacie IEEE 754.
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...
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...
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ć.
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...
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...
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...
Problem był z inna zmienną. Wszystko jest ok.
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ł.
Witam, mam problem z konwersją liczby float do stringa. Kod funkcj wygląda tak: public void liczFV(){ float FV,PV,n,r,m,rdn; PV = Integer.parseInt(textField1.getString())... r = Integer.parseInt(textField2.getString())... m = Integer.parseInt(textField3.getString())... n = Integer.parseInt(textField4.getString())... r = r/m; rdn = r; for (int i = 1; i <...
Dziękuję za link, z pewnością przybliży mi to problem. Można wiedzieć co kolega miał na myśli? Nie robiłby tego w jaki sposób? 16-bitowej organizacji nie mogę już zmienić a konwersja float->half-float to pierwsze co przyszło mi do głowy.
Po pierwsze - jaki język programowania? Po drugie - najlepiej sprawdź sam, co zostanie. Po co zgadywać?
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
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...
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ść...
Uzyj funkcji sprintf.
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...
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'; }
szukaj pod: notacja łukasiewicza (notacja polska)
Hmm dziwne, debugg avrStudio pokazuje poprawną wartość. Może błąd jest gdzieś dalej?
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...
(...) tablicy data (indeksujemy od 0) float oxygenPercentage = oxygenValue / 10.0f; // Konwersja na procenty displayOxygenPercentage(oxygenPercentage... // Wyświetlanie wartości na LCD } } delay(1000); // Odczekaj sekundę przed następnym żądaniem } // ... (reszta funkcji pomocniczych) Dziękuję za podanie kompletnego przykładu ramki, która składa się...
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...
(at)m72 "Zakłócenia" są wprowadzane przez Serial.print(), a nie sposób konwersji. Jeżeli Serial.print() dostanie, jako argument wartość typu float, to nie jest w stanie wyświetlić poprawnie więcej niż 7 cyfr przed przecinkiem. Tak jak pisał kol. (at)_jta_ - zapis liczby float wprowadza ograniczenia ze względu na wielkość reprezentacji mantysy. print...
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ę...
(...) Ale musisz skalować DC bias do Vdd/2, aby zachować symetrię i rozdzielczość. Pełny zakres 4096:1 odpowiada podpisanym wartościom +/- 2048:1. Każda różnica w stosunku do tego przesunięcia DC i nieodjęcie DC od wyniku RMS powoduje zmniejszenie rozdzielczości i stosunku sygnału do szumu. Masz rację, twierdząc, że każdy błąd DC w procesie pomiaru...
Zrób rzutowanie dzielonych liczb na floaty.
konwersja float konwersja float stringi konwersja string float
kabel piwnicy schemat podłączyć spawarka bester kluczyk subaru
buderus logamatic dopływ pralki
Światła mijania i długie nie działają w Nissan Micra K11 1996 1.3 IVECO Crossway Low-Entry 2020 – przeróbka tylnej lampy zespolonej 6-pin z prawej na lewą