Jest to kod z Pana Wiązani być może nieudolnie przerobiony. Oryginał ma tak: Dim licz_8ms As Byte Incr Licz_8ms If Licz_8ms = 125 Then ............. I to działa, czyli ja nie mogę używać liczby stałoprzecinkowej . No dokładnie. To działa tylko dla Byte (i podobnych). Chociaż typ danych Single mówi, iz może przyjmować wartości stało i zmiennoprzcinkowe....
Jak w bascomie ze miennej typu single wydobyc liczbe po przecinku i wpisac ja do zmiennej byte ?? Przyklad jest liczba single np 12,34 i teraz chce wpisac to co po przecinku (czyli 34) do zmiennej byte Z gory dzieki za pomoc
Witam! Nie jestem biegły w BASCOM-ie i mam problem z funkcją, w której chcę uzyskać resztę z dzielenia. Oczywiście operuję na liczba które mają wartość po przecinku tak więc użycie funkcji mod nie wchodzi w grę. Moja funkcja wygląda tak : [syntax=jezyk_programowania] ' wczesniej w zmiennych globalnych jest zdeklarowane dim L as single, l1 as single,...
jednak jak bym chciał zrobić to w bascomie to i tak i tak muszę liczyć na zmiennym przecinku bo bascom funkcje trygonometryczne liczy tylko na zmiennych typu single więc sprubuje zrobić to przez DFT i IIR i zobacze co działa szybciej a tak w ogule to mam jeszcze pytanie czy dobrze rozumiem to IIR najpierw muszę zaprojektować analogowy filtr wedłóg schematu...
więc ja tez mam zapytanko jak w bascomie zrobić coś takiego aby zapisac dane z tabeli załozmy mam cos takiego U Dodano po 1 tych danych oczywiscie ma być dużo wiecej i miejsc po przecinku też np do 4 miejsc po przecinku ...jeśli miałoby to jakies znaczenie przy wprowadzaniu danych taka informacja:) Witam Można ale jest to procedura dość pamięciożerna....
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...
Mam jeszcze jeden problem, mianowicie: Mam zmienną typu single U i przypisuje jej liczbę 2.56 chcąc ją zwiększać o 0.01 robię coś takiego U = U + 0.01 a potem wyświetlam to na LCD. Lecz pojawia mi się http://obrazki.elektroda.net/98_12637529... Wiem, że resztę cyfr mógł bym zamaskować na przykład poprzez instrukcje fusing. Lecz jeżeli dalej chcę...
Witam Mam problem z wyświetleniem wartości PWM w %. Użyłem instrukcji fusing ale ona wyświetla mi wartość w ten sposób XX.X %. http://obrazki.elektroda.pl/6558296000_1... Jak to zrobić żeby wyświetliła XX % czyli jako liczbę całkowitą, bez kropki i miejsca po przecinku W załączniku plik.bas [syntax=basic4gl]$sim $regfile = "m8def.dat"...
$regfile = "m8def.dat" 'informuje kompilator o pliku 'dyrektyw mikrokontrolera $crystal = 8000000 'informuje kompilator Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Portd.5 , Db5 = Portd.6 , Db6 = Portd.7 , Db7 = Portd.4 , E = Portd.3 , Rs = Portd.2 Config Adc = Single , Prescaler = Auto , Reference = Internal Config Watchdog = 2048 'reset wystąpi...
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...
Jestem ponownie. Projeckt mam prawie ukonczony i mam jeszcze pytanka. To jest kod do termomertu na DS18B20 i zegarka. I teraz mam taki problem. Odczyt temp jest bardzo niestabilny. Cyfry po przecinku skacza tak o 2-3 jednostki. Raz jest 22.4 za sek 22.7 a za nastepna 22. 5 itp itp. Mam inny kod z forum ktory nie obsluguje temp ujemnych dla proby i tam...
Przepraszam za dłuższą nieobecność. Nie mając nic nowego (i mądrego) nie pisałem. Ale w międzyczasie polutowałem zestaw startowy, a ostatnio napisałem inny program, który umożliwia (w zamyśle) liczenie dokładniej częstotliwości dla "paczki" impulsów, tym razem około 500 Hz. Wiem, że to dosyć skomplikowany tok myślenia, pewnie można to zrobić prościej,...
Witam panowie od razu podkreślę że jeszcze uczę się bascoma więc proszę nie krzyczeć i nie usuwać tego postu do kosza Siedzę już nad tym 3 dzień i efekt mojej pracy nie najgorszy ale mam parę pytań po pewnych rzeczy nie rozumiem i nie mogę rozwiązać. Więc tak założeniem był pomiar temperatury przez ds18b20 wyświetlenie je na LCD i 4 wyświetlaczach 7...
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?
Witam Na wstępie chciałbym zaznaczyć iż jestem początkującym programistą i dlatego proszę o wyrozumiałość. Robię termometr na lampach nixie, ale nie działa mi poprawnie komunikacja z ds18b20 i ds1820. Problem polega na tym, że na lampach pokazuje się wartość -00.1 tak jak by wyjście czujnika było zwarte bezpośrednio z + , a nie jest . Czujnik jest podpięty...
Tłumaczą Ci ludzie już drugi dzień. Zwłaszcza kolega Logan . Czy tak trudno przeczytać w Helpie: Instrukcja ON INTERRUPT Przeznaczenie: Wykonuje skok do podprogramu gdy wystąpiło określone przerwanie. Składnia: ON źródło_przerwania nazwa_podprogramu Jeśli trudno to porzuć programowanie - są łatwiejsze profesje.
Niestety, inaczej nie sformatujesz single. Zapis zmiennej z przecinkiem jest dość skomplikowany (mantysa, wykładnik) i znalezienie przecinka nie jest prostą sprawą. Jakie działania potrzebujesz wykonać na single? Może nie trzeba jej używać. Wykonałem próbę w symulatorze najpierw single na string za pomocą fusing(), potem z powrotem na single za pomocą...
Pomnóż przez 2, zaokrąglij do wartości całkowitych, podziel przez 2, i wyświetl z rozdzielczością do 1 miejsca po przecinku.
Long = GetAdc(0) Single = Long * 0.01955 String = Fusing(Single, "##.##") LCD String; "V"
Chyba nie czytałeś ostatnio tego rozdziału z Language Fundamentals. W ten sposób sam sobie robisz kuku... Pomijając to myślę, że jeśli te Twoje zmiennoprzecinkowe masz tylko do dwóch miejsc po przecinku, to dlaczego, po prostu, nie pomnożysz tego x100 a na końcu wyniku nie podzielisz /100? Zapewne wszystko się wykona dużo szybciej niż na tych zmiennoprzecinkowych....
Poprawiłem - nie sprawdzałem. Dim Odczyt(2) As Byte dim T As Integer dim T1 As Single dim T2 As Single Dim Temp As Long Do Ds18b20 Print Temp Wait 1 Loop End Sub Ds18b20 1wreset 1wwrite &HCC 1wwrite &H44 Waitms 750 1wreset 1wwrite &HCC 1wwrite &HBE Odczyt(1) = 1wread(2) T = Odczyt(2) Shift T , Left , 8 T = T + Odczyt(1)...
Poczytaj helpa o funkcjach Fusing i Format.
Tak wyświetla wartośc temperatury I2 z dokładnościa do jednego miejsca po przecinku.
Zmienna typu SINGLE i komenda FUSING.
Fajnie by było, gdyby funkcja zwracała wartość logiczną - czy single ma wartość ułamkową czy też jej nie ma. Chociaż trzeba by się przyjrzeć jak zorganizowana jest zmienna single, czy czasem nie da się wyjąć tej wartości co po przecinku np. za pomocą LOW(zmienna) na przykład.
Tak z ciekawości tylko zapytam jakich ty czujników używasz i czy rzeczywiście potrzebna ci jest aż taka pracyzja w pomiarze temperatury do 9 miejsc po przecinku ?!?!? temp1: -1699.399902343
Witam. Mam problem z przybliżeniem zmiennej Single do dwóch miejsc po przecinku. Nie mogę zamienić jej na string gdyż mam mało wolnej pamięci. Czy jest jakaś inna możliwość przybliżenia tej zmiennej? Pozdrawiam
Program do czujnika temp ds18b20 ktory mierzy z dokladnoscia dwoch miejsc po przecinku. Sprawdzony ale tak jak juz koledzy mowili wyniki po przecinku bardzo czesto skacza Deflcdchar 0 , 7 , 5 , 7 , 32 , 32 , 32 , 32 , 32 Config Pind.7 = Output Config Pind.4 = Output Config Pind.5 = Output Config Pina.6 = Output Config Pina.7 = Output Set Portb.0 Set...
Kod wydaje się sprawować prawidłowo. Przecinek jest względny. Operacje na zmiennych z przecinkiem są męczące dla mikrokontrolera. Jesli nie jest to konieczne to należy ich unikać. Zauważ że sam DS nie wysyła Single tylko Integer. Każda zmienna z jednym miejscem po przecinku pomnożona przez dziesięć da liczbę całkowitą. Tutaj przecinek jest "wirtualny"...
No oczywiscie ze nie mozna zapisac singla w byte, ale mozna go zrzutowac na byte tracac wartosc po przecinku. Tylko jak sie to robi w tym wspanialym programie ;)? Albo podzielic na 4 bajty i je zapisac i potem zlozyc w single, tylko jak to zrobic ? ;)
Tak, przepraszam jeśli żart się nie udał. Żeby pozbyć się przecinka wystarczy przerzucić wartość z Single na jakąś taka która przecinka nie obsługuje. Przecinek zostanie automatycznie odcięty, a Bascom od dawna nie potrzebuje formatowania liczb całkowitych do String jeśli maja trafić na wyświetlacz. Robi to sam. Żeby odciąć przecinek wystarczy więc:...
Masz dużo racji. Prawdopodobnie to co napisałeś zadziała. Następnym krokiem ( pomnożyłeś przesuwając w lewo 4 razy przez 16) będzie podzielenie przez 16 i rzutowanie na zmienną single. Otrzymasz temperaturę dodatnią lub ujemną z dokładnością bodajże 4 miejsc po przecinku.
Zaoszczędziłem 32bajty. A teksty z lini: 45, 47, 304, 373, 477, 517, 519, 566, 568, 614, 616, 663, 665, 713, 715, 761, 763, 798 dlaczego nie są w Eepromie :)? Możesz wykasować spacje w łańcuchach i zmodyfikować początek Display_msg. Te wszystkie sztuczki pozwolą ci zaoszczędzić parę bajtów , ale największe oszczędności przyniesie ci rezygnacja z liczb...
Witam. Programuję w BASCOM AVR. Potrzebuję mieć zapisaną wartość zadanej temperatury do porównania z wartością otrzymaną z DS18B20. Nastawiam wartość operując bezpośrednio na zmiennej SINGLE, ale mam ją w pamięci programu, więc jak coś się wyłączy to już nie będzie działało tak jak trzeba. Muszę więc to gdzieś zapisać. Druga sprawa to jak zmieniać wartość...
Wszystko było by fajnie z tym innym licznikiem ale niestety zostały mi tylko 8 bitowe a to za mało, musiał bym część liczenia przenieść do pętli głównej a niestety to też nie zda egzaminu bo jak np włączę menu, a tam jest np. obsługa klawiatury i chośby dyskryminacja drgania styków która wstrzymuje czas, a w tym czasie stracę impulsy i pomiar będzie...
Jeśli możesz to unikaj zmiennych single. Przemnóż napięcie i prąd przez 10, 100, 1000 ... aby uzyskać wartość całkowitą, przemnóż, zmień otrzymaną wartość na string i sformatuj z przecinkiem we właściwym miejscu. Instrukcje: [syntax=basic4gl]zmienna = STR(x) rezultat = FORMAT(zmienna , "maska")[/syntax]
Dzieki, za odpowiedz juz pokazuje poprawnie. A jak zrobic zeby pokazywal tylko dwie cyfry po przecinku? Dim A1 As Single Dim B1 As Single Dim Wyswietl As String * 16 A1 = 1234 Config Lcd = 20 * 2 Cls Lcd A1 ; "/1000" Lowerline B1 = A1 / 1000 Wyswietl = Fusing(b1 , ##.##) Lcd "To jest ok. " ; Wyswietl Joachim
Witam. Wiem, wiem powiecie wrzuć w wyszukiwarkę, a nie zawracaj nam głowy. Jednak wyszukiwarka dzisiaj ciągle wywala mi pustą stronę dlatego piszę tutaj bezpośrednio. A oto co mnie gnębi. Mam odczyty z DS18B20 temperatury zapisanej w zmiennej typu SINGLE. Dla utrzymania zadanej temperatury stworzyłem stałą liczbową instrukcją CONST i to mi działa. Nadszedł...
zmieniłem config adc z takiego: Config Adc = Free , Prescaler = Auto , Reference = Avcc Start Adc na taki: Config Adc = Single, Prescaler = Auto , Reference = Avcc Start Adc Ale nie rozumie jakie ma znaczenie czy działa ciągle czy na żądanie Mam jeszcze jedno pytanie jak zmienić wynik by nie pokazywało po przecinku??
Racja, mój bład. Mam taki kod. $regfile = "m16def.dat" $crystal = 16000000 Config Lcdpin = Pin , Rs = Portc.2 , E = Portc.3 , Db4 = Portc.4 , Db5 = Portc.5 , Db6 = Portc.6 , Db7 = Portc.7 Config Lcd = 16 * 2 Config Portc = Output Set Portc.1 Cursor Off Config 1wire = Portd.5 ' + jumper J2 B-C Dim Odczyt(2) As Byte , A As Byte , Licznik...
Zwykle bardzo łatwo jest zastąpić operacje na liczbach zmiennoprzecinkowych, operacjami na liczbach całkowitych. U ciebie w kodzie masz taki kwiatek: Pomoc3 = Cykl / Y Prc = Pomoc3 * 100 Czyli najpierw liczysz wartość która u ciebie jest ułamkiem, a póżniej praktycznie zamieniasz ją na liczbę całkowitą. A wystarczy zamienić kolejność i operować na liczbach...
Niezupełnie - chodzi o to, że do programu wartość jest dostarczana właśnie jako string. Muszę mieć natomiast zmienna, aby móc ją porównywać z zadaną wartością (mniejsza, większa itp). Ale nie może być tak, że zamiast 84.2 (która to wartość jest prawdziwa, i taka jest w stringu), to do porównania używam 84.199999 czy coś podobnego. Mógłbym usuwać przecinek...
witam otóż projektuje sobie zegarek z termometrem oraz czujnikiem ciśnienia MPX4115(analogowy), problem polega na tym że nie potrafię obciść wyniku ciśnienia do postaci xxx.xx lub samej wartosci xxx bez miejsc po przecinku. Jaka komendę trzeba zastosować aby wyświetlić porządany wynik ? [syntax=basic4gl]$regfile = "m644pdef.dat" $crystal = 16000000...
Dziękuję bardzo za wyczerpującą odpowiedź. Wracam do dalszej pracy. Dodano po 5 Jeszcze wrócę do tematu. Pierwsza wersja działa bardzo ładnie -dziękuję. Sprawdzam wersję z hex bo ta wydaje się jeszcze lepsza i mam sukces przy dwóch pierwszych zmiennych. Trzecia EV jest Single i kompilator krzyczy błędem w linii EV = Hexval(helpstr). Zrobiłem testowo...
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...
Witam. Żeby trochę usystematyzować: - posiadam enkoder 100pulsów/obrót - spodziewam się wyniku na wyświetlaczu z rozdzielczością powiedzmy 1/10 obrotu Poczyniłem taki krok, że zmienną Encounter zmieniłem jak Single. Dodatkowo wstawiłem linijkę Encounter=Encounter/100 poza pętlą Do...Loop według sugestii Kolegi. Niestety nadal wyświetlana jest ilość...
Program napisany w BASCOM AVR i wyskakujące 3 błędy , mogę wiedzieć dlaczego one wyskakują podczas kompilacji , poniżej zamieszczam kodzik. 'podwójny woltomierz i amperomierz (dwa kanały pomiaru napięcia i dwa kanały pomiaru prądu 'UWAGA _ PONOWNE WGRANIE PROGRAMU SKASUJE WARTOŚCI WSP KOREKCJI Z PAMIECI EPROM '---------------------------------------...
Witam , Dziękuje za odpowiedzi i dyskusję udało się wykonać układ i kilka innych na bazie tego programu. Teraz znowu proszę was o pomoc zacząłem bawić się z ADC czytałem help i nic mi z tego nie wychodzi chcę zmierzyć napięcie i wysłać je na wyświetlacz na symulacji pokazuje mi liczbę która się zmienia ale ma dużo cyfr po przecinku , jak zaprogramuję...
Witam Piszę do was bo mam mały problem. Zrobiłem woltomierz i amperomierz na atmedze8 i mam mały problem bo program który mam działa ale pokazuje błędnie. To znaczy problem polega na tym że im wyższe napięcie tym większy zakres błędu. Przy 24V zakres błędu to ok. 3V Program wygląda tak: [syntax=basic4gl]Config Adc = Single , Prescaler = Auto , Reference...
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...
bascom przecinku single bascom bascom single
corsa szarpie rozgrzanym wyrównać płyta k7vt4a kondensator
techniczny mostek wheatstonea techniczny mostek wheatstonea
Kod błędu 98 w urządzeniach Wolf - diagnostyka i rozwiązania Instrukcja obsługi piekarnika Whirlpool - jak znaleźć?