Bascom help: "FUSING" :)
Config DP działa od wersji 2.0.1.0, jeżeli masz tą lub nowszą wersje Bascom'a w Fusing zamień "#.##" na "#,##".
Text = "99.9999" Text = Format(text , " 0.00") LCD Text Pytanie poza konkursem: dlaczego wszyscy notorycznie stosują Fusing(xxx, "#.&&")? Nie lepiej Fusing(xxx, "#.##")?
Niestety , to nie błąd Bascoma tylko Twój.Pewnie z chytrości ;) , zadeklarowałeś "za krótkie" zmienne STRING. Dim Napiecie As String * 3 'zadeklarowano 3 znaki Dim Prad As String * 3 'j/w ... Napiecie = Fusing(v , "#.##") 'próba "upchnięcia" 4 znaków Prad = Fusing(i , "#.##") 'j/w ... Piotrek
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
Użyj FUSING.
Szukaj komendy Fusing
Użyj funkcji do zaokrąglania FUSING
Do testów spróbuj pominąć fusing...
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
Przepraszam, podczas kopiowania zeżarło mi U1 = Fusing(V1 , "##.&")
Buzzer działa świetnie. Mam problem z ADC. odczyt mam tak: [syntax=vbnet] Rezu = Getadc(0) Wynik = Rezu / 205 V = Fusing(wynik , "#.##") Setfont font8x8tt : Lcdat 1 , 96 , V ; "V" '3 , 1 , V ; "V"[/syntax] W kodzie od Ciebie jest : [syntax=vbnet]Dim Prev_adc As word [/syntax] Kompilator odwołuje do ustawienia Prev_adc as Single. Czy to ma związek z...
Long = GetAdc(0) Single = Long * 0.01955 String = Fusing(Single, "##.##") LCD String; "V"
Jeśli chcesz wyświetlić bez miejsc po przecinku to rzutuj zmienną cisn na jakąś zmienna typu Integer lub Word. Zdefiniuj ją na przykład Dim cisn_int as integer i nastepnie napisz cisn_int= cisn I wyświetl bez fusing. Bascom to nie jest prymitywny język. Jest bardzo dobrym narzędziem do pisania nawet skomplikowanych programów.
locate 1,8 lcd "I=" '<- nie mam jak sprawdzić ale tu może trzeba dać średnik Lcd Fusing(amp , "#.##")
Jeśli pomnożysz x 1000 to funkcje int i round są już niepotrzebne. target = FUSING(source, "mask") target = FORMAT(source, "mask") Dokładny opis w helpie.
Poczytaj helpa o funkcjach Fusing i Format.
Bo fusing robi stringa proszę szanownego kolegi:) To nie tędy droga...PS może nie zaokrąglanie a histereza?:)
W miejsce instrukcji Fusing użyj Format.
Zedytowałem post. Zobacz. Dodano po 1 Ale i to może by zadziałało. Dodaj jeszcze jedno "0": Z = Fusing(a , "#.##") Z = Format(z , "00000")
Będą wyglądały tak samo. http://obrazki.elektroda.pl/6316574600_1... Jest to związane z tym o czym można poczytać wciskając na klawiaturze przycisk F1 kiedy Bascom jest uruchomiony. Wpisujesz "Language fundamentals" i masz wyjaśnione co i jak ;) Jeśli dalej będzie Ci przeszkadzać to że trzy rzędy wielkości dalej masz końcówkę 37 to użyj...
To nie w tej linijce - gdzieś wcześniej jest komenda fusing - o niej poczytaj nieco
... Może ktoś wie jak to zrobić bez sztucznego sprawdzania i dopisywania końcówek. PL Ja chyba wiem ;) 'dla Frm = 0 , kompiluje Fusing() 'dla Frm = 1 , kompiluje Format() 'teraz mozna porównać "pamięciożerność" Const Frm = 0 Dim A As Single , B As Integer , C As String * 10 A = 1.1625 B = A * 10 #if Frm C = Str(b)...
Witam, Mam pytanie... Jak zamienić zmienną Integer na Single w Bascom AVR?? Pytam, ponieważ muszę użyć funkcji: X = Fusing(ds1 , "#.##") a zmienna ds1 mam typu integer. Pozdrawiam A.
Poszperaj w pliku pomocy do bascoma (1.11.7.4), zwróć uwagę na funkcję fusing(), format() Pozdrawiam.
Cls Do Wart_ac = Getadc(1) Locate 1,1 Lcd Wart_ac V = Wart_ac * 0.0049 Wart_nap = Fusing(v , "#.&&") Locate 2,1 Lcd "Waga= " Lcd Wart_nap Lcd "kg " Waitms 1000 Loop End
To sięgnij po" fusing" dla single i "format" dla reszty.
Sprawa wygląda tak: Powiedzmy w zmiennej XT mam wartośc temperatury (już przeliczonej i obrobionej - z 12bit) daj my na to 23.34775643 ... Czyli tyle stopni celcjusza. No i własnie jest bardzo dużo tych drobnych po przecinku w tej zmiennej. A powiedzmy zależało by mi na ograniczeniu jej do 3 miejsc po przecinku, tak aby zuyskać 23.347 . Założenie maski...
W bascomie masz takie funkcje : FUSING FORMAT STR cos z tego powinno pomóc i warto czasmi przeglądnąc helpa ;)
- powyżej 10W: "Pwej= Tak będzie się wyświetlało jeżeli pierwszym bajtem zmiennej String Pwej będzie 0. Zero jest końcem łańcucha (dwie możliwości takiego błędu już podałem stos, albo nadpisanie przez inny łańcuch ;)). Nie piszesz też jaka wersja Bascoma to jest, może w którejś wersji był błąd z funkcją Fusing. Możesz podglądnąć co się dzieje z Pwej...
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...
BASCOM ma taką funkcję jak FUSING(), do formatowania tekstu. Popatrz do helpa. Jest tam to dokładnie opisane.
Zmienna typu SINGLE i komenda FUSING.
Zainteresuj się poleceniem FUSING. Przeczytaj helpa i zobaczysz, że da się zrobić.
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ą...
Witam. Po wgraniu programu do Bascoma i przeglądając go zauważyłem błędy: Config Pinc.0 = Input powinno być Config Portc.0 = Input I pozostałe Configi. Pinc.0 stosujemy przy odczycie danego pinu np. If pinc.0 = 0 then ........ Następnie linia nr 213 przed (Wyświetl zegar:) zawiera instrukcję Return ale ta część programu nie zawiera żadnego podprogramu,...
Poczytaj o "Fusing" i "Format" Edytowałem post. Robak
Aby wyświetlić zmienną zamień ja po prostu na tekst i tyle. Ja to robiłem tak: dim adres as byte dim adres1 as string * 5 adres1 = fusing(adres , "#.#") lcdstr adres1
wiem że do wywołania służy komenda GOSUB Widzę że nawet help napisany po polsku to dla ciebie trudna lektura... Podpowiem bardziej łopatologicznie: declare sub odczyt Sub odczyt Lsb = 1wread() : Msb = 1wread(): Tempa = Msb * 256 Tempa = Tempa + Lsb Tempa = Tempa / 16 T1 = Fusing(tempa , "#.##") end sub Podprogram...
Ale nie rozumie jakie ma znaczenie czy działa ciągle czy na żądanie GETADC wymaga takiej a nie innej konfiguracji przetwornika. Pisze o tym w helpie. Trzeba było przeczytać... http://zbeegin.republika.pl/bashelp/s_co... http://zbeegin.republika.pl/bashelp/f_ge... Mam jeszcze jedno pytanie jak zmienić wynik by nie pokazywało po przecinku??...
Spróbuj zmodernizować kod w ten sposób: Do A = Getadc(0) B = Getadc(3) C = A * 0.0049 D = B * 0.0049 T = Atn2(c , D) ' zwrócenie wartości arctan w radianach E = Rad2deg(t) 'zamiana rad na stopnie G = Fusing(c , "#.&&") 'zamiana wart. nap. sin na tekst H = Fusing(d , "#.&&") 'zamiana...
wymieniłem procesor i zamieniłem kolejność kodu ................ coś pomogło :) chyba zmiana kodu :) Raczej pomogła zmiana processora... Obie alternatywy kodu nie różnią się od siebie, ponadto patrz wyjaśnienia; mam jeszcze problem po przerobieniu na volty wyświetla mi np. 345 a powinno 3.45 stosuje: Pokaż w jaki sposób "przerabiasz" odczytaną wartośc...
Widzę, że kolega zamierza ostro optymalizować swój kod, skoro dał 1wreset do podprogramu. Z tym, że skoro nie przekazuje do niej żadnego parametru to szkoda go deklarować i lepiej użyć Gosub. Druga spawa to jeśli jest zegar to zamiast używać waitms do wstrzymywania programu na czas konwersji to można by np. w sekundzie nieparzystej rozpoczynać konwersję,...
Nie da się pomnożyć stringa przez 6 :!: Trzeba pomnożyć wartość V i dopiero przekonwertować funkcją fusing.
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...
rozwiązałem to w nstp sposób gdzie: -x0 to korekta dla zerowego ciśnienia -x4 to wartość dla 4rech atmosfer -a,b zmienne pomocnicze -ezero, e4bar wartości zapisane w eeprom x0=ezero d=getadc(0) x4=e4bar a=x4-x0 a=4/a b=d-x0 p=a*b S = Fusing(p, "#.#") thirdline lcd "Bar="; Locate 3 , 5 S = Fusing(p, "#.##")...
Czyli ta kolejność powinna być taka? 1wreset 1wwrite &HCC 1wwrite &H44 Waitms 750 1wreset 1wwrite &H55 1wverify Dsid1(1) 1wwrite &HBE I1 = 1wread(2) 1wreset 1wwrite &H55 1wverify Dsid2(1) 1wwrite &HBE I2 = 1wread(2) Tzewn = I2 / 16 Twewn = I1 / 16 Tw = Fusing(twewn , "#.#") Tz = Fusing(tzewn , "#.#")...
Problem polega na tym, że odczytujesz wartość ADC z uC zamiast z DS18xxx. Brakuje ci obsługi DS18B20. Poniżej fragment kodu działającego u mnie. [syntax=vbnet] Config 1wire = Portb.0 '0,1,2 NOP 3,4,5,6,7 works good ON MY Equipment Do 1wreset 'reset 1wwrite &HCC 'jedna kostka, więc wykorzystujemy rozkaz SKIP ROM 1wwrite &H44 'dokonaj konwersji Waitms...
1. Dim Wart_nap As String * 3 2. Wart_nap = Fusing(v , " ##.& ") 3. Kropka to też znak...
no ok, ale jeżeli zmienna Mnożnik_vład_2 ma wartość 0,01760 to po przypisaniu Mnożnik_vład = Val(mnożnik_vład_2) , zmienna Mnożnik_vład ma wartość 0,017599937 a żeby ją skrócić trzeba użyć instrukcji fusing nie może być jako single i koło się zamyka.
Witam Kolego Unreal89. Pracuję pod Bascomem 8051 i nie spotkałem się z funkcją, o której wspominasz. Przejrzałem pliki help'a i tam również nic nie znalazłem. Zainteresowany jestem z jakiego powodu odpada komenda "fusing"? Dla czego pytam? Pozwolę sobie obszerniej skomentować zaprezentowany listing. 1. Termometr DS18B20 przechowuje informacje o temperaturze...
Napisałem już programik wyświetlający ciąg znaków (string), ale nie mogę znaleźć funkcji przekształcającej zmienną zmiennoprzecinkową (single) w string. Jest na to jakaś gotowa komenda, czy muszę klepać własną funkcję? EDIT: Sam odpowiem sobie na to pytanie: Konwersję możemy wykonać za pomocą komendy „Fusing” i przy okazji lą ładnie sformatować....
Tmp = Fusing(tymcz , " ##.&&&") Raczej może tak: Tmp = Fusing(tymcz , "#.&&&") Przed kropką tylko jeden znak 'hash', niezależnie jak wielka liczba. e marcus
Wynik = Fusing(wartosc , "#.#") If Wartosc >= 0 Then Wynik = " " + Wynik End If
Nikt nie jest w stanie mi pomóc? nie wie wiem dla czego kontroler nie porównuje wartości Rozumiem że jesteś początkujący , ale nawet Ty powinieneś wiedzieć , że nie porównuje się zmiennej binarnej(Us) ze stringiem (Tmp) :( To tak , jak byś porównywał kilogram z czerwonym :D Poza tym , ten program jest niezwykle pamięciożerny(Fusing,Single). Jeśli ten...
Dzięki za cenne uwagi. Teraz wiem czego szukać. Generalnie zmiana kontrastu pokaże że dolna linia nie działa. Szpilki na zasilaniu przy LCD mogą się pojawić, nie dałem dodatkowego kondensatora. Inicjalizacja wyświetlacza co pewien okres czasu na pewno pomoże. Poprawki wykonam w Piątek lub Sobotę i się odezwę za tydzień. Kontrast jest regulowany dla...
Witam niestety komendą LCD nie można wyswietlać zmiennej typu Word. Jak obejść ten problem? Zadeklaruj jakąś zmienną jako string (np. tak jak poniżej jest ss1) Dim Ss1 As String * 12 Ss1 = Fusing(W, "#.&&") ' formatowanie zapisu doformatu x.xx Lcd "U=" ; Ss1 jak wartość odczytana komendą getADC ma się do wartości napięcia...
Nie lubię i nie używam Basica, ale moim zdaniem jest tak: PRINT wysyła dane typu STRING, a FUSING zamienia liczby na ciągi ASCII. Dodatkowo PRINT wysyła znaki końca wiersza. Żeby wysłać bajt spróbuj CHR() mniej więcej tak: PRINT CHR(Msb); CHR(Lsb) Teraz wysłane zostaną dwa bajty - starszy i młodszy a za nimi znaki końca wiersza. Teraz...
Fusing to jest do ułamków dziesiętnych... Do formatowania służy Format, ale już sobie poradziłem, dzięki wszystkim za pomoc, zamykam temat.
dzieki za odzew a)wiec tak bascom to 8051 wersja 2.0.11.0 b)chcialbym zeby to dzialalo wiec jesli nie trzeba to zapomnijmy o nr. c)co do FUSING masz racje zmienie przy nastepnym kompilowaniem d) co do e) to probowalem wszystkiego zeby tylko zadzialalo pozdrwiam i jeszcze raz dziekuje za odzew
Witam Wart_nap = Fusing(r , "#.##" ) Wart_nap = Format(Wart_nap , " ") Wtedy nie będzie się przesuwał napis
niestety ujemnych liczb cgba nie obsługóje , chociaz może ??? co do zaokrąglania to mozna dać Lcd Fusing(Wynik , "#.##") i powinno działać pozdrawiam
Problem leży w tym że zaraz po pierwszym odczycie bez uśredniania wyników zerujesz flagę [syntax=basic4gl]If Flaga_1uruchomienie = 1 Then Wart_nap1 = Fusing(y , "#.#" ) Wart_nap1 = Format(wart_nap1 , " ") Flaga_1uruchomienie = 0 Else Wart_nap1 = Fusing(yyy , "#.#" ) Wart_nap1 = Format(wart_nap1 , " ") End if[/syntax] a powinno być [syntax=basic4gl]If...
Można przecierz zrobić tak: T = Fusing(s , "##.#") a potem wydzielić sobie 2 pierwsze cyfry prawda :D
Udalo mi sie w ten sposob, nie wiem czy jest fachowy ale dziala: Dim T As String * 3 Dim Liczba1 As Single Dim Liczba2 As Byte Liczba1 = 183.9345345 T = Fusing(liczba1 , #) Liczba2 = Val(t) 'pod liczba2 podstawi zaokraglona wartosc Liczba1
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)...
Nie !!!! Nie w środku pętli to byłoby bez sensu. Ale ja to bym zrobił inaczej [syntax=basic4gl].. .... ...jakieś instrukcje.. .. Dim Pk As Byte Declare Sub PrzyciskC5 Ddrc = &B00000011 Set Portc.5 .... ...jakieś instrukcje.. .. Menu3: Pk = 0 Do Locate 1 , 8 Lcd "T" Start Adc Temp = Getadc(6) Temp = Getadc(6) C = Temp / 4.166 Celsius = Fusing(c , "###.#")...
Stworzyłem kod który powinien wyświetlać czas trwania stanu niskiego na lcd. Na wyświetlaczu pojawia się 0.0 ms oraz na przemian 1 lub 2 takt(czyli ile zliczył timer). kod: Bascom HELP "FUSING returns a formatted string of a single value." a zatem musiałbyś wprowadzić dodatkową zmienną np.: Dim Z As String * 10 i zamiast: Czas_2 = Fusing(czas_2 , "####.#########")...
Najprostszy dolnoprzepustowy filtr programowy: dim vs as single, sr as single, kfil as single, kfil1 as single, vi as integer coef=0.0049 kfil=... 'stała "czasowa" filtracji kfil1=kfil+1 vi=getadc(...) sr=vi*coef 'inicjowanie sredniej do ... vi=getadc(...) vs=vi*coef sr=kfil*sr sr=sr+vs sr=sr/kfil1 'średnia "ciągnięta"...
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...
[syntax=basic4gl] $regfile = "m644pdef.dat" $crystal = 16000000 $baud = 9600 $hwstack = 64 $swstack = 64 $framesize = 64 'konfiguracja pinow wyswietlacza LCD; inicjalizacja wyswietlacza Config Lcd = 20 * 4 Config Lcdpin = Pin , Rs = Portc.2 , E = Portc.3 , Db4 = Portc.4 , Db5 = Portc.5 , Db6 = Portc.6 , Db7 = Portc.7 Cursor Off Noblink Cls Dim Wart_adc...
durny błąd Nap: Wart_u2 = Getadc(4) U2 = Wart_u2 * 0.004887585533 V2 = U2 * 4.83 Wart_nap2 = Fusing(v2 , "#.#" ) Wart_nap2 = Format(wart_nap2 , " ") Return 'to wywalić Select Case Wyswietlanie Case 0:
Tak na szybko mam takie rozwiązanie: Dim Go_s As String * 2 , Mi_s As String * 2 , Se_s As String * 2 Go_s = Str(godzina) Mi_s = Str(minuta) Se_s = Str(sekunda) Lcd Format(go_s , "00") ; ":" ; Format(mi_s , "00") ; ":" ; Format(se_s , "00") Wartości...
Odpaliłem i idziała :) Problem w tym, że pokazuje coś nie tak. Temperatura dodatnia błąd na plus około 2 stopień. Zamiast 22 pokazuje 24.3 a przy ujemnej (zwykły termometr) pokazuje -13 zamiast - 18 Do 1wreset 1wwrite &HCC 1wwrite &H44 Waitms 250 Waitms 250 1wreset 1wwrite &HCC 1wwrite &HBE Lsb = 1wread(): Msb = 1wread(): Tempa...
witam mam nastepujacy problem w bascom moze banalny ale nie moge go przesskoczyc:(brak logicznego myslenia) chodzi o pomiar temperatury na ds 18b20 przed wyswietleniem temperatury formatuje liczbe za pomoca polecenia: Str_temp = Fusing(temp , "#.&") wiec z liczby np: 22.6255 zostaje mi 22.6 i moge to wyswietlic jest ok tylko liczba jest zapisana jako...
Witam Funkcję Fusing znam. Niestety, zgodnie z instrukcją Bascoma, nie pozwala ona na zaokrąglanie liczby do całości "po kropce musi wystąpić przynajmniej jeden znak # lub &" Więc nie spełnia ona moich oczekiwań. Pozdrawiam Karol
Poczytaj trochę Wiki Bascoma [url=http://wiki.mcselec.com/bavr/FUSING... bo tam zawsze pod każdym tematem pisze "See also" i po nitce doszedłbyś do kłębka [syntax=vbnet]B = Fusing(b , "#.&")[/syntax] Wszystko zależy co jeszcze ma robić ten kod bo do takich zadań to możnaby chyba zrezygnować z Single ;) ..ale jak ma robić tylko to..
Witam. Czy jest w Bascomie jakaś procedura która bezpośrednio sprawdza, czy liczba przechowywana w zmiennej single jest całkowita (naturalna)? Ewentualnie jak przy użyciu jak najmniejszej liczby kroków pośrednich sprawdzić czy wartość po kropce dziesiętnej ma wartość 0? Chcę użyć tego jako warunku i gdy single zawiera część ułamkową wyświetlić z maską...
AVRDOS Stream = Godz + Fusing(Napiecie, "##.##") Stream = Stream + Fusing(Prad, "##.##") A2 = Driveinit() A2 = Initfilesystem(1) If A2 = 0 Then Open "PLIKTEXT.TXT" For Append As #1 Print #1 , Stream Close #1 End If
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 '---------------------------------------...
najprościej chyba tak: Dim Dana(2) As Byte Dim T1 As Single Dim T2 As Single Dim Wynik As String * 8 If Dana(2) >= 248 Then Dana(1) = 255 - Dana(1) Dana(2) = 255 - Dana(2) Znak = "-" Else Znak = "+" End If T1 = Dana(1) / 16 T2 = Dana(2) * 16 T1 = T1 + T2 Wynik = Fusing(t1...
Witam serdecznie! Mam problem z wysyłaniem po RS danych. Korzystam z funkcji Print , używałem jej z i bez średnika, używałem też konwertowania na hexy cuda, wianki..... :) Program odbierający stringi (c#) czyta mi z tego portu jakieś badziewie (prawidłowy format to 20.58) a dostaję: 20.58 .58 0.58 8 20 20.58 celowo dałem tam spację bo jest, w bascomie...
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
Musisz zastosować sterowanie multipleksowe albo jakiś długi rejestr przesuwny (np. 4 układy 4094) żeby obsłużyć 4 cyfry wyświetlacza. To może być coś takiego: $regfile = "attiny26.dat" $crystal = 8000000 Config Portb = Output Config Portd = Output Config Adc = Single , Prescaler = Auto , Reference = Avcc Dim V as Word Dim V_real as Single...
Juz lepiej z przejrzystością kodu , sam chyba przyznasz ze łatwiej ogarnąć program , tylko te Wait'y . Miałeś je usunąć z programu . Stosujesz dokładne odmierzanie 1 sekundy i minuty a zatrzymujesz program Wait'em 10 na około 10 sekund . Napisałem jak wykorzystać odmierzanie 1 sekundy do odmierzenia 10 sekund dla buzzera Dopisz w tej linijce kodu Wart_nap...
Bascom nie jest taki głupi i nie pozwoli skompilować jeśli Relative Call or Jump jest zbyt daleki. Wywali błąd. Przykładem jest biblioteka hexval.lib autorstwa MWS. Nie jest to biblioteka MCS i użyto w niej RJMP i RCALL. Jest pomocna bo sprawdza czy wartości HEXstringów zawierają tylko dozwolone znaki A-F 0-9, jednak dla większych programów np. z obsługą...
Opis magistrali 1Wire masz w helpie. Poniżej kod na obsługę dallasa DS18B20. Config 1wire = P1.0 'konfiguracja magistrali 1wire Config Lcd = 16 * 1a 'konfiguracja wyswietlacza Deflcdchar 1 , 4 , 10 , 4 , 32 , 32 , 32 , 32 , 32 'znak stopnia Dim T1 As Single Dim T2 As Single Dim B1 As Byte , B2 As Byte , R As Byte Dim Tmp As String * 6 Dim Znak As String...
Przy kompilacji kodu na atmega8 wychodzą mi błędy;ADC_MUX entry not found in dat file. Ten sam kod działa na atmega16 oczywiście po zmianie wyprowadzeń. $regfile = "m8def.dat" $crystal = 8000000 Config Lcdpin = Pin , Rs = Portd.2 , E = Portd.3 , Db4 = Portd.5 , Db5 = Portd.6 , Db6 = Portd.7 , Db7 = Portd.0 Config Lcd = 16 * 2 Cls Cursor Off...
Witam, tylko w tym poście jest program w bascomie dlatego tu zapytam robię pomiar napięcia [syntax=vbnet] I2cstart I2cwbyte &H80 I2cwbyte &H02 waitms 200 I2crepstart I2cwbyte &H81 I2crbyte bajt1 , Ack I2crbyte bajt2 , Nack I2cstop Danav = makeint(bajt2,bajt1) SHIFT danav , right , 3 Danav = danav *4 xsingl = danav/1000 Napis = fusing(xsingl , "#.##")...
Też jest prosto: 1. obcinasz ułamek --> masz część całkowitą ... Jak zamienić liczbę całkowitą na znaki, nię będę pisała, bo to już trywialne. No niewiem :? Liczby zmiennoprzecinkowe są zapisywane inaczej niż liczby całkowite i mogą być pojedynczej lub podwójnej precyzji gdzie mamy mantysę ,wykładnik itd. Wcale nie jest łatwo takie ustrojstwo "rozebrać"...
spróbuj tego: Temp: Deflcdchar 1 , 12 , 18 , 18 , 12 , 32 , 32 , 32 , 32 Dim H As String * 5 Dim Odczyt As Integer Dim T As Single 1wreset 1wwrite &HCC 1wwrite &H44 Waitms 250 Waitms 250 1wreset 1wwrite &HCC 1wwrite &HBE Odczyt = 1wread(2) T = Odczyt - 16 T = T * 10 T = T \ 16 T = T \ 10 Locate 1 , 1 H = Fusing(t , "#.#") Lcd H ; Chr(1) ; "C" Return
Cytat z noty: 0.2 to 4.7 V OUTPUT Przyjmijmy ze max napiecie na wyjsciu przetwornika to 5V(4.8V). A wiec: Dim Wart_nap As String * 5 ..... Wartosc = Getadc(0) A=Wartosc * 0.0048 Wart_nap = Fusing(A , "##.&&") Teraz to co podasz na ADC0 czyli napiecie w zakresie 0-5V bedziesz mial w zmiennej Wart_nap.
Witam. Program jaki mi napisałeś był faktycznie krótszy i robił to samo co mój. Dopisałem tylko tą procedurę by wyrzucał mi który jest to pomiar. Z tym że jest to jeszcze trochę przy banalne i muszę coś tam jeszcze dorzucić. Nauczyciel zasugerował coś w rodzaju termostatu. Żeby wyskakiwał jakiś napis jeśli temperatura będzie za wysoka i inny jeśli będzie...
'Działa od 30rpm do 300000rpm $regfile = "m8def.dat" $crystal = 8000000 Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portc.0 , E = Portc.4 , Rs = Portc.5 Config Timer1 = Timer , Prescale = 64 Config Int0 = Rising Dim Flaga As Byte Dim Text As String * 10 Dim Wynik As Single Dim Zmienna As...
Config Adc = Single , Prescaler = Auto , Reference = Avcc a to jest przykład przeliczania wartości wg wzoru na funkcję liniową: Wart_ac = Getadc(7) V = Wart_ac * 0.0044 Wzor = 2.8544 * V Wzor = Wzor + 1.6736 Wart_nap = Fusing(wzor , "#.#") 2.8544 i 1.6736 to już współczynniki wspomnianej funkcji liniowej, najbardziej istotne...
Obawiam się, że AT90S2313 nie jest tak ambitny jak Ty. Aby wyświetlić temperaturę z dokładnością do 0,1'C z DS 1820 trzeba przeprowadzić kilka obliczeń na odczytanych z czujnika bajtach 7 i 8 (a nie tylko na 1 i 2). Wymaga to operacji na liczbach zmiennoprzecinkowych (chyba, że ktoś się zaweźmie i spróbuje zrobić to na typie Integer). Takie kombinacje...
Witam wreszcie znalazłem chwile czasu. czyli ma podleczyć START i STOP po portd.1 i portd.2 i kod zmienić -> $regfile = "m8def.dat" $crystal = 8000000 Config Pind.1 = Input Config Pind.2 = Input Config Pind.3 = Input Set Portd.1 Set Portd.2 Set Portd.3 Bramka_start Alias Portd.1 Bramka_stop Alias Portd.2 Przycisk Alias Portd.3 Nie bardzo...
Żeby mikroprocesor pokazywał wartość w Woltach, trzeba przemnożyć wynik ADC przez działanie VREF/1023, wychodzi to około 0.0049. Jako, że czujnik lm35 daje 10mV na stopień, to autor tego programu, który przedstawiłeś pominął mnożenie wpierw wyniku przez 0.0049, by potem pomnożyć go przez 1000 (autor chciał uzyskać wynik np. 239 dla temperatury 23,9,...
Nie,ma liczyć litry tak jak dystrybutor . Dodano po 2 Nie wiem w jaki sposób dodawac litry do zmiennej po przekroczeniu okreslonej liczby impulsów z przepływomierza to co znalazłem to liczone wszystkie w czasie a tu chyba chodzi o przepełnienie licznika Czas tu nie ma znaczenia! Użyj dowolny timer w charakterze licznika (Counter), i tak jak sugerowano...
zapodam kodem ktory znalazlem na forum!!!!! (nastpenym razem pierw uzyj opcji szukaj), tylko minimalnie przerobilem. Config 1wire = Portd.6 Dim Odczyt(2) As Byte , T As Integer At Odczyt(1) Overlay , T1 As Single , Napis As String * 5, Sprawdz As String * 5 Do Sprawdz = Napis 1wreset 1wwrite &HCC 1wwrite &H44 Waitms 750 1wreset...
bascom fusing bascom format fusing bascom fusing przecinek
czujnik biegu wstecznego linux puppy radio alpine schemat
philips senseo sterownik ładowarki akumulatora
Bezpiecznik świateł postojowych Opel Corsa D 2010 1.4 Czy zasilacz 19V nadaje się do taśmy LED?