Kłania się po prostu - najprostsza matematyka ;) masz np liczbę 123 i chcesz wyodrębnić poszczególne cyfry żeby je po kolei wrzucić na wyświetlacz LED 1. dzielisz liczbę 123 przez 100 - resztę z dzielenia odrzucasz i pozostanie ci cyfra odpowiedzialna za setki czyli 1 - prawda ? ;) 2. odejmujesz od liczby 123 liczbę 100 - bo wyżej już wykonywałeś dzielenie...
Jak chcesz wpisywać liczbę z klawiatury to powinieneś uwzględniać wagę poszczególnych składników tej liczby. Pierwsza cyfra z trzech to, waga=100 zatem key*100, przy następnej cyfrze waga=10 zatem key*10, a na koniec samo key bo waga=1 i operacja mnożenia jest zbędna, jak to wszystko zsumujesz to otrzymasz ostateczną liczbę. Np. liczba 467 to 4*100+6*10+7....
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....
34 podziel przez 10 a zostanie Ci 3. Reszta z dzielenia chyba funkcja Mod da Ci 4.
Można też to robić metodą wielokrotnego odejmowania: X - liczba wejściowa typu integer (zakładamy, że z zakresu 0-9999) Sub Int2Bcd(X AS INTEGER) Local X1 AS INTEGER ' zmienne typu BYTE globalna zadeklarowane w programie głównym CT=0 ' Cyfra tysięcy CS=0 ' Cyfra setek CD=0 ' Cyfra dziesiątej CJ=0 ' Cyfra jednostek IF X=0 THEN RETURN...
Mały przykład: Dim Liczba As String * 5 , Cyfra As String * 1 Dim Pierwsza As Byte , Druga As Byte , Trzecia As Byte , Czwarta As Byte ... Liczba = "21.58" Cyfra = Mid(liczba , 1 , 1) Pierwsza = Val(cyfra) Cyfra = Mid(liczba , 2 , 1) Druga = Val(cyfra) Cyfra = Mid(liczba , 4 , 1) Trzecia = Val(cyfra)...
Bascom wiecznie żywy! Widziałem ogłoszenie "profesjonalnej" firmy, wymaganiem była znajomość BASCOM :-) Wracając do tematu, zera na "piechotę", można wygasić na wiele sposobów. Dla małych liczb, a z takimi mamy tu do czynienia można dać warunki if [syntax=vbnet] if( liczba < 10 ) .... else if( liczba < 100 ) .... else if( liczba < 1000 ) .......
waitms zdaje się korzysta właśnie z tego timera więc dlatego może masz ten problem. Spróbuj sobie wrzucić obsługę wyświetlacza w timer1 i wtedy waitms będzie może działał dobrze pozdrówka Robię to na Attiny 26L, wg pdfa on ma dwa timery. Być może ten drugi jest jakiś specjalny, póki co w programie po prostu pozmieniałem "timer0" na "timer1" i niestety...
Witam Chciałbym z liczby np. 34 Uzyskać dziesiątki i jedności Robię sobie coś takiego: Dim A As Byte , B As Byte , Wart As byte Wart = 34 Wart = Makebcd(wart) A = Wart And &B00001111 Shift Wart , Right , 4 B = Wart I w zmiennej A mam jedności a w zmiennej B mam setki. Chciałem sobie teraz zrobić tak z liczbami większymi od 99(liczby 3 cyfrowe)...
Witam, Aktualnie programuję robota samojezdnego w Bascom'ie, i doszedłem do momentu, w którym mając 3 zmienne typu Byte (Var1, Var2 i Var3), muszę znaleźć "środkową" liczbę... Chodzi mi o to, że np. mając liczby: 86, 42, 230, Bascom na końcu, w zmiennej Var4, poda mi "środkową" liczbę z tych trzech, czyli w tym wypadku 86... Aktualnie uczę się programowania...
Witam Potrzebuję zaokrąglić liczbę zmiennoprzecinkową do liczby całkowitej (do późniejszego wyświetlenia na wietlaczu LED (rozbijanie liczby na pojedyncze cyfry działa poprawnie). Do tego celu wykorzystałem funkcję Round. Zgodnie z instrukcją Bascoma należy zrobić to tak: [syntax=vbnet] dim A as Long, B as Long A=Round(B) [/syntax] Rozumiem, że gdyby...
Witam Mam pytanie wysyłam przez RS232 daną typu np. 255$0D lub 0$0D itd.... chodzi mi o to by , po odebraniu w BASCOM-ie ten string widzieć w formie zmiennej o wartości 255 , a nie jaki trzy pojedyncze znaki ASCI wysyłam 255$0D odbieram 2 , 5 , 5 , $0D Jak to ułożyć w 255 i zrobić z tego LICZBĘ 255 "znienną" by ją pobrać ? Proszę o Waszą pomoc 'Przykład...
Witam wszystkich. Mam pytanie do bascomowców a może nie tylko. Chodzi o to w jaki możliwie najprostszy sposób wpisać do zmiennej wartość wprowadzaną z klawiatury numerycznej. Chodzi o to aby można było wprowadzić do zmiennej w programie wartość z przedziału np.0-9999, tak aby wpisując cyfry po kolei np.1,2,3 zmienna przyjmuje wartość 123 itd. Jesli...
Witam Szanownych Kolegow... Czy posiada ktos moze opracowana procedure dodawania liczb calkowitych (wprowadzanych z klawiatury) w Bascom? Liczby sa 2 cyfrowe. Poczatkowa liczba jest zero. jesli mam operacje dodawania, wynik jest zwiekszany i zapamietany, podobnie z odejmowaniem... Bardzo prosze o pomoc.
Witam. Krótko: mam zmienną string*3. Przykładowa wartość tej zmiennej to 2.7 Muszę zamienić ją na Byte o wartości 27 oraz informację, czy zmienna jest mniejsza od 10. Oczywiście nie da się pomnożyć zmiennej string (razy 10)... Co z tym zrobić? Pozdrawiam.
Witam. Mam zapisaną liczbę binarną w postaci "String * 14" i próbuje ją zamienić na dec. Próbowałem komendą binval, ale niestety liczba wynikowa może przyjąć wartość max 255 czyli (bajt), a moje wartości będą w granicach 10000 do 14000(dec). Ma ktoś jakiś pomysł ? Pozdrawiam.
Witam! Mam tu taki kawałek kodu: Dim Tick_time As Single Dim Length As Single Dim Mps As Integer Dim Fps As Integer Dim Fff As Single Dim Tick_count As Integer Dim Czas As Single Tick_time = 0.000096 Czas = Tick_count * Tick_time Mps = Length / Czas Fff = Length / Czas Fff = Fff * 10 Fps = Fff / 3 Tick_count = 0 Cls Lcd Mps Lcd " m/s " Lowerline...
Witam Mam dwie zmienne np: a=25 b=5 i jak to zapisać w bascomie aby: c=25,5 potem zrobić coś takiego: d=(25,5-12,3)*10 już sam nie wiem jak to zrobić :( próbowałem z instrukcją const ale nie chciała działać i cały czas miałem błąd nr. 222 Pozdrawiam
Witam. Napisałem kawałek kodu do multipleksacji wyświetlaczy LED. Zrobiłem układ z wyświetlaczem LED TOF - 5462. Wspólna anoda 4 cyfry + 2 kropki pośrodku. Jestem początkującym programistą C dla AVR i sam nie mogę rozgryźć problemu. Wyświetlacz jest podłączony do atmegi następująco: PORTB to wszystkie 8 segmentów wyświetlacza (A do G i DP). PORTD 0b11110000...
Program wygląda dużo lepiej. I = 1wread(2) pobiera dwa bajty w których znajduje się temperatura. Polecam zajrzeć do karty katalogowej DS18B20 str.4. W I znajdzie się liczba 16 bitowa, gdzie pierwsze 4 bity to znak, następne 8 bitów to część przed przecinkiem, a cztery ostatnie to to co po przecinku. Liczby ujemne są w kodzie U2. S = I / 16 Powyższe...
Mundi - dobrze radzisz ale Antystatyk zrobił kompletny syf w przerwaniu i źle steruje wyświetlaczami. Twoja porada tu nie ma szans na prawidłowe zadziałanie. Antystatyk - Jak już widzisz, napisałeś to źle. Zobacz że wcześniej wspominałem o efekcie rozmazania na wyświetlaczach i napisałem w jakiej kolejności je sterować (bo już wielu początkujących na...
Dzieląc (w zasadzie to mnożąc bo mniej zajmuje pamięci niż dzielenie) przez odpowiednią wielokrotność 10 i odejmując. Na kartce sobie rozpisz co od czego odjąć i co przez co pomnożyć i będziesz wiedział co i jak. Musisz z liczby wydobyć jednosci,dziesiatki,setki,tysiace..itd.
Jak koniecznie ze stringu chcesz wyłuskać pojedyncze cyfry, to użyj "MID" znak = MID( zmienna_tekstowa , początek [, ilość znaków] ) Pozostaje skonwertować stringi do zmiennych przez "VAL". Naturalnie prościej zrobić jak pisał poprzednik.
2*10 + 3
przykład zmienna1=liczba.8 oznacza ze zmienna1 przyjmie wartość bitu osiem ( tu będzie 1) twojego słowa 101101100 licząc od prawej strony, liczenie zaczynamy od pozycji zero.
Cyfra(1) = liczba / 1000 'tysiące Cyfra(2) = liczba Mod 1000 Cyfra(2) = Cyfra(2) / 100 'setki Cyfra(3) = liczba Mod 100 Cyfra(3) = Cyfra(3) / 10 'dziesiątki Cyfra(4) = liczba Mod 10 'jedności to procedura dla 4 cyfrowej liczby można ja rozszerzyć na tej zasadzie do dowolnej ilości. Zawsze działa bezbłędnie
Witam ! Czy cyfry mają pojawiać się na jednym wyświetlaczu ? Czy czas (1sek) musi być dokładnie 1sekunda ? domyślam się że cyfry mają pojawiać się tak: 1 2 2 3 3 4 ?????
Nasza sztuczna inteligencja słusznie zauważyła możliwość przekręcania się zmiennej "Wyswietlacz" ale to nie to... Przyjrzałbym się $swstack = 8 czy nie zwiększyć np na 16. Kolejny trop to przeliczanie tutaj: [syntax=arduino] '************************* 'Rozbijanie Liczby Na Cyfry Cyfra_ok(1) = Liczba_ok / 100 Temp_ok = Liczba_ok Mod 100 Cyfra_ok(2) =...
Proszę bardzo oto one: Dim W1 As Long Dim W2 As byte Dim W3 As byte Dim W4 As byte Dim W5 As byte Dim W6 As byte Dim W7 As byte Dim W8 As byte Dim W9 As byte Dim W10 As byte Dim Ktorywysw As Byte Dim Wynik As Long Ale już wiem o co chodzi zmienna wynik jest zmienna long i takie same muszą być zmienne w1-w10.
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
Policzyłem dla AVCC, to jednak nieważne. Zobacz jak korzystać z symulatora w takich sytuacjach. Zmieniłem trochę Twój kod (miał też błąd w obsłudze przerwania bo zaraz pod Select case miałeś ustawianie portów bez żadnego Case. Przeniosłem więc tę linię powyżej Select Case) Wracając do symulatora to każdy ruch suwaka w symulatorze powoduje teraz printowanie...
W sumie można, lecz autor chciał mieć format byte, domyślam się że potrzebne to mu było do wyświetlania liczby na wyświetlaczach siedmiosegmentowych. Jeżeli tak, to Ciekawy jestem czy autor korzysta z lini Data i instrukcji lookup(), czy może z select case?
Nie ma tego w Helpie bo to nie jest żadna funkcja czy komenda. Po prostu to narysuje spacje na poprzednim texcie jeżeli przypadkowo napis by się skrócił. Bez tego po skróceniu napisu nowy napis będzie wyświetlony dobrze, ale na LCD pozostanie trochę starego napisu co da wrażenie wyświetlania większej liczby. Ale to jest sposób pośredni. Najlepiej użyć...
Tak ale zapisane binarnie. A to zupełnie co innego w tym przypadku. Jeśli chcesz zapis binarny to robisz binarny. A czy to będzie nkb czy bcd to już inna kwestia. W twoim kodzie jest wszystko ok. Kod jest kodem dziesiętnym w zapisie binarnym. Więc liczby drukowane są po "naszemu" używając cyfr. Jeśli chcesz BCD wydrukować w zapisie binarnym to najpierw...
Mid i val ;) Dim Liczba As String * 4 , Cyfra As String * 1 Dim pierwsza As Byte , druga As Byte , trzecia As Byte , czwarta As Byte liczba = 1234 Cyfra = Mid(liczba , 1 , 1) pierwsza= Val(cyfra) Cyfra = Mid(liczba , 2 , 1) druga = Val(cyfra) Cyfra = Mid(liczba , 3 , 1) trzecia = Val(cyfra) Cyfra = Mid(liczba...
mam pytanko : moglbys mnie troszeczke bardziej nakierowac.
[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...
Masz "strange hours" ;] ;] BCD polega na przedstawieniu liczby dwucyfrowej w bajcie, ale rozpatrując każdą cyfrę na oddzielnim nibblu (4 bitach). Dodatkowo, standardowy kod BCD definiuje, że na każdym z nibbli w bajcie nie może wystąpić liczba większa niż 9, tj. na bajcie opiszesz tylko maksymalnie 100 wartości (0..99): 47: 0100 0111(bcd) - 0010 1111(bin)...
Czy jest funkcja szukania samych cyfr z buforu rs232? To są odpowiedzi z modułu SIM800. Bazuję na czymś takim: If Pinc.3 = 0 Then Waitms 750 Print "AT+CCLK?" ; Chr(13) ; 'zapytanie o datę i czas Waitms 50 Date_str = Mid(odb_txt , 20 , 8) Time_str = Mid(odb_txt , 29 , 8) End If Ale coś się dzieje i nawet wyświetla litery z odpowiedzi modułu. Da się jakoś...
Nie, raczej chcialem zrozumieć po co w 2 miejscach podawac to samo skolo w deklaraji jest as int to po co ponownie podaje sie to w definiowaniu funkcji? Przy sub moglbym podac równie dobrze liczba2 as integer. A skoro definiowałem typ zmiennych ich nazwe w deklaracji sub to mógłbym już użyć sub sub_liczba_to_cyfra(liczba, ilosc_znakow)
Najprawdopodbniej w tej zmiennej coś jest jeszcze na końcu. Mogą być znaki niewidoczne, np CR lub /i LF. Spróbuj wyświetlić długość tego stringa (w Bascomie chyba funkcja Len) i wtedy bedziesz wiedział czy aby tam jest tylko liczba. Możesz spróbować też konwertować tego stringa po jednej cyfrze, a więc robisz pętlę w której wycinasz fragment stringa...
dzielenie całkowite + modulo. Przy dzieleniu przez 10 uzyskasz górną cyfrę, przy modulo 10 dolną.
Kolega potrzebuje po prostu wartości liczby w kodzie BCD jak pisał poprzednik i BCD, HEX i liczby dziesiętne pokrywają się w zakresie 0-9. W takim razie wystarczy wysłać 4 najmłodsze bity na wejście 7447 albo całą liczbę bo i tak podrt wyjściowy jest podłączony tylko to 4 końcówek 7447. Co do wartości powyżej 10 to zaproponowałbym aby użyć wejścia BI/RBO...
Z poziomu BASCOM-a też to działa . http://obrazki.elektroda.net/59_12213803... Log nie pokazuje, że pamięć EEPROM jest modyfikowana, ale zmiana w linii DATA ostatniej cyfry i rekompilacja programu skutkuje wyświetleniem innej liczby na wyświetlaczu podczas uruchomienia programu. Oczywiście na początku w programie znajduje się wymagane $EEPROMHEX.
NA "setki" "dziesiatki" i "jednosci" NIE WIEM JAK ZROBIC, zeby przy malych predkosciach (ponizej 10km/h) wartosc na wyswietlaczach byla zmieniana co 1 sekunde (4xtimer1) Dim Speed As Byte ' Prędkość Dim Tmp As Byte Dim I As Byte Dim Index As Byte Dim Mmv as Byte *** Rozbicie na 3 cyfry *** Dim Cyfry(3) As Byte Speed = 147 ' W Polsce to zakazane...
Dzięki, załatwiłem to tak: Sub Led_dec(byval Liczbaa As Word) Local Tempa_liczba As Word Tempa_liczba = Liczbaa Mod 10 Temp_liczba = Tempa_liczba Cyfra_poz Temp_liczba , 4 Liczbaa = Liczbaa / 10 Tempa_liczba = Liczbaa Mod 10 Temp_liczba = Tempa_liczba Cyfra_poz Temp_liczba , 3 Liczbaa = Liczbaa / 10 Tempa_liczba = Liczbaa Mod 10 Temp_liczba...
Dokładnie taki sposób prezentacji czasu wykorzystałem jakiś czas temu tutaj: http://www.elektroda.pl/rtvforum/topic22... Tyle, że to bascom...
Łap bo jak zaczniesz z tym Multimaster to się nigdy z tego nie wygrzebiesz a odkrywasz tu koło na nowo :D Po pierwsze nie zauważyłem wcześniej, że już skonfigurowałeś Serial in 0. Błędem natomiast jest jest używanie Serial out 0 a potem zamiast to wrzucić do bufora to wycinasz po jednej literce ze stringa i nadajesz pojedynczo... Po prostu napisz Print...
Witam Na atmedze obsługuje klawiaturę 4x4. Używam getkbd oraz look up. Działa ok. Natomiast zablokowałem się myślowe na problemie wpisania liczby np 3 cyfrowej. Wiem jak policzyć ta liczbę itp. Nie mogę wymysłem algorytmu żeby 3 kolejne naciśnięcia traktował jako składowe liczby. Naprowadzcie na jakiś działający algorytm. Może być taki ze po wpisaniu...
a to bardzo proste :) powiedzmy, że impulsy liczy couter0 (pojemność 8 bitów czyli 0...255) deklarujesz cztery zmienne bajtowe, każda odpowiada cyfrze na wyświetlaczu i robisz obliczenia: np. liczbę jednostek będzie się obliczało tak - cyfra4 = counter0 mod 10 potem liczba dziesiątek, to jest trudniejsze :) - cyfra3 = counter0 / 10 : cyfra3 = cyfra3...
Witam. .............. Program testowy ma działać tak, na początku na sekundę wyświetla 36 na wyświetlaczach (i to zawsze się dzieje), później ma liczyć od 00 do 99, i tak w kółko. Pozdrawiam Zmieniłem trochę twój code. -Nie testowany.... (tylko symulator)........ [code][syntax=basic4gl] ' Example for 2 digit LCD display (Common Anode) ' Anodes are...
witam. Jeśli chcesz użyć mniejszego czasu opóźnienia to podawaj go w postaci waitus,czas czas po waitus oznacza mikrosekundy(1-65535). Pozdrawiam Dodano po 3 Cyfra(1) = liczba / 1000 'tysiące Cyfra(2) = liczba Mod 1000 Cyfra(2) = Cyfra(2) / 100 'setki Cyfra(3) = liczba Mod 100 Cyfra(3) = Cyfra(3) / 10 'dziesiątki Cyfra(4) = liczba Mod 10 'jedności spróbuj...
Myślałem o czymś takim :) Dim Ax(7) As Byte , X As Byte , Pozycja As Byte Dim Suma As Long Config Debounce = 100 ' lub ... jak kto woli ;) Poz Alias P3.7 Zmien Alias P3.5 Star Alias P3.1 Pozycja = 1 Cls Do Locate 1 , 1 Lcd "wprowadz liczbe" ; Pozycja Locate 2 , 1 For X = 1 To 7 Lcd Ax(x); Next X Debounce Poz , 0 , Incrpozycja...
ok, tylko najpierw uporam się z przyciskami i nastawami :P Dodano po 28 $regfile = "m8def.dat" $crystal = 8000000 Config Portd = Output 'podłaczony wyświetlacz 'Config Pinb.0 = Output ' anoda 1 źle! nazwa pin służy do odczytu wartości 'Config Pinb.1 = Output 'anoda 2 źle! aby ustawić należy się posłużyć nazwą Portb.x 'Config Pinb.2 = Input...
Witam. Jeśli mam procedurę rozłożenia liczby 4 cyfrowej na poszczególne cyfry (po to aby je później wyświetlać na 4*led 7-segment) co odbywa się w systemie dziesiętnym: cyfra(1)=liczba/1000 cyfra(2)=liczba mod 1000 cyfra(2)=cyfra(2)/100 itd.... a później pobierana jest liczba z tabeli odpowiadająca kodowi danej cyfry zamienionej na kod 7-segment: cyfra_wysw=cyfra(L)...
Musisz po wykryciu wciśnięcia przycisku czekać w pustej pętli na jego puszczenie. ...uprzedzając pytanie "jak" wrzucam moją propozycję kodu, przejrzyj, przemyśl, dorzuć do swojego programu. [syntax=basic4gl]$regfile = "m32def.dat" $crystal = 8000000 Config Lcd = 16 * 4 Config Lcdpin = Pin , Db4 = Porta.4 , Db5 = Porta.5 , Db6 = Porta.6 , Db7 = Porta.7...
Witam. Wie ktoś jak rozdzielić liczbę np. 18.6 na poszczególne liczby tj 1 , 8 , 6. Liczba ta to temperatura odczytana z ds18b20. Pozdrawiam.
Mnożąc zmienną typu WORD przez stałą CONST wychodzi niedokładny wynik. Np: WORD = 200 x CONST = 0.0025 = SINGLE = 0.499999933. Dokładność obliczeń zmiennoprzecinkowych jest kwestią długości (i formy) reprezentacji liczb zmiennoprzecinkowych. Z oczywistych względów w ośmiobitowych procesorach z małą pamięcią reprezentacja FP nie może być zbyt długa...
Witam. Mam malutki problem z wyświetlaczem LED 3 cyfry 7 segmentów (bez kropki). Podczas obsługi wyświetlacz poprawnie wyświetla cyfry z danych. Krok wyświetlania jest co 100. Po osiągnięciu 1000 dokonuję zmiany trybu wyświetlania tak, że tysiące są widoczne na pierwszym LED zaś setki na trzecim. Problemem jest to, iż chciałbym by pomiędzy tysiącami...
:D Hura... działa... - Brak błędów Gdzie ten załącznik :| :?: :D :D :D Możesz mi pomóc z częścią programu, w której jest odczyt z DS18B20 :?: Byłbym bardzo wdzięczny :D Dodano po 48 Teraz jest tak $regfile = "2313def.dat" $crystal = 12000000 '-- konfiguracja zmiennch: 'potrebne do odczytu 1wire itd. Dim Liczba As Byte Dim Jednosci As Byte...
liczba cyfra cyfra liczba bascom liczba
hamulec kosiarka elektryczny timer attiny13 czujnik przód
patrol podciśnienie archer mr600
SEAT Alana – jak wywołać cyfry do wpisania kodu radia, kombinacje klawiszy, SAFE Piaggio Zip 4T 50 cm³ – ustawienie koła magnezowego do regulacji zaworów, znaki T/F, wartości luzów