Config DP działa od wersji 2.0.1.0, jeżeli masz tą lub nowszą wersje Bascom'a w Fusing zamień "#.##" na "#,##".
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)...
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...
Nigdy nie miałem tego sensora u siebie i dlatego nie czytałem dokumentacji i koła od nowa tez nie chciałem wymyślać. Jest gotowy kod na to na innym forum. On moze obsługiwać więcej czujników. Najważniejsze że pokazane jest jak do tego Twojego dodać obsługę temperatur ujemnych. [syntax=vbnet] ' ' Sensor DHT22 ' Insanity ' $regfile = "m328pdef.dat" $hwstack...
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
W miejsce instrukcji Fusing użyj Format.
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ą...
to zmienna *10 i do integera nastepnie funkcja str i format fusing to jest to czego sie unika w bascomie ;)
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...
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...
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
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 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
Ja miałem podobny problem z fusing przypadkiem to rozwiązałem a mianowicie robiłem konwersję dajmy na to g = fusing(tu wiadomo) potem wysyłałem na lcd locate 1 , 2 lcd g potem dopiero znowu konwersja nastepnej wartości i znowu wysyłałem na lcd jeśli fusing miałem w grupie, czyli konwertowałem zmienne a potem dopiero wysyłałem te wartości na lcd to zawsze...
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...
Ok jest wszystko pięknie chodzi. Ale zdążyłem to zrobić innym sposobem, rozdzielałem liczbę na wiele sposobów, najpierw z pierwotnej uzyskiwałem całkowitą potem pierwotną razy 10 - odejmowałem całkowitą poprzednią i miałem wartość dziesiętną potem wyświetlałem to jako dwie liczby w środek dając przecinek. A tu jeszcze przetłumaczona instrukcja używania...
zobacz jak wyglada sam odczyt temperatury: B1=1wread... gdzie B1 masz zdeklarowane jako Byte, czyli wartośc całkowitą, dalsze operacje to tylko odpowiednie przeliczenie tego i przesunięcie przecinka a operacja fusing to tylko czysto kosmetyczna i jednoczesnie pamiecio żerna zabawa w estetyczny wynik na lcd.... Jednocześnie nie jestem do konca przekonany...
Fusing beeeeeee:-) , Ale jak ja biedny teraz wyświetle sobie liczbe do dwuch miejsc po przecinku?:-) bo juz taki dobry z programowania to narazie nie jestem. Nie ma jakies innej instrukcji jakiegoś format czy coś:) Zaznaczam, ze C nie znam tylko Bascom na poziomie radzenia sobie i VBA ale to nie ta działka:) PS Patrze na wyswietlacz i nie wierze ze...
Soft nie jest napisany optymalnie, ale wiem że to ten co krąży po necie :) Oczywiście należało by go odchudzić o Single czy Fusing i te niepotrzebne podprogramy.... Po pierwsze jak masz ustawione fusebit odnośnie taktowania wewnętrznego RC ??? W programie nie zdefiniowałeś jaki dajesz crystal i idzie domyslnie na wpisie z zakładki conf Complier>chip......
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
Long = GetAdc(0) Single = Long * 0.01955 String = Fusing(Single, "##.##") LCD String; "V"
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
Bo fusing robi stringa proszę szanownego kolegi:) To nie tędy droga...PS może nie zaokrąglanie a histereza?:)
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.
Użyj FUSING.
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")
Szukaj komendy Fusing
Użyj funkcji do zaokrąglania FUSING
Do testów spróbuj pominąć fusing...
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
Przepraszam, podczas kopiowania zeżarło mi U1 = Fusing(V1 , "##.&")
- 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...
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.
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ą...
Witaj. Poniżej poprawiony program, przy którym kompilator nie melduje błędów. Było ich kilka. Przypomina mi się taka łamigłówka - "Znajdź 10 różnic na 2 rysunkach" :) Tyle nie było. Poprawności wyświetlania na LCD nie sprawdzałem, ale poprawiłem tak, aby był sens w wyświetlanych danych. Jak go podłączysz, to sprawdzisz. $regfile = "m8def.DAT"...
Poczytaj helpa o funkcjach Fusing i Format.
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...
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...
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...
To nie w tej linijce - gdzieś wcześniej jest komenda fusing - o niej poczytaj nieco
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.
To sięgnij po" fusing" dla single i "format" dla reszty.
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...
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, "#.##")...
Poszperaj w pliku pomocy do bascoma (1.11.7.4), zwróć uwagę na funkcję fusing(), format() Pozdrawiam.
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...
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...
Zmienna typu SINGLE i komenda FUSING.
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 , "###.#")...
Czyli np : Wartosc_wyswietlana = Fusing(Wartosc_do_zaokraglenia , "#.&&") lub #.## z zaokrągleniem ostatniego miejsca.
Poczytaj o "Fusing" i "Format" Edytowałem post. Robak
[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...
Tmp = Fusing(tymcz , " ##.&&&") Raczej może tak: Tmp = Fusing(tymcz , "#.&&&") Przed kropką tylko jeden znak 'hash', niezależnie jak wielka liczba. e marcus
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
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...
1. Dim Wart_nap As String * 3 2. Wart_nap = Fusing(v , " ##.& ") 3. Kropka to też znak...
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...
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 , "#.#")...
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,...
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 , "####.#########")...
Wynik = Fusing(wartosc , "#.#") If Wartosc >= 0 Then Wynik = " " + Wynik End If
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.
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ę,...
... 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)...
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 '---------------------------------------...
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...
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
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??...
Witam Wart_nap = Fusing(r , "#.##" ) Wart_nap = Format(Wart_nap , " ") Wtedy nie będzie się przesuwał napis
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...
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...
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ć....
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
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...
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...
'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...
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:
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..
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
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...
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"...
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
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...
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. 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ą...
Biblioteka której użyłeś nie ma możliwości dowolnej konfiguracji pinów. W załączniku masz bibliotekę prosto z Rosji :D Chiński wyświetlacz sam mi się uszkodził ale coś tam wyświetla :D http://obrazki.elektroda.pl/6257086800_1... Kod którego użyłem do zrobienia tego zdjęcia [syntax=vbnet] $regfile = "m8def.dat" ' specify the used micro...
Wklejam ten kod [url=http://bascom-forum.de/showthread.p... właściwego postu . [syntax=basic4gl]'----------------------... ' Dateiname : TEA5767-TP.bas ' Revision : 1.0 19.08.2012 ' Controller : AVR ATmega8 ' Autor : Thomas Palluthe (www.tp-homesoft.de)...
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 , "#.##")...
Kat = 360 / Il_zebow 'przeliczanie il krokow Dlaczego konwertujesz dwa razy, skoro masz gotową wartość -sam generujesz niedokładności?? Z = Fusing(kat , "#.#######") Kat = Val(z) ; ta instrukcja jest potrzebna? Il_krokow = Kat * 1000 ;przenieś nad Z=Fusing Lcd "kroki:" ; Il_krokow <--tu powinno wyswietlic...
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...
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.
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...
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...
Działa elegancko. Żeby było wiarygodnie to nawet wygrzebałem Ardu Leonardo z m32u4 na pokładzie. Na jedną rzecz bym jeszcze uważał. Twój kod nie jest w żaden sposób synchronizowany. Może się kiedyś zdarzyć, że jedna z wiadomości nie dojdzie. Z nie będzie miało wartości 3 i przy nastepnej wiadomości procesor zacznie przypisywać wartości innych zmiennych...
fusing bascom bascom format fusing fusing minolta
praktyczne programowanie rs232 kupno używanej karty texas instruments wyświetlacz
Siemens EQ7 – wejście do menu serwisowego, test pomp i młynka, kody błędów, TE7xxx Kondensatory elektrolityczne w powielaczu napięcia 10-stopniowym – Cockcroft-Walton, ESR, polaryzacja