Dobrze jest pisać jaka wersja Bascom bo czasem rozmowa jest bezcelowa jak ktoś używa ver 1.1 coś tam spolszczonej. Funkcja Round zaokrągla do najbliższej wartości czyli z 2,4 zrobi 2 a z 2,6 zrobi 3 Jeśli chcesz zwykłą zmienną to wystarczy przepisać wartość z Single i program zrobi automatyczne rzutowanie i obetnie to co po przecinku. Kwestia potrzeb...
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.
Zainteresuj się poleceniem FUSING. Przeczytaj helpa i zobaczysz, że da się zrobić.
Tutaj masz wsaszik do atmegi 8. Tylko delikatnie zamotane jest zaokrąglanie liczby.
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,...
:) Komenda mod to taka reszta z dzielenia czyli: zmienna = liczba mod 4 zmienna - miejsce gdzie zostanie wpisana reszta z dzielenia liczba - zmienna która jest dzielona przez 4 (w miejsce 4 możesz wstawić inną liczbę lub zmienna) Dodatkowo w Bascomie są dwa rodzaje dzielenia znak / i \ pierwszy (/) używamy do dzielenia z resztą (w przypadku zmiennej...
No tak, tu obliczenia robi na liczbach całkowitych i z pewnością wystąpi z tego tytułu niedokładność jakaś przez zaokrąglanie, ale nie sądzę aby to było jakieś 20% wyniku i tylko w dolnym zakresie.
Poradziłem już sobie z uśrednianiem wyniku, ale mam dalej problem z tym zaokrąglaniem. Nie ma jakiegoś prostego sposobu na zaokrąglenie liczby ułamkowej ? Te funkcje round i int nie działają poprawnie. Zaokrąglają, ale pozostaje przecinek i zero na końcu, którego chcę się pozbyć.
Więc pytanie zasadnicze. Jak zaokrąglić otrzymany wynik zmiennoprzecinkowy w bascomie AVR? Wykorzystywanie liczb zmiennoprzecinkowych do odczytu temperatury z DS18B20 jest lekko mówiąc mało rozsądne, zwłaszcza że "po przecinku" może być tylko 16 różnych wartości. Takie rzeczy to się zaokrągla na etapie pisania programu, który potem operuje wyłącznie...
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...
Błąd chyba tkwi w sposobie liczenia a dokładniej w sposobie zaokrąglania liczby, napisz dokładnie w jakis sposób liczysz część ułamkową. Przypuszczam że gdzieś zaokrąglasz coś w góre a przy sumowaniu to zaokrąglenie powoduje "przekręcenie" się licznika częsci dziesiętnej temperatury.
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?
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...
Problem polega na tym że program pisze w asm - w bascomie też nie miałem problemu ale za duży kod - brakuje pamięci. Może ktoś wie czy algorytm ADD-3 można zastosować do liczb powyżej 8bit - zamiana 32bitowej liczby na BCD też by załatwiła sprawę. :arrow: natalia. Autor wyraźnie napisał jakiego języka programowania chce użyć(używa). ... 3. mnożysz...
Co do konfiguracji portu C hm mam najnowszego bascoma i nie ma żadnych błędów po kompilacji i robot zaprogramowany tylko z czujnikiem lini lub tylko z czujnikiem wykrycia przeciwnika działają poprawnie. Co do zmiennej Word to jest to liczba całkowita bez znaku, od 0 do 65535, ok zgodzę sie bo zmienna Volt nie będzie całkowita i jest zaokrąglana do 0...
Moim zdaniem spowodowane jest to ograniczona dokladnoscia reprezentacji liczby zmiennoprzecinkowej (sposob obliczania i dlugosc bitowa mantysy liczby). Dosyc dobrze jest to opisane w wikipedii, np. http://pl.wikipedia.org/wiki/Liczba_zmie... Z tego samego powodu ja musialem stosowac liczby calkowite w obliczeniach. Przy zachowaniu odpowiednich...
O zasilaniu czy sprawności kodu nie pisałem z prostych przyczyn: Piszącego w Bascom interesuje tylko to by program działał a nie ciągnął mało prądu (zasilanie bateryjne i Bascom? Nigdy nie słyszałem by ktoś to łączył) Piszącego w Bascom interesuje by progam działał niezależnie czy musi użyć procka z 16kb czy 32kb Ja wolę by program mieścił się w 1kb...
Niewiem czy dobrze rozumiem ale chyba będzie problem bo na moim kalkulatorze wychodzi że 16000000/15000=1066,7 a w nocie pisze że dla Timer1 prescaler może być max 1024 75 ? Czy to się jakoś zaokrągla do pełnej liczby?
Co do kolegi pierwszego: wcale nie chce żadnej wiekszej dokładności. 200 x 0.0025 = 0.5 i to bez łaski - nie wiem dlaczego procesor wylicza coś dalej poza mnożnik 0.0025 przecież powinien operować tylko wielokrotnościami tej liczby. O zaokrąglaniu to wiem ale myslałem, że nie trzeba bedzie tego stosować. Kolega drugi: Takie podstawienie jak napisaleś...
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ść...
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...
Oto fragment polskiej wersji helpa do bascoma (rozdział Podstawy języka BASCOM BASIC): Komplikacje związane z liczbami zmiennoprzecinkowymi Każda liczba całkowita może zostać zapisana w notacji binarnej. Liczba zmiennoprzecinkowa już nie. Faktycznie, każda liczba niewymierna o podstawie 10, będzie także niewymierna w każdym systemie o podstawie mniejszej...
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...
Nie używałem nigdy BASCOMa, ale chyba powinno się dać w nim zrobić coś takiego: wynik = round(liczba*100)/100
Dzielisz liczbę przez 100, masz setki. Dzielisz przez 10, masz dziesiątki ;-) Jeśli będziesz operował na byte to powinien zaokrąglić. Dim A As Byte Dim A100 As Byte Dim A10 As Byte Dim X As Byte 'zmienna pomocnicza A = 235 A100 = A / 100 X = A100 * 100 A = A - X A10 = A / 10 X = A10 * 10 A = A - X
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...
A jeszcze mam takie pytanko o zaokrąglenia ponieważ funkcja ROUND nie do końca prawidlowo działa. Powidzmy otrzymuję wynik liczbowy z przetwornika ADC, dzielę go przez powiedzmy 3 i mnożę przez 100. Liczba po przeliczeniu to powiedzmy 325.4286. Jeśli zastosuję na tej liczbie funkcje ROUND mój wynik to 325 .0 Nie mam pojęcia jak się pozbyć tej kropki...
Wydaje mi się że to nie tego jest powód bo na wyświetlaczu mam w 95% czasu wynik 151.352111816* i raz może na 30 sekund mignie dokładnie 90.0* i z powrotem jest tamta liczba dokładnie taka sama, gdyby co chwila była inna liczba to owszem sam bym stwierdził ze to niedokładność pomiarów. Poza tym ja licząc kalkulatorem zaokrąglałem każdy wynik (licząc...
Odjąć od badanej liczby jej zaokrąglenie, jeśli wyjdzie 0 to jest całkowita, jeśli nie to nie;)
(A). Czy w Compare0a = 186 mogę wstawić liczbę w zakresie 0-255? (B). by uzyskać interwał =~100ms to 9 600 000Hz/ 1024 /37,5 (połówek pewnie nie można używać wiec zaokrąglę do 38 to będzie 247Hz (C). natomiast dla interwału 50ms to 9 600 000Hz/ 1024 /75 to będzie 125Hz czy dobrze to rozumiem? Nie dobrze , .. (at)A. -formalne/teoretycznie możesz w Compare0a...
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 ?
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...
nawet te 5MHz to już dużo, a mówiąc o rozdzielczości miałem na myśli liczbę bitów :) skontaktuj się z autorem wątku o AD9833 jeśli spodoba Ci się ten układzik :) Pozdrawiam
Witam ! Jak zaokrąglić, a w zasadzie obciąć cyfry w liczbie do 0.1 w Bascomie ? Zrobiłem tak: a=1.1625 'liczba przykładowa b=a*10 b=int(b) b=b/10 lcd b efekt np. 1.099999 To zapewne wynika z niedoskonałości operacji na liczbach zmiennoprzecinkowych. Może ktoś wie jak to zrobić bez sztucznego sprawdzania i dopisywania końcówek. PL
Masz ATmega8, czyli masz ADC i masz timer połączony z pinami I/O, czyli za pomocą timera możesz generować przebiegi na wyjściu. Rzecz wręcz banalna. Za pomocą ADC wykonujesz pomiar napięcia. przeliczasz go na okres, albo odrazu częstotliwość, nie wiem jak to w bascomie wyglada. W każdym razie częsottliwość ustala się przez zapisanie w odpowiednim rejestrze...
Też by tak mogło być ale... Fclock nie jest liczbą wielokrotną 2, co skutkuje że podczas dzielenia 2^32/Fclock już wychodzi mi liczba ułamkowa i dochodzi do zaokrąglenia lub obcięcia miejsc po przecinku (w najprostrzej wersji). Potem po przemnożeniu niedokładność wzrośnie. Ale chyba nie bede wyważał otwartych drzwi i pozostawię konwersję na zmiennoprzecinkowej....
No ale przecież 133/16 to nie jest 41998000! Bo to po pierwsze nie jest dzielenie w systemie 16stkowym tylko dziesiętnym w programie. Poza tym brakuje koledze funkcji fusing(), a jak podzielimy 133 w hexie czyli 307 w dziesiętnym systemie przez 16 to otrzymamy 19stopni i mniemam że taka temperatura jest ustawiona. A druga linijka jest zła ze względu...
Witam goreckidiy. Twój projekt spełnia funkcę, którą chciałeś osiągnąć. Ale jest ale :) Niezwykłe zbiegi okoliczności sprawiły, że to działa (mam nadzieję) prawidłowo. Spójrz na zdjęcie. http://obrazki.elektroda.pl/9690955600_1... W programie masz coś takiego:[syntax=text]'*********WAŻNE!!!*... data1 = data_in - 1048574 'tyle suwmiarka...
Najpierw zamień godziny na minuty potem dodaj do tego minuty. Następnie trzeba sprawdzić czy minutyFull nie są przypadkiem mniejsze od minuty Start ( przypadek 23:00 -> 1:00 ). Wtedy przedział czasowy należy policzyć jako czas do północy + czas po północy. Podzielić uzyskany przedział czasowy na liczbę stopni sterowania PWM. Odliczanie czasu do Full...
Piszę tutaj, bo jestem już zdesperowany. Jak patrzę na układ podpięty do programatora, to aż mi już się niemiło robi. Ale do rzeczy i od początku. Znalazłem w sieci taki kod: [syntax=basic4gl] Dim Pll As Single Dim Fset As Word Dim Dane As Byte Dim A As Single [...] Nastaw: Pll = A I2cinit I2cstart I2cwbyte &HC0 Pll = Pll * 100000 Pll = Pll + 225000...
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...
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()...
W nocie do megi8 masz pokazane jak podłączać AVCC (dławik + kondensator). Napięcie zasilania jest za mało stabilne na napięcie odniesienia, tym bardziej, że zależy Ci na dokładności. Wrzucilem kondensatory tylko prosze o sprawdzenie czy wartosci sa dobre... http://obrazki.elektroda.net/79_12163716... W kodzie wyżej kilka wartości i szczegółów...
(...)po "polskiemu" mało o tym jest. To trzeba się angielskiego zacząć uczyć :D Gwarantuje Ci, że to o wiele ułatwia życie. Ja dopiero po przejściu na poziom w miarę dobry z języka byłem wstanie zrobić cokolwiek poza miganiem diodą, napisami na lcd i termometrem :D ---- ale że mam dziś dobry dzień do dobrych uczynków... na przykładzie at24c16: http://obrazki.elektroda.pl/1832315300_1...
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....
http://obrazki.elektroda.pl/1927979800_1... Witam. Będzie to moja pierwsza konstrukcja, którą postanowiłem Wam zaprezentować, choć nie pierwsza, którą wykonałem. Jest to ukończony zasilacz oparty na znanym większości osób projekcie z wprowadzonymi pewnymi zmianami co do wersji oryginalnej. Pierwszy mój zasilacz był tranzystorowy. Jego...
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?...
Jeżeli między znakami masz jedną kolumnę odstępu, to na pierwszej stronie będą dwie, a nie jedna kolumna z drugiego znaku, no ale to szczegół ;) Nie wiem, jak masz zapisaną "czcionkę". Jak na moje oko, to może być po bajcie na każdą linię i takich linii 7, jedna po drugiej, potem następny znak itd. Nieużywane bity (te z prawej, znaki wyrównane sa do...
Triangle Deluxe - Zaawansowany system oświetlenia http://obrazki.elektroda.net/26_11981998... Przedstawiam mój kolejny bardzo długo zresztą wyczekiwany projekt. Jest to jak dotąd największe z moich przedsięwzięć wykonane zupełnie samodzielnie od początku do końca. Jest też najdroższe gdyż z grubsza licząc kosztowało ponad 1000zł. Wstęp. Było...
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...
zaokrąglać liczba zaokrąglać bascom bascom liczba
szczotka bosch oryginalny klapka sterowania temperatura nawiewu router uderzenie piorun
Ford Mondeo błąd airbag B0001 po wymianie poduszki kierowcy – akcja Takata, clockspring, złącze Panewka korbowa N – znaczenie litery N, nominalny wymiar, Ursus, Perkins, Toyota, KS, Mahle