Bascom help: "FUSING" :)
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
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, "#.##")?
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
Zobacz funkcję FUSING() ze strony 199 pomocy [url=http://www.pe.ifd.uni.wroc.pl/Basco... Bascom PL Pozdrawiam Dawid
Użyj FUSING.
Szukaj komendy Fusing
Long = GetAdc(0) Single = Long * 0.01955 String = Fusing(Single, "##.##") LCD String; "V"
Użyj funkcji do zaokrąglania FUSING
Do testów spróbuj pominąć fusing...
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.
Bo fusing robi stringa proszę szanownego kolegi:) To nie tędy droga...PS może nie zaokrąglanie a histereza?:)
Przepraszam, podczas kopiowania zeżarło mi U1 = Fusing(V1 , "##.&")
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")
Poczytaj helpa o funkcjach Fusing i Format.
locate 1,8 lcd "I=" '<- nie mam jak sprawdzić ale tu może trzeba dać średnik Lcd Fusing(amp , "#.##")
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.
... 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)...
W miejsce instrukcji Fusing użyj Format.
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...
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.
BASCOM ma taką funkcję jak FUSING(), do formatowania tekstu. Popatrz do helpa. Jest tam to dokładnie opisane.
W bascomie masz takie funkcje : FUSING FORMAT STR cos z tego powinno pomóc i warto czasmi przeglądnąc helpa ;)
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 nie w tej linijce - gdzieś wcześniej jest komenda fusing - o niej poczytaj nieco
To sięgnij po" fusing" dla single i "format" dla reszty.
- 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...
Poszperaj w pliku pomocy do bascoma (1.11.7.4), zwróć uwagę na funkcję fusing(), format() Pozdrawiam.
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ą...
Czyli np : Wartosc_wyswietlana = Fusing(Wartosc_do_zaokraglenia , "#.&&") lub #.## z zaokrągleniem ostatniego miejsca.
Zmienna typu SINGLE i komenda FUSING.
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...
Zainteresuj się poleceniem FUSING. Przeczytaj helpa i zobaczysz, że da się zrobić.
Poczytaj o "Fusing" i "Format" Edytowałem post. Robak
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...
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...
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...
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
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, "#.##")...
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...
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...
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 , "####.#########")...
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,...
Nie da się pomnożyć stringa przez 6 :!: Trzeba pomnożyć wartość V i dopiero przekonwertować funkcją fusing.
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.
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??...
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...
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...
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 , "#.#")...
Tmp = Fusing(tymcz , " ##.&&&") Raczej może tak: Tmp = Fusing(tymcz , "#.&&&") Przed kropką tylko jeden znak 'hash', niezależnie jak wielka liczba. e marcus
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ę,...
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...
Wynik = Fusing(wartosc , "#.#") If Wartosc >= 0 Then Wynik = " " + Wynik End If
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
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...
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ć....
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.
Witam Wart_nap = Fusing(r , "#.##" ) Wart_nap = Format(Wart_nap , " ") Wtedy nie będzie się przesuwał napis
Można przecierz zrobić tak: T = Fusing(s , "##.#") a potem wydzielić sobie 2 pierwsze cyfry prawda :D
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...
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 , "###.#")...
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
[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...
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...
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...
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...
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:
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ć"...
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"...
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ą...
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 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...
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...
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...
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ą...
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...
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
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
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...
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...
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 , "#.##")...
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..
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.
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
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...
'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...
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
Witam, stosuje LM35 od wielu lat. Do odczytu temperatury jw Bascom stosuje następujący kod Zmienne zadeklarowane są następująco: Dim Volt As Word Dim Tp As Single Dim Tm As String * 4 ......... Volt = Getadc(0) Tp = Volt * 5 Tp = Tp / 10 Tm = Fusing(tp , "#.&") ......... Lcd Tm;" ";"C"
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...
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...
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...
Dzis spróbuje napisac sobie procedure konwertujaca liczbe na format 0,00 - mam pomysła:-). Koncepcje podsunął kolega xury i wielkie dzieki dla niego. Jaka jest najnowsza wersja Bascom, ale taka która pewnie i stabilnie działa? Czy nowsza wersja nie będzie mieć problemów z konwersjami czy lepiej zrobić sobie jednak na piechote i nie łudzić sie że "niedobre"...
Po pierwsze, jest zmienna o nazwie "swr" oraz próba deklaracji podprogramu o tej samej nazwie. Najprościej zmienić nazwę podprogramu na inną. Taki kod mi się skompilował: [syntax=vbnet] '---------------------------------------... ' SWR-Meter DL8UA '---------------------------------------... $regfile = "m8def.dat" $crystal...
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...
fusing bascom bascom format fusing bascom fusing przecinek
czerwony ekran telewizor sharp audio cambridge cieknie pralki
ładowarka 18650 schemat ładowarka 18650 schemat
Sterownik do klawiatury Titanum TK103 - gdzie znaleźć? Woltomierz w agregacie wskazuje 380V bez obciążenia