No bo zmienne nie mają nieskończonej dokładności. A liczba 0.1 w kodzie binarnym nie jest liczbą okrągłą i musi być zaokrąglana.
Kol. _Matik_ określił przyczynę problemu, ja natomiast chciałem zasugerować rozwiązanie. W Bascomie jest instrukcja ROUND(x). Sądzę, że to jest najprostsze wyjście.
To może koledzy mają jakiś inny sposób na zamianę liczby z postaci zmiennoprzecinkowej w całkowitą? No to w końcu chcesz mieć liczbę całkowitą w zmiennej zmiennoprzecinkowej czy liczbę całkowitą w zmiennej całkowitej? Jak to drugie, no to Round: Dim Co2_w As Single Dim Co2_int As Long ... Co2_int = Round(co2_w) Niezgodnie z Helpem BASCOMa,...
Piszesz "nie działa" a to nie wiadomo czy LCD pusty czy kod się nie kompiluje. Ta Twoja wersja pamięta jeszcze dinozaury. Być może trzeba zmienną 4 bajtową jaką jest Single rzutować najpierw na 4 bajtową Long. Czyli Dim A As Single, B As Long. Zamieść kawałek kodu który Ci nie działa łącznie z deklaracjami zmiennych.
Takie mam problemik. Otóż mam w stringu wartość typu "843.30" - przecinek może być na różnej pozycji, czyli może to być np. "3.423" Potrzebuję toto zamienić na wartość liczbową, więc przepisuję do zmiennej typu SINGLE. Ale - dla stringu "84.2" otrzymuję wartość zmiennej 84.199996946 Jak sądzę, jest to problem konwersji do single - czy jest jakiś sposób,...
Witam! Jak zaokrąglić liczbę typu single (6 miejsc po przecinku) do 1 lub 2 miejsc po przecinku, tak aby to można później wyświetlić na LCD. Jest jakiś inny sposób niż komenda format?
mnie sie wydaje ze nie ma znaczenia czy zmienną single wyswietlasz czy wysylasz UART'em, u mnie wlasnie na RS'ie tak sie dzieje, jak dla mnie to Bascom juz tak ma.
Dzięki za odpowiedź ale nim wpisałem pytanie na Elektrodę to sporo męczyłem się z tym (przesuwanie przecinka, mnożenie, dzielenie) ale niestety bez rezultatów. W bascomAVR jest polecenie "Round" ale ono zaokrągla wynik do liczby całkowitej i tym samym odpada. Może jest jeszcze jakieś polecenie coś w rodzaju formatowania wyniku, którego jeszcze nie znam/znalazłem...
Zaokrąglenia single... na LCD. Powiem szczerze ze pomysłów mi już brakło. Spróbuj więc takiej funkcji: CONFIG SINGLE = SCIENTIFIC , DIGITS =1 co obcina zbędne miejsca zmiennej 'single' do jednego miejsca po decimal point. Zamiast 1 może byc dowolna wartośc w zakresie 1 do 7. albo jak wyżej "FUSING". e marcus Ta funkcja również zaokrągla ?, działa przy...
Odnowie temat bo teraz mam bardzo podobny problem. Mianowicie chodzi o uzyskanie coś w rodzaju pętli histerezy czyli mając zmienną np i=13,14,15,16,17 chcę zaokrąglić ją do dziesiątek (teraz już żaden problem) jednak chcę się pozbyć migotania cyfr (gdy zaokrąglamy liczbę 15 uzyskujemy 10 a gdy 16 wychodzi już 20). Moje pytanie to: czy jest sposób na...
Bo fusing robi stringa proszę szanownego kolegi:) To nie tędy droga...PS może nie zaokrąglanie a histereza?:) Wiem właśnie. I dla tego takie głupoty wychodziły. Ale gdy dam dodatkową zmienną string i tak "zfusuje" wartość temperatury a następnie ponownie przepiszę ją do zmiennej single procedurą Val to ponownie zamiast xx.xx mam xx.xxxxxxxxx. A = Fusing...
Witam Mam problemy z fazami w domu. chciałbym mieć stały pomiar wyświetlany na LCD i w przypadku przekroczenia napięcia 240V zapalaną diodę led podpiętą do nóżek procka(docelowo będą to przekaźniki) i sygnał dźwiękowy na syrence. Wykonałem w bascomie miernik faz na atmega8, tryb zaokrąglania wyniku zaczerpnąłem z jednego kodu z forum. Płytka z układem...
Nie potrafię wstawić komendy, która zaokrągla wynik do 2 miejsc po przecinku. Cały program (bez zaokrąglania) wygląda tak: $regfile = "m8def.dat" 'informuje kompilator o pliku 'dyrektywy mikrokontrolera $crystal = 8000000 'informuje kompilato Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Portd.5 , Db5 = Portd.6 , Db6 = Portd.7 , Db7 = Portd.4 , E...
Witam serdecznie! Mam problem z inkrementacją zmiennej Z, ponieważ wszystko opiera się o dokładność przedstawiania liczby zmiennoprzecinkowej. Zamiast 0,1 pokazuje 0,09. Próbowałem już fusing(), frac() (wskazywanie liczby po przecinku, chciałem tą resztę zaokrąglać round() ) , może format() ale tu trzeba non stop konwertować zmienne na znaki z liczb...
Mam problem z uśrednieniem wyniku z przetwornika ADC. Nabazgrałem cos ale nie do końca to działa. Chcę z czytywać 10 ostatnich wyników i wyciągnąć z nich średnią arytmetyczną, wysłać do LCD na pierwsza linie. Następnie ten uśredniony wynik będzie dzielony przez 6 i mnożony przez 100 i wysłany do LCD na druga linie. Mam też problem z funkcją zaokrąglania...
Nie używałem nigdy BASCOMa, ale chyba powinno się dać w nim zrobić coś takiego: wynik = round(liczba*100)/100
Po konwersji część ułamkowa zostaje "utracona". Zmienna przyjmuje wartość jedynie części całkowitej bez zaokrąglenia, czyli: 2,9 (single) po konwersji na integer to 2
Witam. Założenie jest proste czyli zwykły licznik w zakresie 0 - 99 km/h. Czujnikiem ma być powiedzmy kontaktron. Niestety mam problem z napisaniem programu. Wg mojej koncepcji przerwanie od timera ma zwiekszać stan zmiennej co 1ms. Po wykryciu sygnału od czujnika wartość czasu ma być przepisana do kolejnej zmiennej i dalej liczona dopiero predkość...
Hej! Zobaczcie jak ja to robię, może komuś sie to przyda: 'Powiedzmy ze zmienna Liczba(single) wynosi 22.62555426 Temp = Int(liczba) ' dzieki temu poleceniu odcinam czesc setna czyli ' zmiennej Temp(byte) przypisuje liczbę 22 Liczba = Frac(liczba) ' dzieki temu poleceniu odcinam czesc ' dziesiętną czyli zmiennej Liczba(single) przypisuje ' liczbe 0.62555426...
Mnożąc zmienną typu WORD przez stałą CONST wychodzi niedokładny wynik. Np: WORD = 200 x CONST = 0.0025 = SINGLE = 0.499999933. Dokładność obliczeń zmiennoprzecinkowych jest kwestią długości (i formy) reprezentacji liczb zmiennoprzecinkowych. Z oczywistych względów w ośmiobitowych procesorach z małą pamięcią reprezentacja FP nie może być zbyt długa...
Odjąć od badanej liczby jej zaokrąglenie, jeśli wyjdzie 0 to jest całkowita, jeśli nie to nie;)
musze przyznać, że i tak dostałeś bardzo duże zbliżenie... Do twoich celów najlepszym sposobem i najpewniejszym będzie użycie zaokrąglenia. Pewnie bascom posiada tą funkcję.
Witam Mam liczbę integer 47 którą zamieniam na single i dzielę przez 10 , wynik to 4.69999806 . I teraz w jaki sposób uzyskać dwie liczby integer całkowitą czyli 4 i ułamkową po zaokrągleniu czyli 7 ?
Witam wszystkich. Problem kształtuje się następująco: W programie wynik wrzucany jest do zmiennej typu SINGLE. Jest to wartość prędkości na poziomie około 2 m/s Wynik wyświetlany jest na wyświetlaczu LCD zawsze do 9 miejsca po przecinku: Np. 1.945674391 chciałbym, aby wyswietlanie było tylko dwa miejsca po przecinku, czyli np. 1.94, nie jest istotne...
Witam! Mam tu taki kawałek kodu: Dim Tick_time As Single Dim Length As Single Dim Mps As Integer Dim Fps As Integer Dim Fff As Single Dim Tick_count As Integer Dim Czas As Single Tick_time = 0.000096 Czas = Tick_count * Tick_time Mps = Length / Czas Fff = Length / Czas Fff = Fff * 10 Fps = Fff / 3 Tick_count = 0 Cls Lcd Mps Lcd " m/s " Lowerline...
Zdefiniuj zmienną Temp jako Word. Jak ci ma wyświetlić 600 jesli zmiena Byte może przyjąc max wartość 255. Właśnie powyżej tej wartości będą ci sie wyświetlać dziwne rzeczy. No to może wytłumaczę jak to zrobić na zmiennej typu Byte według wyżej wspomnianej ideii. $crystal = 4000000 $regfile "attiny2313.dat" Dim Pomiar As Single Dim Temp As...
Przetestuję i zobaczę, ale dla częstotliwości zegara taktującego atmegę równej 16MHz to powinno dość krótko chyba trwać. Zobaczę i zmierzę w praktyce. Szczerze mówiąc nie wiem, ile będzie trwało. Nie wiem też, jak to skompiluje Bascom. Najlepiej sprawdź. Tablicę można zrobić, tylko do tablicy nie mogę wpisywać wartości Single, a zmienna całkowita Integer...
I jeszcze jedno ten program natychmiast poprawisz używając symulatora w którym co pętlę wyświetlisz wartości wszystkich zmiennych. A jak myślisz dlaczego na początku tych kodów jest $sim ? co z tego , że później potrzebujesz zmienną Z Nie później, a w trakcje wykonywania pętli. W tej pętli ta zmienna bardzo szybko się przepełni bo jest zbyt małej pojemności...
Witam Miałem podobny problem z wyświetlaniem. Trzeba prawidłowo przypisać typy zmiennych a formatowane umieścić w poleceniu LCD "123";Fusing(X, #.##);"123". Tylko takie umieszczenie formatowania rozwiązało mi problem z wyświetlaniem całkowicie. Odpowiednie akcje na zmiennych należy wykonywać po zaokrągleniu do całości instrukcją np Round(Vol) lub Int(Vol)...
Poprawiłem błędy, w tym ten związany z częstotliwością a nie z okresem sygnału. Dodałem zmienną typu Single Czestotliwosc, do obliczeń zmiennoprzecinkowych. W Timer0 wpisuję na starcie 131, Config Int0=Rising. Czy dobrze to robię, czy we właściwych miejscach kodu? Pytania: Jak zaokrąglić wynik ze zmiennej Czestotliwosc do dwóch miejsc po przecinku?...
ok, no tak przecinek... wstyd się przyznawać :) dzięki bardzo za szybka odpowiedz. Doradzam , by dla tak prostych obliczeń jak również niewielkiej pamięci programu , zpomnieć o istnieniu SINGLE i FUSING - no chyba że potrzebne Ci są super dokładne dane(zaokrąglenia).Szkoda flsh'a ;) Można np. $regfile = "m8def.dat" $crystal = 8000000 Config...
Łap. Voltomierz będzie działał stabilnie, ale wiedz, że Ty masz błąd logiczny w swoim kodzie. Pomysl. Jeśli u Ciebie "Steps" to zaokrąglone do całych poprzez Round "Angle" to jest to wartość ustalana przez napięcie czyli w pewnym momencie będzie stała. A tu zmienna "Kroki" jest porównywana z ta zmienną ""Steps", ale po porównaniu dodajesz lub odejmujesz...
czy będziesz miał temperatury ujemne? i co oznacza zmienna "Liczba" Liczba jest typu byte (0-255) jak ma być <0 ? odczyt temperatury: w kodzie ująłem zmienną znak dim znak as bit znak = 0 wartość dodatnia znak = 1 wartość ujemna znak = 0 'zakładam że wartość jest dodatnia 1wreset If Err = 0 Then 1wwrite &HCC 1wwrite &HBE Ds_1 = 1wread()...
Witam ponownie No ja walczę z całym kodem, żeby go trochę zoptymalizować, ale nie bardzo się daje. zajęte 77% a nie mam konwersji danych z sht11 jeszcze zrobionych, coś mi się wydaję, że będzie trzeba się przesiąść na M32. Przykładem może być np. zapis temperatury z dokładnością do jednego miejsca po przecinku. Przecież wystarczy do tego zwykły, dwubajtowy...
Oto kod jednego z programów z którym mam problemy: 'C029f.bas Generator impulsów prostokątnych ' UWAGA! Wejsciem EN(able) modułu LCD steruje końcówka PB.1 ' do wyjscia PB.3 dołączona przez rezystor 1k anoda diody LED (katoda do masy) Dim Impuls As Word , Przerwa As Word , Czas As Single , Zmiana As Bit , Napis As String * 9 Config Timer1...
Witam W prockach dopiero raczkuje. Robię obrotomierz do samochodu (choć można zastosować to wszedzie). Oparłem to na atmega16 bo taki akurat teraz mam, ale docelowo ma byc na 2312.Na razie jest wszystko w fazie testowej na biurku, ale założenia są takie: na kole zamachowym umieszczam siakiś czujnik, podaje to na układ formowania impulsu, z którego będę...
A jest możliwość zapisu danych w do MS Excela lub do csv w postaci tabel? Dlaczego 11 bajtów przy czterech naraz (a nie 8)? Niestety nie ma możliwości zapisu do excel'a, i ja nie potrafie tego zrobić. Wykres można zapisać do pliku *.grf Po otwarciu go w notatniku wygląda tak: Kurve 255 1462 0.00000000000000E+0000 0.00000000000000E+0000 9.99999999999446E-0004...
Witam Tworze sobie prosty termometr na wyświetlaczu 7 segmentowym. Napisałem kod w bascomie i wrzuciłem na płytę testowa z atmega32 i śmiga jak trzeba. Kolejnym krokiem było wrzucenie tego na na atmege8 (zmieniłem m32def.dat na m8def.dat i taktowanie na 1MHz ) atmega świeża , fusebity nie zmieniane. No i jak zwykle u mnie to bywa, rzecz nie działa....
Witam serdecznie! Najpierw może podzielę się kodem: [syntax=basic4gl] $crystal = 8000000 $regfile = "m644pdef.dat" Config Timer1 = Pwm , Pwm = 10 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down , Prescale = 1 Dim Plynnosc As Integer Dim Plynnosc_r As Single Dim Plynnosc_t As Single Dim Reszta_pwm1b As Integer Dim Ustaw_czasu_ms As Integer...
Witam ,właśnie zaczynam wzmagania z operacjami matematycznymi w BASCOM (jak dotąd nie były mi potrzebne) ;) Zauważyłem pewne zjawisko ,że po przekroczeniu 90% Flash przy kompilacji zaczynają się dziać dziwne rzeczy ,jakby stos czy ram niszczył zmienne i pojawiają się dziwne wyniki ,stąd z ATTINY2313 ,przeskoczyłem na Atmegę8. Ten sam program bez jakichkolwiek...
single zaokrąglanie bascom zaokrąglanie single bascom
simson kabel stacyjka blokada mechanizm router talktalk
brother zacięcie papieru obudowa transformatora
CV9202H-A39 brak 12V na J14, brak BL_EN i PWM, jakie napięcie na pinach 33,34? Lewa rolka dociskowa zgina taśmę – przyczyny, naprawa, regulacja w magnetofonach