generalnie mozna to chyba na 2 sposoby zrobic: 1. tara =Fusing(w, "###.&&") 2. wyifowac mniej wiecej na zasadzie: if (tara>=10) locate x,y; if (tara>=100).... .... edit: w 2. oczywiscie o wartość chodzi ;]
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.
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...
Jest to kod z Pana Wiązani być może nieudolnie przerobiony. Oryginał ma tak: Dim licz_8ms As Byte Incr Licz_8ms If Licz_8ms = 125 Then ............. I to działa, czyli ja nie mogę używać liczby stałoprzecinkowej . No dokładnie. To działa tylko dla Byte (i podobnych). Chociaż typ danych Single mówi, iz może przyjmować wartości stało i zmiennoprzcinkowe....
Może problem powoduje przecinek i spacja na końcu linii?
Witam ! $crystal = 9,600000, przecinek w tej linii to przypadek ?
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:...
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
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]
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
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
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 .....
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ę.
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"
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...
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.
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ę '
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...
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...
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ą...
Oczywiście wrzucę dokumentacje jak wszystko uporządkuje. Co do wyświetlaczy to jest tylko on i off. Nie mogłem użyć PWM gdyż timer1 wykorzystałem do multipleksowania wyświetlaczy, timer2 odpowiedzialny jest za odliczanie czasu asynchronicznie a timer0 służy do odbioru komend w RC5. Co do wyświetlania temperatury to troszkę nie rozumiem gdy bym dał przecinek...
w skrócie to tak powinna wyglądać procedura odczytu temperatury z tego termometru i to napewno działa :D 1wreset 1wwrite &HCC 1wwrite &HBE Odczyt(1) = 1wread(2) T = Makeint(odczyt(1) , Odczyt(2)) Tspr = T T = Abs(t) T = T * 10 : T = T / 16 Przecinek = T Mod 10 T = T / 10 1wreset 1wwrite &HCC 1wwrite &H44
Witam Bardziej profesjonalnie jest wszystkie układy potraktować jako slave . Każdy słucha i czeka na przerwanie z uarta , jak je otrzymuje odbiera zawartość z udr porównuje i albo odbiera dalej albo ignoruje i czeka na kolejny adres . Atmel wyposażył układy w tryb multimaster ,który się do tego świetnie nadaje i warto o nim przeczytać w dokumentacji...
Użyj sprintf z odpowiednim ciągiem formatującym. Hmm... Tylko jaki ten ciąg? Dodano po 48 Rozwiązane. zrzucam liczbę funkcją itoa() do tablicy a później tę tablicę znak po znaku wysyłam na LCD w stosownej kolejności, wstawiając kropkę.
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...
witam problem raczej standardowy bym powiedział :) zakładam, że wolisz wersję skróconą bez wykładu a dlaczego tak itd :D 1wreset 1wwrite &HCC 1wwrite &HBE Odczyt(1) = 1wread(2) T = Makeint(odczyt(1) , Odczyt(2)) Tspr = T T = Abs(t) T = T * 10 : T = T / 16 Przecinek = T Mod 10 T = T / 10 1wreset...
Witam, Opiszę krótko: Procesor: AT89C2051 (at) 12MHz Czujnik: DS18s20 zapięty następująco: 1 - masa 2 - Data z 4k7 do +5V 3 - zasilanie +5V (to samo co 4k7 do Data). Program w: BASCOM 8051 Do 1wreset 1wwrite &HCC 1wwrite &H44 Waitms 250 Waitms 250 Waitms 250 1wreset 1wwrite &HCC 1wwrite &HBE Waitms 250 Waitms 250 Waitms 250 Zmienna_temp(1)...
Ładujesz sobie interesującą Ciebie ramkę do bufora (najdłuższa ramka ma chyba 82 znaki) , a następnie szukasz właściwego przecinka i pobierasz potrzebną ilość znaków po tym przecinku. Poniżej przykładowa procedurka wyszukująca 3ci przecinek i ładująca 11 znaków po nim. Działało to bardzo dobrze w prostym lokalizatorze z GPS'em na programowym uarcie...
tia Piszesz o szczegółach, a ja miałem na myśli zasady implementacji, czy inaczej mówiąc działanie konstrukcji języka. Brak takiej, czy innej konstrukcji niemal nie ma wpływu na implementację pozostałej części. Fakt, że brak w jakimś języku jakiejś konstrukcji nie wpływa specjalnie na implementację reszty. Obsługa procedury, czy klasy wymaga dodatkowo...
PRZEPRASZAM, POPEŁNIŁEM BŁĄD !!! WZÓR JEST "Vref/1023", a nie, jak pisałem odwrotnie Atmega8 żeby mierzyć napięcie musi mieć jakieś odniesienie - napięcie odniesienia czy też inaczej referencyjne. Są trzy możliwości - napięcie referencyjne to: - napięcie zasilania AVCC (około 5V) - napięcie odniesienia wewnętrzne 2,65V - napięcie referencyjne z zewnątrz,...
Jak sprawdzić czujniki ds18b20 czy prawidłowo wskazują temperaturę bo słyszałem że są niektóre fabryczne ,,felerne,, .Umnie wszystkie 5 zawyżają o 2stC , a może jest błąd w kodzie. dziękuje $regfile = "M16def.dat" $crystal = 8000000 '****** KONFIGURACJA PORTÓW ********* Config Porta = Output 'wysw ABCDEFG Config Portc = Output 'zasilanie W4,W3, W2,...
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
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...
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ąć.
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.
Może spróbuj przesunąć przecinek: zmienna x 10 lub 100 Wykonać obliczenia np na byte (jeśli wynik mniejszy od 255) lub na word/integer Potem z powrotem przesuń przecinek. Pozdrawiam.
To bardzo dobrze. Freqq, używaj znaki przystankowe "przecinek" trudno zrozumieć co piszesz.
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.
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...
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.
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...
ok, no tak przecinek... wstyd się przyznawać :) dzięki bardzo za szybka odpowiedz.
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 :)
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"...
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ć.
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....
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...
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...
linia 110 jest Gosub Przecinek a nie masz podprogramu przecinek: return i mamy 120% czyli o 20% przekroczoną wielkość procka Możemy próbować optymalizować kod lub większego procka max 2K kodu (ostro trzeba będzie wyciąć) czy ten układ attiny musi być czy możesz użyć innego?
Może by tak: $regfile = "m16def.dat" $crystal = 16000000 $baud = 4800 '---------------------------------------... Config Lcd = 20 * 4 Config Lcdpin = Pin , Db4 = Portc.4 , Db5 = Portc.5 , Db6 = Portc.6 , Db7 = Portc.7 , E = Portc.3 , Rs = Portc.2 On Urxc Przerwanie_uart_rx '---------------------------------------...
dzielenie przecinek ds18b20 przecinek wyświetlać przecinek
wyczyść filtr pralki whirlpool wyrównanie głowicy pixma zasilacz impulsowy anteny
aneng an870 siemens zdjąć obudowa komputer
Mercedes ML 2.7 CDI W163 - Skrzynia Biegów Ciągnie na P, N, D Naprawa taśmy z połączeniami grafitowymi: metody i materiały