Text = "99.9999" Text = Format(text , " 0.00") LCD Text Pytanie poza konkursem: dlaczego wszyscy notorycznie stosują Fusing(xxx, "#.&&")? Nie lepiej Fusing(xxx, "#.##")?
Sprawdź ten kod. Powinno być wszystko OK. Początkowo chciałem tego "PLL Lock" zrobić na przerwaniu ale widzę, że podłączyłeś tam LCD. $regfile = "M8def.dat" $crystal = 1000000 Dim X As Byte Dim Wpis As Word Dim Wpis2 As String * 5 Dim Przed As String * 3 Dim Po As String * 3 Dim Dlugosc As Byte Config Portd.13 = 1 Config Portd.12 = 1 Config...
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)...
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 jednak nie ta instrukcja. Dzięki formatowi mogę uzyskać to że nie będzie przesuwało napisu Cool1 = Cool * 0.1953125 Cool2 = Fusing(cool1 , "#.#") Cool2 = Format(cool2 , " ") Tak masz rację, na symulatorze nie działa. Przy aliasach chyba jest błąd, dwa razy przypisy do tych samych pinów. [syntax=basic4gl]Ac Alias Pinb.0 Ss Alias Pind.7 Sg Alias...
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ą...
Dajesz przecinek zamiast kropki.
Może problem powoduje przecinek i spacja na końcu linii?
Lcd Fusing(zmienna , "#.&&&") masz trzy miejsca po przecinku, bez zaokraglania. -- pzdr, DAMDAM
Porty L i G należą do rozszerzonych. Przeczytaj rozdział w Helpie Bascoma - Config 1Wire. Skonfiguruj dowolny pin jako 1Wire i dopisz po przecinku - Extended. Powinno się coś zmienić ;)
Witam, Jeśli nie musisz nie korzystaj ze zmiennych typu single, lepiej przeskalować int'a kilka razy (np zamiast 1,232 robisz 1232 a przy wyświetlaniu dodajesz przecinek) operacje na liczbach zmiennoprzecinkowych zjadają spora flash i czasu procesora. Pozdrawiam, Marcin
Składaj ciągi z odbieranych znaków. Jeśli trafi się przecinek to koniec danej partii. Potem tylko analiza: HELLO? END? Nie, więc liczba. Oczywiście przecinek trzeba pominąć.
Histereza jest zadeklarowana jako Single. Zmień to na Integer bo szkoda miejsca. Po tym ustaw Histereza = 20 i powinno jakoś działać. Temperatura 60st.C to u Ciebie I1 = 600 a przecinek jest dorysowywany funkcją Format. Dlatego różnica stopnia to różnica równa 10 a nie jeden.
Witam. Po wgraniu kodu do obsługi czujnika DS18S20 (Bascom), temperatura wyświetla się kilka jako jedności i kilka miejsc po przecinku (dziele przez 16). Jak zmniejszyć wyświetlaną temp do 1 miejsca po przecinku?
To bardzo dobrze. Freqq, używaj znaki przystankowe "przecinek" trudno zrozumieć co piszesz.
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:...
Witam. Wybrałeś dość trudny temat na początek nauki 1./ przed wysłaniem danej na wyświetlacz skasuj go instrukcją CLS. 2./ pomiary z przetwornika różnią się, należałoby wykonać np. 10 pomiarów co 25ms i wyciągnąć średnią. 3./ wynik aby był czytelny należy zaokrąglić do np. dwóch miejsc po przecinku można zastosować funkcję Fusing
Po pierwsze nie wrzucaj zdjęć bo nie idzie odróżnić kropki od przecinaka .Z tego co widzę to masz błąd przy 0.0049 , u ciebie jest przecinek.
Witam Temperatura i wilgotność, wyświetla tylko wartość całkowitą. A jak z czytać przynajmniej jedno miejsce po przecinku ?
W pierwotnej wersji miałem "i" zamiast "przecinek", ale zasugerowałem się pewnym rozwiązaniem komercyjnym termometru, gdzie mówił "przecinek". Chętnie zobaczyłbym program (najlepiej w Bascom), w którym gada się przez pwm. Do tej pory pwm używałem do zmiany jasności świecenia led i jako przetwornik c/a.
Witam ! $crystal = 9,600000, przecinek w tej linii to przypadek ?
Chciałbym żeby był pomiar do tych -10 ale chyba go sobie narazie odpuszcze. Ale dosyć dziwna jest ta sytuacja, tak jakby T nie było takie jak ma być :] , jedynie przecinek wychodzi ok :)
Nie bardzo wiem co chcesz osiągnąć, jeśli jest tam przecinek (25,5) to jest zmienna tekstowa! Czyli jest to zsumowanie 2 zmiennych 25 i 5 (po ich zamianie na tekst) i dodanie w środku przecinka. Kod wygląda tak: Dim A As Integer Dim C As Integer Dim Z As String * 5 A = 25 C = 5 Z = Str(a) + "," + Str(c) Print Z End Ale dalej nie rozumiem po co Ci to...
bo nie jest on dostosowany do liczb ułamkowych można go łatwo zmodyfikować napisze ci go tylko podaj jaka dokładność jest tzn. ile liczb po przecinku
ok, no tak przecinek... wstyd się przyznawać :) dzięki bardzo za szybka odpowiedz.
Wynik po przecinku skacze, bo DS18B20 mierzy temperaturę z rozdzielczością do 1/16 st. C. Tak więc nie ma najmniejszego sensu wyświetlać temperaturę z dokładnością do 2 miejsc po przecinku.
Nie wnikajac w bascoma i jego funkcje - pomnoz wynik przez 10. wtedy ta liczbe (zaokraglana) podzielisz przez 10 i bedziesz mal jeden znak po przecinku.
Tak wyświetla wartośc temperatury I2 z dokładnościa do jednego miejsca po przecinku.
Wybieg przesuwający przecinek. Wynikiem będzie, na przykład, dla temperatury 22,4 st C 224 i przecinek należy sobie w stringu dorysować :D
To jest dosyć niewygodny sposób na przesyłanie zmiennych w postaci znaków ASCII i sam się nieco ograniczasz, bo pierwsza zmienna musi mieć zawsze dwa znaki, druga trzy itp... Jeśli chcesz troszkę bardziej uniwersalnie podejść do tematu to przesyłaj wartości zmiennych w ten sposób: PRINT XX,YYY,Z,KKKK czyli każda wartość oddzielona np przecinkiem. Później...
wiem że troche to sknociłem, ale w symukacji pokazuje to troche inaczej. Wielkie dzięki za pomoc. Dodano po 18 I jeszcze jedno jak pozbyć się przecinka.
Dzielenie przez 16 to to samo co przesuwanie bajtu w prawo o 4. Czyli jest to wywalenie jakby 4 najmłodszych bitów, czyli odczyt temp będzie z dokładnością do 0,5 stopnia. Zajrzyj do notki. 5 najstarszych bitów to znak czy dodatnia czy ujemna, a 4 najmłodsze oznaczają miejsca po przecinku. Rozumiem ze zmiana z systemu binarnego na dziesiętny jest znana?...
Poprawny i dokładny stosunek podziału to 921600, czyli np. 14400 * 64 albo 3600 * 256 albo 900 * 1024. Jak widzisz nie ma żadnego problemu z zaprogramowaniem timera na taką częstotliwość.
W pierwszej kolejności to użyj SYNTAX CHECK i usuń błędy składni (przecinek, to nie kropka - lupa do ręki i dokładnie sprawdź). Oprócz tego deklaracja Sub Znaki i wykorzystanie w procedurach - zgroza (trzeba rozróżnić Znak i Znaki - u Ciebie to wszystko jedno. Na końcu program domaga się End If. Po tych poprawkach ładnie się kompiluje - wersja nie demo.
Witam Mam problem ze skompilowaniem w Bascom 8051 procedur do DS18B20 B1 = B1 / 16 ,obliczenia wyłącznie... B2 = B2 * 16 , dla temperatur dodatnich. Być może dla Ciebie , przecinek i średnik to to samo - dla Bascome nie ;) Piotrek
Witam Chciałbym wydzielić tylko to co znajduje się po przecinku odczytanej temperatury na przykład w Tempp. Czyli ładuje wartość odczytaną z ds1820 do Tempp potem: Shift Tempp , left , 8 if Tempp >= 10000000 then Tempp = to co jest po przecinku tak?
Poczytaj helpa o funkcjach Fusing i Format.
Można to zoptymalizować i nie przeliczać na Volty w ogóle, ale tak bedzie prościej zobrazować. Jeśli napięciem odniesienia jest AVCC to znaczy że 5V trzeba teoretycznie podzielić przez rozdzielczośc 1024 i wyjdzie 0.00488 no i to się często zaokrągla do 0.0049 Teraz żeby odczytać napięcie wystarczy pomnożyć odczytany wynik przez te 0.0049, ale to wymusza...
No po przecinku... E0 to kod oznaczający grupę przycisków lub jakąś funkcję (w tej chwili nie mam czasu sprawdzić), czyli Ciebie interesuje kolejna wartość po przecinku.
Już chyba rozumiem ,np dla tysięcy przy liczbie 1896 mam ją podzielić np przez 1000 co da 1 (co za przecinkiem bascom chyba ignoruje dla zmiennej byte) ,teraz dla ósemki mam liczbę podzielić przez 100 ,następnie odjąć to co mi zostało z pierwszego działania pomnożonego przez 10. Dzięki za pomoc ,pomyśleć że tyle się męczyłem przy tym typowo matematycznym...
Jeśli zmienna wyświetl jest typu Word, czyli ma być to liczba całkowita. Od razu ci podpowiem, że nie potrzebujesz używac liczb zmiennoprzecinkowych, które "kosztuja" bardzo dużo. Zrób operacje na liczbie *10, a przy wyświetlaniu przesuń tylko przecinek w lewo o jedną pozycję.
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"...
Nie ma większych zakresów aniżeli liczba 2bajtowa? Jeśli przekracza rozmiar 0xffff to dajesz longa i po kłopocie. Myślę że nie do końca rozumiesz o co chodzi w tym. Więc raz jeszcze: czym różnią się liczby 1.234 od 1234? Otóż tylko umiejscowieniem przecinka. Zamiast obliczać 1.234*2.345 mozna policzyć 1234*2345 a nastepnie wyświetlając wynik na LCD...
Tzn. co widać na tym zdjęciu, gdzie i jaki jest problem? Ja widzę 245.6 stopnia i żadnej drugiej cyfry po przecinku nie dostrzegam.
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
może liczba Pi ? Ma hak po przecinku :)
Co do twojego pierwszego problemu, to najprościej jest czytać ciąg nie z określonego miejsca, a za określonym znakiem. Wszystkie dane masz przedzielone przecinkami. Zakładam że tych przecinków jest stała ilość. Po prostu czytaj łańcuch po 7 przecinku do następnego przecinka i już i wtedy długość wcześniejszych danych nie ma znaczenia. Co do eepromu...
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ć.
:) 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...
Witam, podłączyłem czujnik temp odpornościowy do atmegi i komendą getrc odczytuje wartość w danej temperaturze. To co udało mi się sprawdzić: temp - wartość 20°C - 1000 30°C - 900 40°C - 800 50°C - 700 60°C - 600 70°C - 500 80°C - 400 itd. Wartości mamy 3 cyfrowe więc np 875 będzie oznaczała temp 43,5°C. Teraz pytanie jak najprościej to zdekodować w...
Nadawanie w ASCII. Nie jestem jak PRO programistą więc nie znam jeszcze wsztskich komend. Odbiornik GPS Każda z danych jest odzielona przecinikiem więc może jakby wykrywał przecinek i na podstawie tego coś wyświetlał, idzie to zrealizować ?
Ale za to otrzyma wynik bez przecinka :)
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.
Cześć wartość 1 miliona MHz jest bardzo myląca ale jest przecinek zamiast kropki - jaka minimalna wartość da się ustawić - chodzi o niskie wartośći typu 100Hz lub 1KHz
to mój pierwszy projekt z wykorzystaniem ds18b20 i bardzo możliwe że kiepsko napisany. I rzeczywiście minus pojawia się po przecinku, spróbuję to poprawić
a weź w drodze konsekwencji skoryguj ten format dodając przecinek pomiędzy ostatnimi dwiema zmiennymi :)) AT+CCLK="15/03/29,22:28:00,+2"
Przecinek w łatwiejszy sposób można uzyskać: [syntax=basic4gl] Config Dp = Comma ' Config Dp = "," ' konfiguracja dla starszych wersji Bascom'a S = Fusing(t , "#,##") [/syntax]
16 (liczba nie cyfra) ponieważ temperatura odczytywana jest z dokładnością do 4 cyfr po przecinku, dlatego odczytaną wartość trzeba podzielić przez 16 (przesunąć o 4) Bd(1) = 1wread(9) tu do Bd jest wpisanych 9 bajtów ( liczba bajtów w nawiasie) odczytanych przez 1wread(9) z czego 2 pierwsze to temperatura
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??
Co to znaczy inne wyświetlacze ?. Wróżką nie jestem, ale bez schematu mogę się domyśleć, ze sterujesz kluczami załączającymi poszczególne wyświetlacze poprzez port D, a dane wysyłasz na port B. W takim wypadku zamiast zmieniać wartości na porcie B pozmieniaj dane w tablicy Tabela. No i nie zapomnij o przecinku dziesiętnym ;)
Temat rozwiązany.Jak się okazało błąd był bardzo prosty.W listingu który odczytuje wszystkie parametry po kolei pomiędzy dzientygodnia a ACK nie było przecinka.Co ciekawe Bascom nie zgłaszał błędu.Wpadłem na to przy nauce zapisu i odczytu pamięci EEPROM która jest na tym samym module co zegar.Reasumując przy odczycie po I2C pomiędzy parametrem odczytywanym...
398216 Usunięty <---- dzięki z plusa ! Zadowala mnie wynik z dokładnością +/- 0.02 % , a w marzeniach mam +/- 0.01%..to chyba nie jest źle, że dążę do dokładności...dobrze mi się patrzy jak np: ładuję li-ion i napięcie na nim jest maksymalnie 4.201 V, a nie np: 4.2V nie wiedząc co jest na drugim miejscu po przecinku...
Wyszukujesz początek ramki, czyli pewnie "$GPRMC," Potem ładujesz znaki do zmiennej textowej aż natrafisz an przecinek. Jak natrafisz na przecinek to zatrzymujesz ładowanie znaków (a przecinka nie ładujesz). Konwertujesz Text na liczbę Integer (chyba że chcesz tablicę Stringów). Potem masz przecinek. Omijasz. Zbierasz kolejne dane aż do kolejnego separatora....
Ja dokładnie tak zrobiłem, wyświetlam same 8-ki i po chwili pierwszy odczyt wskakuje. Jeszcze nie mam pomysłu jak rozwiązać problem przecinka w temperaturze np 23,4. Nie wiem czy dobrze myślę, najprościej dostawić mnożenie x10 i wyświetlać jako 234 a przecinek po prostu włączać w odpowiednim momencie, nic innego nie przyszło mi do głowy.
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...
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...
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
potrzebuje tylko czesc przed przecinkiem wiec w sumie mozna i druga metoda
Łopatologicznie to by było tak... Masz zmienną o nazwie np. LICZBA=123 i chcesz z niej wyodrębnić setki, dziesiątki i jedności... Musisz stworzyć nowe zmienne typu całkowitego, np. SETKI=LICZBA/100 --> (123/100 = 1,23 zmienna typu całkowitego utnie te 23 po przecinku i zostanie 1 --> SETKI=1) DZIESIĄTKI=(LICZBA/10)-(SETKI*10) --> (123/10=12 --> 12-1*10=2...
Dzieki, za odpowiedz juz pokazuje poprawnie. A jak zrobic zeby pokazywal tylko dwie cyfry po przecinku?
Piotrek_P dziekuje bardzo teraz śmiga wszystko , tylko jeszcze jak zlikwidować całkiem liczby po przecinku ?
Od razu wspomnę, że nie znam Bascoma, więc mogę nie mieć racji, ale dla mnie wygląda podejrzanie wyrównywanie do całkowitej wyniku sin() i cos(). To raczej nie ma sensu. Tak ogólie to sin i cos należy stablicować - tj obliczyć N poszczególnych wartości raz i potem korzystać z gotowych wartości z tablicy. Jak masz stałe N to wręcz można (o ile można...
Wszystko przerwie ;) nawet wait'a - od tego są przerwania jak sama nazwa wskazuje. Tylko podejrzewam, że może w trochę nieprzemyślany sposób dałeś parametr Nosave Jeśli chodzi o te nosave to dałem bo dałem, narazie to sam szkielet programu , nawet odpalany jeszcze nie był. Co do przecinków to juz jej wywaliłem ;)
Kiedy napisałem "bez wklepywania" to chodziło mi o to, że przy użyciu dwóch, trzech programów nie trzeba wpisywać niczego "z palca". Nie takie ramki się łapało :P Eksportujesz dane np. jako CSV (taki standard "Comma separated" i data as HEX), potem odpalasz Notepad++ i w zależności od potrzeb zamieniasz przecinek na co chcesz czyli zamiast CTRL+F .....
Enable Timer0 , On Timer0 Przerwanie Zamiast przecinka ma być chyba dwukropek. Albo przenieść do następnej linii.
Która to wersja Bascom nie potrafi napisać : Error : 375 Line : 49 Duplicate definition https://obrazki.elektroda.pl/2709901200_... W linii 25 -> Pompa_wl Alias Portc.0 'pompa obiegowa W linii 49 -> Pompa_wl As Bit Pewnie ustawia Bit a nie pin chociaż u mnie to się w ogóle nie kompiluje. W jednej linii przy deklaracjach masz pozostawiony...
No dobrze, sprawdziłem. Płytka EVBavr05. Bascom 1.11.9.5 Port A, Twój kod. Chodzi. W pierwszej linijce napis test. w drugiej 12345678. Nie trzeba ustawiać config output. Bascom sam to robi. Dodano po 6 Może to nie jest 16*2 ? Może ma trochę inaczej wyprowadzone piny? Ponieważ Twój kod skopiowałem to raczej nie ma błędów w przecinkach itp.
Za końcem programu: Nazwatablicy: data 'wartości kolejnych kolumn oddzielone przecinkami Odczytujesz poleceniem lookup. Np.: For X = 0 To 4 cyfra z 5 kolumn Portb = Lookup(x , Cyfra) Waitms Czaskol Next Portb = 0 'kolumna odstępu Waitms Czaskol Zauważ, że tu zmienna "cyfra" decyduje z ktorej tablicy odczytamy dane. ;)
Dana jest zmienna 'sx' s zawsze jest takie samo - jest to znak Chr(10). Potrzebuję "wyłuskać" x. [syntax=basic4gl]zmienna = Chr(10);x[/syntax] Coś takiego nie działa, niestety. Ani przecinki, ani kropki ani średniki. Pozdrawiam
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...
Dzień dobry. Kompilator przecież pisze o co chodzi :D Zamiast "jeśli przycisk = 0" napisałeś "jeśli przycisk = Duża litera O" Brakuje też przecinka przed Right. http://obrazki.elektroda.pl/7581088600_1... Poniżej film z uruchomionej symulacji :D https://filmy.elektroda.pl/100_144731640... Miłego dnia. P.S. Do Gunslinger - Myślę że...
Witam Jest to miernik pojemności Jak zwiększyc dokładnośc tak aby na zakresie nF wynik był wyświetlany trzy miejsca po przecinku. Np: 2,234nF Dzieki
Witam ! Program nie kompiluje się, bo w nocy byłeś głodny i "zjadłeś" jeden mały przecinek w linii: Config Lcdpin Poszukaj go ... Pozdrawiam. Stefan ps. aby zaremować linię nie trzeba pisać REM wystarczy postawić taką małą kreseczkę '
Możesz podać gdzie przeczytałeś że ta liczba po przecinku oznacza liczbę wysłanych bajtów? Help nic nie mówi na ten temat. Sprawdzałem w symulatorze że ta liczba nic nie zmienia. Jest taka informacja w helpie "When you use Printbin ar(1) , the whole array will be printed." A kto powiedział że ja wpisuje dane? Ja je wysyłam. Ale twoja tablica jest pusta....
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.
Najszybciej powinno pomóc to ;) ..ale mógłbyś sam pomyśleć... Zdecydowanie lepiej zrobi jak pomyśli samodzielnie bo to co napisałeś nie działa poprawnie , poza tym ma sporo ograniczeń . Napisałeś to nie biorąc pod uwagę budowy mikrokontrolera i najgorzej jak można było . Czym mniejsze zmienne tym szybciej działa program , jak są 8 bitowe to super bo...
Eksperymentuje, więc na razie nie ma komentarzy. Temperatury dodatnie i wilgotność poprawnie wyświetla. Poniżej 0*C to już głupoty typu: 3480*C Sumę kontrolną usunąłem, bo nie wyświetliło ani razu ERROR. Mybyte = T + H 'dodajemy wartości temperatury i wilgotności If Mybyte <> Crc Then 'jeśli suma kontrolna się nie zgadza Lcd "error"...
Przecinki zauważyłem wcześniej. :D Tak jak już wspomniełam, slave nie odbiera danych (wyświetla "0").
Co to jest double. U mnie w BASCOM-AVR nie ma tego typu Dokładnie tak, jak napisał przedmówca. Funkcja Hex oddaje wewnętrzną reprezentację zmiennoprzecinkową, która potraktowana jako liczba stałoprzecinkowa daje bzdurę. Jeśli interesuje Cię wewnętrzna reprezentacja liczby, musisz ją rozbić na cechę (wykładnik) i mantysę i pamiętać o czymś takim, jak...
no i wiecie co się okazuje??? że bascom avr, w przeciwieństwie do 8051, nie umie łączyć zmiennych różnych typów u mnie zmienna przecinek byłą typu byte, wystarczyło ją zmienić na integer (czyli taki sam typ jak całości temperatury) i wszystko działa twórcy bascoma zrobili to chyba spejalnie, żeby zająć jak najwięcej miejsca w pamięci RAM :( :| dzięki...
Kolega popełnił więcej byków przy przepisywaniu. Brak jeszcze kilku THEN i przecinków. Cały program wraz z plikami wynikowymi masz w załączniku.
To sobie zapisuj w postaci całkowitej i pamiętaj ile miejsc po przecinku dla wszyskich liczb jest przesunięcie, a resztę zaokrąglij.
Tak, łatwiej jak ramka będzie w Bascomie miała taką postać: print zmienna1,",",zmienna2,", ", zmienna3,"x" czyli zmienne dzielisz przecinkiem, albo innym znakiem, zawsze takim samym. Tylko nie wiem po co jeszcze do tego AVR? nie lepiej wszytko zrobić w ESP?
Owszem w konfiguracji Timera głupi błąd, ale ku mojemu zdziwieniu przerwanie działało. W liczeniu czasu chyba się koledze przecinek przestawił. Przerwanie w teorii kompilatora bascom trwa ok 0,16ms. W praktyce: po dodaniu w przerwaniu " toggle portb.0" częstotliwość generowanego przebiegu prostokątnego to 3,289kHz więc przerwanie wykonuje się z częstotliwością...
Witam, Mam taki problem w AVR Studio: chciał bym wyświetlić na LCD liczbę integer ale: - wyrównaną do prawej - z przecinkiem na 2gim miejscu (czyli integer 12342 powinien być wyświetlany jako 123,42) W Bascom była gotowa funkcja Format() i robiłem tak: [syntax=basic4gl] Lcd_tekst = Str(zmienna_integer) Lcd_tekst = Format(Lcd_tekst , " 0.00" ) 'czyli:...
A z jaką dokładnoścą możemy się spodziewać wyniku operacji (ile miejsc po przecinku)??? Patrz help "Podstawy języka BASCOM BASIC" Ile pamięci "pożre" nam funkcja trygonometryczna (sin)??? Sporo. Coś w okolicach 600 bajtów nawet.
W BASCOMIE 8051. Wytlumacz o co chodzi z tym przeliczeniem. chce miec kazda cyfre liczby (takze te po przecinku) w osobnej zmiennej
skoro Reaper82 pisze w C, to cu mu sugerujecie bascom. Zgodzę się z tym, że ta funkcja zjada dużo pamięci, ale jesli jest wykorzystywana kilka razy kolejene przywołania nie sa już tak straszne. Mam ATMega32 i sprintf uzywane jest tam kilkadziesiąt razy i jakos mi nie brakó miejsca. Jak komuś zależy na pamięci to nie pisze ani w c ani w bascomie. Pozostaje...
No sposób parsowania danych i porównywania zależy wyłącznie od ciebie. Nie ma znaczenia jak to zrealizujesz jeżeli cel będzie ten sam, a mianowicie prawidłowe działanie. Można też parsowanie realizować np. za pomocą rozdzielania danych w stringu np. przecinkami jak to ma się np. w plikach csv. Wtedy dane mogą mieć różną długość byle by tylko kolejność...
bascom fusing przecinek dzielenie przecinek ds18b20 przecinek
iskrownik ustawić odświeżania pamięci oświetlenie przez bluetooth
galmet wyswietlacz galmet wyswietlacz
Reflektor w skuterze ledwo świeci - przyczyny i rozwiązania Nagłe zniknięcie kanałów z satelity Astra - przyczyny i rozwiązania