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....
http://obrazki.elektroda.pl/8267947700_1... Ponad 20 lat temu jako amator hobbysta budowałem proste układy elektroniczne. Studia i styczność z informatyką spowodowały, że porzuciłem hobby pod nazwą "składanie elektroniki" na rzecz "składanie programów komputerowych". W bieżącym roku (2011) dzięki uprzejmości kolegi Jacka.M, który okazał...
No ale w takim razie powiniem zwracać wartości ułamkowe na najmłodszych bitach. A nie zwraca. Albo inaczej: Ty traktujesz te liczby jako całkowite a mimo to masz je tylko do 2047. Czyli to nie jest przetwornik 16-to bitowy. Ale uwaga. Po obliczeniu wartości, przepisuj wyniki ze zmiennej Integer do zmiennej typu Long. Inaczej jak offset ustawisz na przykład...
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...
Może Frac ?
Jednak liczylem na lepsza pamiec, rasowy asemblerowiec chyba powienien ja miec.Co do zmiany zdania to napisales, ze nic tu nie napisales o necie. Piszac tu zaponiales chyba co pisales 5 dni wczesniej, ze na necie sa takowe biblioteki. nie napisałem tutaj nic o tym, że coś jest na necie Tutaj, czyli tak jak się patrzysz na monitor i przewijasz ten temat...
Chyba jednak nie ta instrukcja. Dzięki formatowi mogę uzyskać to że nie będzie przesuwało napisu Cool1 = Cool * 0.1953125 Cool2 = Fusing(cool1 , "#.#") Cool2 = Format(cool2 , " ") Tak masz rację, na symulatorze nie działa. Przy aliasach chyba jest błąd, dwa razy przypisy do tych samych pinów. [syntax=basic4gl]Ac Alias Pinb.0 Ss Alias Pind.7 Sg Alias...
tak jak pisał kolega wyżej 34/10=3 (pod warunkiem deklaracji jako liczba całkowita) 34 mod 10=4
Dobrze jest pisać jaka wersja Bascom bo czasem rozmowa jest bezcelowa jak ktoś używa ver 1.1 coś tam spolszczonej. Funkcja Round zaokrągla do najbliższej wartości czyli z 2,4 zrobi 2 a z 2,6 zrobi 3 Jeśli chcesz zwykłą zmienną to wystarczy przepisać wartość z Single i program zrobi automatyczne rzutowanie i obetnie to co po przecinku. Kwestia potrzeb...
Witam "integer" nie jest zmienną tekstową. Integer przyjmuje watrtość liczby całkowitej w zakresie od- 32768 do +32767 Integer nie zapisuje ułamków.
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.
Dokładnie tak jak mówi Fredy - kiedyś w jednym z projektów na Atmega8 miałem już praktycznie całą pamięć zajętą i po przejściu tylko na liczby całkowite zyskałem ponad 0,5kb
To może koledzy mają jakiś inny sposób na zamianę liczby z postaci zmiennoprzecinkowej w całkowitą? No to w końcu chcesz mieć liczbę całkowitą w zmiennej zmiennoprzecinkowej czy liczbę całkowitą w zmiennej całkowitej? Jak to drugie, no to Round: Dim Co2_w As Single Dim Co2_int As Long ... Co2_int = Round(co2_w) Niezgodnie z Helpem BASCOMa,...
Nie do końca tak jak myślisz . Jeżeli liczba ma mieć postać xx,x to zamiast np. 12,5 * 3 = 37,5 do obliczeń biorę liczby 125 i 3 . Wynik 125*3 = 375 Jeżeli w programie mam ten wynik porównać z liczbą 35,0 to porównuje z 350 ( napisz program operujący na liczbach zmiennoprzecinkowych a potem na całkowitych i porównaj rozmiar i szybkość działania , wykonując...
A np. logiczne zero w NECu to 560us wysoki i 560us niski. Żeby mieć liczbę całkowitą, to muszę użyć 10us. Czemu nie można ustawić przerwania od razu co 560µs?
Namoje szczęście mnożenie ma być przez liczby całkowite Ale mnożenie przez liczby całkowite też będzie z błędem. Nie podaję częstotliwości i innych szczegółów- na tym etapie jest to nie istotne. To akurat jest bardzo istotne. Do wysokich częstotliwości trzeba inaczej podejść. Podaj chociaż bardzo przybliżony zakres. I powiedz czy wymagana jest stuprocentowa...
Mea culpa zapomniałem że mega8 ma wewnętrznie podciągnięte AVCC do VCC. Dodano po 4 A jak oblicza się to 0.0048? 5/1024=0.0048. Więc 1024/5= 204.8 z tym że operujemy na liczbach całkowitych więc 205.
Bash zna tylko liczby całkowite. Można wykorzystać bc, na przykład tak (porównanie do 1.23): [syntax=bash][ $(echo "$(exec 3</dev/ttyAMA0 && echo "S" >/dev/ttyAMA0 && head -1 <&3 ; exec 3<&-)" " < 1.23" | bc) = 1 ] && echo prawda || echo fałsz[/syntax] Ale to wyglądałoby lepiej jako skrypt, a nie jedna...
Łopatologicznie to by było tak... Masz zmienną o nazwie np. LICZBA=123 i chcesz z niej wyodrębnić setki, dziesiątki i jedności... Musisz stworzyć nowe zmienne typu całkowitego, np. SETKI=LICZBA/100 --> (123/100 = 1,23 zmienna typu całkowitego utnie te 23 po przecinku i zostanie 1 --> SETKI=1) DZIESIĄTKI=(LICZBA/10)-(SETKI*10) --> (123/10=12 --> 12-1*10=2...
A jeszcze mam takie pytanko o zaokrąglenia ponieważ funkcja ROUND nie do końca prawidlowo działa. Powidzmy otrzymuję wynik liczbowy z przetwornika ADC, dzielę go przez powiedzmy 3 i mnożę przez 100. Liczba po przeliczeniu to powiedzmy 325.4286. Jeśli zastosuję na tej liczbie funkcje ROUND mój wynik to 325 .0 Nie mam pojęcia jak się pozbyć tej kropki...
więc kanał możesz otworzyć tak: Open "COM1:" for RANDOM as #1 Szybkość ustawiasz za pomocą polecenia BAUD lub $BAUD na początku programu jeśli nie masz zamiaru tego zmieniać w programie Liczba 123,45 nie jest liczbą typu integer tylko single. Liczby typu integer są to liczby całkowite. przykład nadajnik: Dim a as integer Dim al as byte...
Ja bym zrobił to tak mam zmienną "a" typu single np potem dziele ją przez 10 a = a / 10 potem przepisuje ją do zmiennej typu np integer np "b" , ktora to automatycznie odcina, zostawia mi tylko liczby całkowite a potem znów mogę ją przepisać do a lub innej a = b zienną typu single można by potraktować tylko jako pomocniczą do obliczeń ale są zapewne...
Czyli masz już w systemie przerwania zgłaszane ze stałą częstotliwością, zapewne na poziomie przynajmniej kilkuset Hz. Oznaczamy tę częstotliwość jako f. Mamy zmienną a - długą i całkowitą. Inicjujemy ją na 0. W każdym przerwaniu timera: - Dodajesz do tej zmiennej liczbę kroków na 10 s (czyli od 1 do 99) - Jeśli wartość tej zmiennej przekroczy 10*f,...
Po prostu wyobraź sobie, że liczysz na liczbach całkowitych, a jednostką jest jedna dziesiąta, czyli jedynkę zapisujesz jako 10, a półtora - jako 15.
Bascoma nie znam, ale jeżeli będziesz wydzielał do zmiennych całkowitych to powinny ci się poprawnie wydzielić poszczególne wartości.
Więc tak potrzebuje wyświetlić liczbę w formacie x.x. I nie wiem jak to zrobić próbowałem tak iż daną liczbę mnożyłem razy dziesięć zaokrąglałem do liczby całkowitej funkcją round a następnie robiłem dzieliłem na dziesięć ale na wyświetlaczu lcd i tak pojawiało mi się kupę liczb po przecinku w formacie x.x00000001 lub podobne x.x999999991. Jak to zrobić...
A bo bascom to taki kaszaniasty trochę jest jeżeli chodzi o wydajność i dzielenie za pomocą '/' wykonuje jako zmiennoprzecinkowe, czyli obie liczby na zmiennoprzecinkowe zamienia, dzili i wynik zamienia na format docelowej wartośc (i tu chyba jest coś skopane). Natomiast dzielenie za pomocą '\' to dzielenie na liczbach całkowitych, o wiele szybsze.
dzielenie całkowite + modulo. Przy dzieleniu przez 10 uzyskasz górną cyfrę, przy modulo 10 dolną.
O ile dobrze pamiętam bascom na 2 rodzaje operacji dzielenia jedno w wyniku daje liczbę całkowita 2 liczbę rzeczywistą. Poza tym wykorzystanie dzielenia to przesada, lepiej i szybciej jest wykonać 4-krotne przesunięcie w prawo, które jest równoważne podzieleniu przez 16. AVR nie ma instrukcji dzielenia wobec tego wykorzystujesz skomplikowany algorytm....
Doszedłem do ładu z tym, cała funkcja jest napisana prawidłowo i skrajne zakresy zawsze powinne się pokrywać niezależnie od obliczeń na liczbach całkowitych. Błąd był jedynie w zapisie złych zmienny do eepromu...
Dzięki za odpowiedź ale nim wpisałem pytanie na Elektrodę to sporo męczyłem się z tym (przesuwanie przecinka, mnożenie, dzielenie) ale niestety bez rezultatów. W bascomAVR jest polecenie "Round" ale ono zaokrągla wynik do liczby całkowitej i tym samym odpada. Może jest jeszcze jakieś polecenie coś w rodzaju formatowania wyniku, którego jeszcze nie znam/znalazłem...
Dzięki za podpowiedzi teraz wiem że double jest liczbą zmiennoprzecinkową i występuje jako liczba dodatnia jak i ujemna. Teraz zostaje tylko przeliczanie na liczbę ........... a to mi się wydaje jak na razie nie tak proste. To znaczy że nie wiem jak się za tą double zabrać. A może na początek bym się musiał nauczyć jak zamienić liczbę Integer (2bajty)...
Działasz na liczbach całkowitych tylko. Pisałem, że sekundy co 2 tylko taka dokładność. Zmienna typu word.
Wszystko się da zastąpić liczbami całkowitymi i zawsze, pamiętaj o tym:) Co do przeliczenia napięcie -> ciśnienie -> patrz datasheet a pewno to tam napisali...
Witam Mam liczbę integer 47 którą zamieniam na single i dzielę przez 10 , wynik to 4.69999806 . I teraz w jaki sposób uzyskać dwie liczby integer całkowitą czyli 4 i ułamkową po zaokrągleniu czyli 7 ?
Tych ułamków, które tak naprawdę są liczbą całkowitą, przedstawianą przy pomocy zmiennej U. Sądziłem, że komentarze obecne w programie wystarczą do zrozumienia zastosowania konkretnych zmiennych.
Więc pytanie zasadnicze. Jak zaokrąglić otrzymany wynik zmiennoprzecinkowy w bascomie AVR? Wykorzystywanie liczb zmiennoprzecinkowych do odczytu temperatury z DS18B20 jest lekko mówiąc mało rozsądne, zwłaszcza że "po przecinku" może być tylko 16 różnych wartości. Takie rzeczy to się zaokrągla na etapie pisania programu, który potem operuje wyłącznie...
To sobie zapisuj w postaci całkowitej i pamiętaj ile miejsc po przecinku dla wszyskich liczb jest przesunięcie, a resztę zaokrąglij.
Zwykle bardzo łatwo jest zastąpić operacje na liczbach zmiennoprzecinkowych, operacjami na liczbach całkowitych. U ciebie w kodzie masz taki kwiatek: Pomoc3 = Cykl / Y Prc = Pomoc3 * 100 Czyli najpierw liczysz wartość która u ciebie jest ułamkiem, a póżniej praktycznie zamieniasz ją na liczbę całkowitą. A wystarczy zamienić kolejność i operować na liczbach...
Działaj na zmiennych całkowitych 1000 razy większych niż liczby które chcesz wpisywać. A na koniec wynik przepisz do zmiennej Single i podziel przez 1000.
Stosuj zasadę 2 jednostki = 1 stopień, tak jak ma to miejsce w np. DS1820. Temeratura dzielona przez 2 daje rzeczywistą wartość, a reszta równa jeden oznacza wtedy połówkę. Dzięki temu wszystko zapisuje się na liczbach całkowitych, co oszczędza pamięć.
Powiedzmy, że mam zmienną N, która może przyjmować wartości całkowite z przedziału od 1 do 20. Chciałbym żeby dla niektórych (rozmieszczonych przypadkowo) wartości wykonało się jedno polecenie a dla pozostałych drugie. Myślałem o instrukcji "Select Case" ale czy da się to zrobić w uproszczony sposób, czyli do jednego "Case" wstawiamy pierwszą grupę...
Witajcie, czy istnieje możliwość zapisania dużej liczby całkowitej (powyżej 255) w pamięci eeprom procesora M32? Najlepiej aby dało się ją zapisać do konkretnych komórek pamięci - by nie nadpisać przypadkiem innych. Jeśli tak, to w jaki sposób? Druga sprawa... chciałbym zwiększyć licznik o jeden po każdym pełnym wykonaniu programu (nie w pętli). Niestety...
Pod warunkiem, że wartość nie przekroczy 255. Podział na bajty składowe singla w pamięci masz przedstawiony! Część całkowita? Funkcja INT() Przeznaczenie: Zwraca całkowitą cześć podanej liczby. Składnia: zmienna = INT( wartość ) gdzie: zmiennadowolna zmienna, do której wpisana będzie całkowita część podanej liczby, wartośćliczba której całkowita część...
Po pierwsze nawet jak by Ci się to skompilowało to wynik działania A = 1 / Timer1 prawie zawsze będzie równy 0. Więc późniejsze mnożenie go przez 60 nic nie zmieni. Zrób: A = 60 / Timer1 A ten błąd to jest w linii B = Int(a) ? Jak tak to pewnie Int nie przyjmuje innych parametrów niż typu Single. Po co wyciągać część całkowitą z liczby całkowitej?...
Jak użyć znaków specjalnych LCD z tej dokumentacji Poszukać informacji o sposobie zapisu liczb naturalnych całkowitych w postaci dwójkowej (binarnie). Poszukać informacji o sposobie kodowania znaków wg standardu ASCII. Otworzyć helpa i poszukać informacji o funkcjach manipulujących na tekstach i znakach, a także podstawy języka.
Witam, mam problem ze zrozumieniem obsługi transmisji 1-wire w Bascom'ie. Chciałbym obsłużyć jeden układ DS18B20 przez mikrokontroler ATMEGA8. Zależy mi na programie odczytującym wartość temperatury i zapisaniu tej wartości w postaci liczby dziesiętnej jako zmienna. Jeżli ktoś ma chwilę czasu to bardzo proszę o umieszczeniu kompletnego kodu, wtedy po...
(1200-2*60)/300=3 (zapomniałem napisać, że dzieli się do liczby całkowitej - myślałem, że to oczywiste; dopiszę, że pierwsze dodawanie 1 po dzieleniu można pominąć, jeśli podzieli się bez reszty); (1200-2*60)/4=270 (mm) i to jest odległość punktów, a ich ilość to 4+1=5. (1250-2*60)/300=3, (1250-2*60)/4=282.5 (mm), nadal 5 punktów.
Najprościej zrobić to tak: wyliczasz napięcie z proporcji, ale nie do 20 tylko do 2000. Następnie dzielisz to przez 100 a wynik zapisujesz do liczby całkowitej - masz to co przed przecinkiem. Potem mnożysz to przez 100 i odejmujesz od pierwotnego napięcia - masz to co po przecinku. Wyświetlasz tak jak napisałeś. LCD przed_przecinkiem;",";po_przecinku;
Ale - dla stringu "84.2" otrzymuję wartość zmiennej 84.199996946 Niestety rozdzielczość zmiennych typu Single jest skończona i nie można w nich zapisać każdej liczby zmiennoprzecinkowej. Jak sądzę, jest to problem konwersji do single - czy jest jakiś sposób, aby otrzymać tą wartość dokładnie taką jak w stringu ? Jeśli masz dużo pamięci RAM to zastosuj...
50+25+12+6=93 więc powinno to działać, WIEM: Cała liczba jest zapisana w kodzie U2 więc tak jak napisałeś wcześniej trzeba zanegować i dodać jedynke ALE do całej liczby 16bitowej. Wtedy będzie przeniesienie między częścią ułamkową a całkowitą i zamiast 20,0 będzie 21,0.
Albo jak radzi mirekk - tym bardziej że m8 kosztuje około 8zł Albo wywal instrukcje STR i FORMAT. Formatowanie wyniku zrób jako dzielenie zwykłe (liczba całkowita) i po kropce MOD (pozostałość z dzielenia). Ewentualnie napisz wszystko jako wstawka assemblerowa, ja tak zawsze robiłem i było ok :-)
A w jaki sposób wysyłasz tą liczbę? Czyżbyś wysyłał ją bezpośrednio jako np 9832? Według mnie jest to liczba która zajmie dwa bajty, wiec musisz ją rozbić i wysłać osobno do dwóch komórek. Najlepiej chyba będzie do jednej komórki wysłać całkowitą część dzielenia tej liczby przez 256, a do drugiej resztę z tego dzielenia. Pozdrawiam Dawid.
Mam jeszcze jeden problem, mianowicie: Mam zmienną typu single U i przypisuje jej liczbę 2.56 chcąc ją zwiększać o 0.01 robię coś takiego U = U + 0.01 a potem wyświetlam to na LCD. Lecz pojawia mi się http://obrazki.elektroda.net/98_12637529... Wiem, że resztę cyfr mógł bym zamaskować na przykład poprzez instrukcje fusing. Lecz jeżeli dalej chcę...
wait 1us pewnie jest dokladne, ale w petli masz przeciez nie tylko ta instrukcje, wiec calkowity czas wykonania petli jest dluzszy. Pomiar spokojnie mozesz zrobic na liczbach calkowitych, przeciez zapis: X=X/10000 X= 1/X jest rowny x=10000/x, ulamkow miec nie bedziesz bo przeciez kolejne liczby czasu to liczby calkowite.
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"...
Typy się kłaniają, typy danych, jeśli więc zrobisz tak: dim droga as long dim droga1 as single droga1 = droga/12.54 to powinno zadziałać ;) przecież dzielisz nie przez liczbę całkowitą tylko zmiennoprzecinkową, a więc w wyniku też masz dostać zmiennoprzecinkową - dlatego trza wybrać typ single w Bascomie. Ale to z kolei spowoduje ci straszny rozrost...
" Atmegi mają zaimplementowanie tzw. mnożenie cząstkowe, dla amatorów asm jest nota aplikacyjna AVR201 . Mnożenie liczb ułamkowych i całkowitych niczym się nie różni, jeżeli przyjmiemy stałą ilość bitów na część ułamkową.
Witam goreckidiy. Twój projekt spełnia funkcę, którą chciałeś osiągnąć. Ale jest ale :) Niezwykłe zbiegi okoliczności sprawiły, że to działa (mam nadzieję) prawidłowo. Spójrz na zdjęcie. http://obrazki.elektroda.pl/9690955600_1... W programie masz coś takiego:[syntax=text]'*********WAŻNE!!!*... data1 = data_in - 1048574 'tyle suwmiarka...
Wynik który uzyskujesz jest liczbą niecałkowitą bo obliczenia tak karkołomne mają jakąś tam dokładność. Spróbuj zaokrąglić ją do całkowitej i dopiero wtedy wyślij ją na LCD. Dawno nie pisałem w BAscomie, ale czy nie wysyłasz dwóch liczb w to samo miejsce? Czy nie pomyliłeś w instrukcji locate kolumny z wierszem? Spróbuj dać pomiędzy dwoma wysyłkami...
ale dla mnie wygląda podejrzanie wyrównywanie do całkowitej wyniku sin() i cos(). Tu wzorowałem się na kodzie ze strony http://www.dspguide.com/graphics/T_12_4.... . Tam wynik także jest zamieniany na wartość całkowitą poleceniem CINT - ogólnie obliczenia są prowadzone z użyciem zmiennych całkowitych. Chyba nie - nie wiem, co to za dialekt Basica,...
Co do konfiguracji portu C hm mam najnowszego bascoma i nie ma żadnych błędów po kompilacji i robot zaprogramowany tylko z czujnikiem lini lub tylko z czujnikiem wykrycia przeciwnika działają poprawnie. Co do zmiennej Word to jest to liczba całkowita bez znaku, od 0 do 65535, ok zgodzę sie bo zmienna Volt nie będzie całkowita i jest zaokrąglana do 0...
Dim T1 As Single Dim T2 As Single A co to? "Przesunięcia bitowe" na liczbach zmiennoprzecinkowych? Zamień single na int i powinno śmigać. Procedury obliczeńna liczbach zmiennoprzecinkowych pożerają mnóstwo miejsca. Dzielenie liczb całkowitych w bascomie AVR robi się za pomocą \, a nie /, ot taka ciekawostka. Użycie / powoduje wykonanie tego dzielenia...
Witajcie. Piszę mój pierwszy program użytkowy. Nakreślę co ma mniej więcej robić: co dobę losować nową liczbę ze zbioru liczb całkowitych mniejszych lub równych 1 i większych lub równych 30. Liczby nie mają się powtarzać przez 30 losowań (każda musi być wykorzystana) i potem od nowa. O ile poradzę sobie z tymi opóźnieniami czasowymi (bo z tego co widzę...
Masz ATmega8, czyli masz ADC i masz timer połączony z pinami I/O, czyli za pomocą timera możesz generować przebiegi na wyjściu. Rzecz wręcz banalna. Za pomocą ADC wykonujesz pomiar napięcia. przeliczasz go na okres, albo odrazu częstotliwość, nie wiem jak to w bascomie wyglada. W każdym razie częsottliwość ustala się przez zapisanie w odpowiednim rejestrze...
Chyba w podobnym temacie umieściłem nawet film i Ty też... Musisz kiedyś zrozumieć dlaczego Single nazywa się Single a Double double :D Nie dość tego AVR nie wspierają sprżetowo pracy na liczbach "z przecinkiem" i lepiej jest i szybciej rozwiązywać takie sprawy na liczbach całkowitych. Są o tym temacie całe wywody i nie ma co się powtarzać bo pewnie...
Atmega8 czy atmega8L, ta pierwsza ma zakres napięć od 4,5-5,5V częstotliwość pracy 0-16MHz, ta druga 2,7-5,5V częstotliwość pracy 0-8MHz, pierwsza strona noty. Jeśli używasz wersji zwykłej bez L to masz za małe napięcie. Jeśli chcesz sprawdzić prędkość procka to możesz skonfigurować jakiś timer to pracy w trybie PWM i porównać częstotliwość na wyjściu...
Oto fragment polskiej wersji helpa do bascoma (rozdział Podstawy języka BASCOM BASIC): Komplikacje związane z liczbami zmiennoprzecinkowymi Każda liczba całkowita może zostać zapisana w notacji binarnej. Liczba zmiennoprzecinkowa już nie. Faktycznie, każda liczba niewymierna o podstawie 10, będzie także niewymierna w każdym systemie o podstawie mniejszej...
Jak napsać program? A zajrzyj do HELPA bascoma i zobacz jak sie konfiguruje wyjscia PWM (config timerx = pwm i te bzdety, x-liczba całkowita:) ) Nie wiem ile ta twoja mega ma kanałów PWM a datasheeta sie nei chce mi szukać A jesli nie chcesz/nie lubisz/brzydzisz się/masz za mało* kanałów sprzętowych PWM, to sobie zrób programowy, _uzywajac_przycisku_szukaj_na_forum_elek...
http://upload.wikimedia.org/wikipedia/co... Wartość liczby zmiennoprzecinkowej jest obliczana wg wzoru http://upload.wikimedia.org/math/2/1/9/2... gdzie: * S (ang. sign) – znak liczby, 1 lub -1 * M (ang. mantissa) – znormalizowana mantysa, liczba...
wynik końcowy faktycznie za każdym razem jest inny. (at) emarcus możesz podpowiedzieć jak powinien wyglądać serwis int1? Popatrzyłem troche bliżej na twoj kod. Z jakiego powodu potrzebujesz otrzymać wynik ("Czas_2") z dokładnocią aż do 9 miejsc decimal? Jeżeli jeden z czynników iloczynu (rozdzielczość timera) jest liczbą wymierną z dokładnościa do...
jak chcesz do 1 miejsca po przecinku, to mnożysz liczbę zmiennoprzecinkową przez 10 (jak do dwóch miejsc, to przez 100, itd.) zamieniasz ją na człkowitą i masz dwie (no w sumie to trzy) drogi. 1. zamieniasz liczbę całkowitą na tekst, wyświetlasz wszystko oprócz ostatniej cyfry (ostatnich dwóch, trzech...) wyświetlasz kropkę i dopiero ostatnią (ostatnie)...
No zajrzałem do noty ale nadal zachodzę w głowę dlaczego używasz do tego zaraz tak kosmicznego nieporozumienia jak liczby zmiennoprzecinkowe w Bascomie albo w ogóle na AVR. Najlepiej zawsze od nich uciekać jak tylko się da - a można to często bardzo łatwo zrobić - tą ucieczkę ;) szczególnie w takich prostych przypadkach: masz tam przykładowy wzrór z...
szymtro, niestety efekt jest taki sam. na wejściu 1.124 efekt na LCD 1.10000002 Pozostaje chyba tylko formatowanie tekstu na wyświetlacz, ewentualnie sztuczne dodawanie dziesiątek do liczby całkowitej. PL
Witam, Ważna uwaga: typ long jest całkowity, nie ma części ułamkowej, trzeba użyć single lub double. Mała wskazówka z helpów (polski ubogi pełny po angielsku w programie) Pamięć ERAM. Większość procesorów serii AVR posiada wbudowaną pamięć EEPROM. Pamięć ta może przechowywać dane nawet po wyłączeniu zasilania. Jak podaje producent nawet do 10 lat. Pamięć...
To jeszcze ja wtrące swoje 3 grosze. Co do select case to nie polecam - mniej miejsca zajmują pojedyńcze warunki IF tylko trzeba wtedy dobrze przemyśleć aby nie wyskakiwały dwa naraz albo chociarz prawidłowa wartość była wtedy kiedy oczekujemy tego. Dodatkowo zauważyłem ze w Bascomie 8051 użycie podwójnego lub potrójnego warunku IF (if cos=1 or cos=2......
Witam Temat troszke starawy ale sie podpinam:) Tez kombinuję z roździelczością 0.1'C i troche mi nie wychodzi:) Dziwnie mi dziesiate czesci stopni wskazuje podaje ciąg: np. 23.1;23.2;23.3;23.4;23.5;23.6;23.8;23.12... itd dziwne bo nie ma liczby 0,7,9 tylko jakies 12 i 25 a do 6 idzie ok-dziwne to co po przecinku obliczam wzorem: dziesiatki=temp(7)-temp(6)...
Dziękuję ślicznie za szybką pomoc. Oba sposoby są świetne. W moim przypadku lepiej sprawdzi się dzielenie liczb całkowitych z operatorem [MOD], tak jak to podał Sp3ots. Bo otrzymuję gotowe dane do wyświetlaczy 7-seg jak i do LCD. Tak mi to wyszło - sprawdzone, działa - a nuż jakiś zielony jak ja wykorzysta. [syntax=vbnet]Dim F As Word ' pięciocyfrowa...
Czy to musi być assembler? Wbrew pozorom napisanie tego w języku wyższego poziomu może być znacznie prostsze, zwłaszcza dla początkującego :-) Osobiście uważam, że łatwiej jest się nauczyć podstaw C czy BASCOM'a na tyle ile się potrzebuje, niż nauczyć się pisać dobry i niezawodny kod w asemblerze. //Edit Poniżej, jak to by mogło wyglądać w C: //jakie...
http://obrazki.elektroda.pl/2534599000_1... Zegar + termometr DS18B20 - ATtiny 2313 - LED Wykonany na ATtiny 2313. Znane podobne zegary oparto na Atmega 8 i LCD. Program napisany w Bascom. Pracuje bez zarzutu. http://obrazki.elektroda.pl/9466031800_1... http://obrazki.elektroda.pl/4401807600_1... http://obrazki.elektroda.pl/5327081100_1...
Witam Mam problem z właściwym liczeniem i wyświetlaniem wyniku (LED 7-segm.). Liczy procent czasu włączenia urządzenia (licz_minuty_triaka) w stosunku do czasu działania (licz_minuta_stat). Standardowo, jeśli nie dochodzi inny warunek to urządzenie chodzi 3 min. co 2 godziny, zatem wynik powinien oscylować wokół 2,5%. Wynik ostateczny z bascoma - liczba...
Zawsze piszę programy tak aby zapełniały całą dostępną pamięć w procesorze (bo czemu mam nie korzystać z całej pamięci skoro za nią zapłaciłem). Dziwne podejście. A jak za jakiś czas poddasz kod optymalizacji, to będziesz wymyślał nowe funkcje by znów zapełnić pamięć? Tak tylko pytam, ogólnie fajna zabawka. Program próbuje zoptymalizować na maxa, potem...
czy będziesz miał temperatury ujemne? i co oznacza zmienna "Liczba" Liczba jest typu byte (0-255) jak ma być <0 ? odczyt temperatury: w kodzie ująłem zmienną znak dim znak as bit znak = 0 wartość dodatnia znak = 1 wartość ujemna znak = 0 'zakładam że wartość jest dodatnia 1wreset If Err = 0 Then 1wwrite &HCC 1wwrite &HBE Ds_1 = 1wread()...
Witam . Chciałem zrobic tester pomp opryskiwaczy . Chodzi o mierzenie wydajności pompy w litrach na minute a moje pytanie czy nie bedzie gubił impulsów podczas wykonywania przerwania . Pomiar co 1 sekundę a wydajność pomp od 40l do 260l / min Nie musisz obawiac się o gubienie impulsów z powodu wykonywania przerwań. Impulsy są zliczane przez Counter1,...
Hmm, to znaczy że bym musiał uruchomić drugi timer (8 bitowy). Z tego co pamiętam, to przy maksymalnym dzielniku wychodzi 1 albo 2 sekundy. I w momencie przepełnienia sprawdzać prędkość? Co do pokazywania zer to ogarnąłem wykrywając przepełnienie timera 3 i w tym momencie wyświetlanie zer. cóż wiem , że program pewnie wg Ciebie (z resztą wg mnie też)...
Panowie problemem z układem nRF24L01 było zmodyfikowanie kodu do BASCOM-a tak aby można było przesłać większą ilość danych. Jeden kolegów z tego forum o imieniu Tomasz zasugerował mi w którym miejscu trzeba zmienić kod. Jak się okazało był to pierwszy krok do osiągnięcia celu. Moja propozycja zmian, które pozwoliły przesłać następujące dane: 1. temperaturę...
Tego się tak nie robi. Bascom ma wbudowane funkcje do obliczania różnych wartości z dat i w drugą stronę. Całkowity czas z datą można zapisać w zmiennej typu Long. Tak samo deklarując po kolei Sec, Min, Hour, Day, Month i Year jako Byte można potem uzyskiwać różne potrzebne dane tam i z powrotem. W swoich programach wstawiam funkcję bo czas Lato/Zima...
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ć"...
http://obrazki.elektroda.net/67_12744374... Witam! Chciałbym dziś pokazać urządzenie, które powoli i z bólami tworzyłem ostatnimi czasy. Inspiracją do ruszenia z pracami były zbliżające się urodziny narzeczonej, której chciałem podarować coś nietypowego, a jednocześnie praktycznego. A że nie może być chyba nic bardziej praktycznego i przydatnego...
Doprowadziłem program do takiej postaci: ............ Wydaje mi się, że to wina tego, że jak przyjdzie przerwanie w czasie obsługi wyświetlacza to się coś kiełbasi. Przerwanie od przepełnienia stosuje po to, by móc mierzyć też dłuższe odcinki czasu, np w przekaźnikach czasowych. Jeszcze jedno pytanie. Dlaczego program z pierwszego postu nie działa?...
Przy odczycie takiego czyjnika możesz uzyskać max 99,9 , więc po co zmienna single. Po prostu dla wyniku np 22,5 stC wyliczasz liczbę 225 a później robisz: [syntax=basic4g] calkowite = wyliczonazmienna / 10 dziesietne = wyliczonazmienna mod 10 i pomiędzy wstawiasz kropkę na wyświetlaczu[/syntax]
http://obrazki.elektroda.pl/5924959500_1... Witam ponownie! Kilka dni temu chwaliłem się projektem "PALM v1.0 BETA Atmega128", a dziś chciałbym przedstawić komputerek do motoru lub roweru jaki zrealizowałem już jakiś czas temu na zamówienie. Urządzenie miało zastąpić oryginalne psujne, mechaniczne zegary. Funkcje i założenia: *Wyświetlanie...
Kursor jest zawsze na 1,1 i tylko piszesz LCD... Ale... W programie kiedy kręcisz enkoderem i coś ma sie zmienić to na końcu piszesz Call Odswiez_lcd a sub sam okresla co bedzie wyswietlał Użyłem zmennej refresh, jeśli 1 to ma wyświetlić, a to "home" mam ustawić tak jakby przed warunkami case, tak? Zrobiłem właśnie tak i teraz jest świetnie! Nic nie...
Przesyłam fragment kodu dla "paluch_gda" jedną cewką zapłonową na dwa obroty wału (pełny cykl pracy) na jednej cewce generowane są 4 takie "odcinki czasu" (iskra przeskakuje po raz na każdej ze świec), więc na 1 obrót wału przypadają 2 "odcinki czasu". Dzielimy więc wartość Nr (liczba "odcinków czasu" w 1 minucie) przez dwa i otrzymujemy prędkość obrotową...
Przepraszam za dłuższą nieobecność. Nie mając nic nowego (i mądrego) nie pisałem. Ale w międzyczasie polutowałem zestaw startowy, a ostatnio napisałem inny program, który umożliwia (w zamyśle) liczenie dokładniej częstotliwości dla "paczki" impulsów, tym razem około 500 Hz. Wiem, że to dosyć skomplikowany tok myślenia, pewnie można to zrobić prościej,...
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...
https://obrazki.elektroda.pl/4868547700_... Dzisiaj zrealizuję projekt na malutkim, ośmionóżkowym mikrokontrolerze PIC w obudowie DIP8 oferującym skromne 3.5kB pamięci Flash. Co więcej, do komunikacjami z peryferiami użyję tylko dwóch pinów - całość opierać się będzie o I2C. W oparciu o nie uruchomię kontroler wyświetlacza/klawiatury oraz...
http://obrazki.elektroda.pl/3633334100_1... Witam wszystkich Ostatnio byłem trochę zajęty ale teraz przedstawiam jedną z moich najnowszych konstrukcji Sterownik podświetlania sufitu to kolejny projekt, który może zostać wykorzystany jako element architektury światła w domu. Ponieważ w obecnych czasach bardzo ważny jest aspekt oszczędzania...
Moim zdaniem spowodowane jest to ograniczona dokladnoscia reprezentacji liczby zmiennoprzecinkowej (sposob obliczania i dlugosc bitowa mantysy liczby). Dosyc dobrze jest to opisane w wikipedii, np. http://pl.wikipedia.org/wiki/Liczba_zmie... Z tego samego powodu ja musialem stosowac liczby calkowite w obliczeniach. Przy zachowaniu odpowiednich...
moje pytanie odnosilo sie do Bascoma i pamieci typu 24cxx a typ danej to liczba calkowita typu long. Co do zapisu w kolejnosci to w jaki sposob mozna nastepnie rozkodowac taka dana jesli zapisze bajt po bajcie, a nastepnie odczytam w taki sposob to jak skleic te dane zeby otrzymac poczatkowa liczbe np drugi bajt ma postac 01110011 to odczyta to jako...
liczby całkowite reprezentująca liczby całkowite bascom liczby
słaby jakość tekst wydruk dewalt bateria technics znika dźwięk
zmywarki bosch siemens radio przenośne
Wymiana baterii w sterowniku ESAB Aristo U-8/2 Ustawienie podnoszenia ramienia w JVC QL-7