Coś w ten deseń chociaż żeby to przetłumaczyć toczka w toczkę to najlepiej by było użyć Config Base = 0. Wtedy tablice mogą się zaczynać od indeksu zero czyli można by wpisywać do Delays(0) - Delays(Steps-1) a tak tego nie masz. Tutaj może nawet nie jest potrzebny warunek If I > 1 bo to chyba w Arduino jest po to by nie było mnożenia I * 4 + 1 bo...
Podczepię się pod temat. Problem mam bardziej skomplikowany. Muszę zrobić tabele dla 2 zmiennych (2 wymiarowa), niestety bascom tego nie umożliwia. W jaki sposób mógłbym to obejść? Może coś w stylu kopiuj-wklej EEPROM? Macie jakieś propozycje?
(...) ' 5 Data 250 ' 6 Data 131 ' 7 Data 251 ' 8 Data 219 ' 9 Wstępna ocena dostępnych informacji W kodzie widzimy dwa liczniki (Liczba_ok i Liczba_nok) zadeklarowane jako zmienne typu Word, a także tablice na cyfry (Cyfra_ok i Cyfra_nok) jako typ Byte. Z punktu widzenia zakresu wartości samych liczników (od 0 do 999) nie powinno to powodować błędów...
Do sortowania użyj instrukcji Sort : [syntax=basic4gl]Dim A(3) As Byte ' trzy elementowa tablica A(1)= 86 A(2)= 42 A(3)= 230 Sort A(1) , 3 ' sortuj trzy elementy w tablicy zaczynając od A(1) Print A(2) ' wyświetl drugą wartość[/syntax]
Komendą "STR".
Witam, W programie zapisuje kilka zmiennych String w eepromie potrzebuje uzyskać z nich taką tablicę do po prawnej działania pętli for [syntax=basic4gl] Memory(1)="zmienna a zmienna b zmienna c" Memory(2)="zmienna a zmienna b zmienna c" Memory(3)="zmienna a zmienna b zmienna c" Memory(4)="zmienna a zmienna b zmienna c" Memory(5)="zmienna a zmienna b...
Ba, na chłopski rozum... Ale spróbujmy, możliwie krótko: Stałe to takie wielkości (liczby) zadeklarowane w programie, które nie będą zmieniać swej wartości przez cały czas działania programu. Dla przykładu może to być powiedzmy Pi = 3,14 lub jakaś inna własna wielkość. Zmienne lokalne - to takie zmienne, które wykorzystywane są tylko na czas realizacji...
chyba normalne, ze nieda sie dima zainicjowac, bo w tiny12 niema ramu a tablice zmiennych sa w ramie
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
dla opisu programu w pseudokodzie(nieznam bascoma.. wole asm itp..) przyjme że bity sterujące znajdują się w dolnych częściach zmiennych.. i zamiast a..h przyjme tablice stan[0] do stan[7] TMP = 0 pętla wykonywana od 0 do 7 ze skokiem o 1 przesuń tmp o jeden bit w lewo tmp = stan[numer wykonania pętli] koniec pętli w tmp jest skompresowany stan 8 bitów...
Przepuszczanie 3A przez pojedynczy styk goldpin to nie za dużo? Teraz to działa, ale z upływem czasu rezystancja styku wzrośnie i może się to zemścić. To przy zapalonych wszystkich LEDach. Zazwyczaj świeci się około 70% przy wyświetlaniu tekstu. Poza tym 3A to nie jest jakiś powalający prąd. Niestety, ale z forum DIY powoli robi się stragan. A widzisz...
Witam Kolegów i proszę o pomoc! Mimo napisania już kilku aplikacji w Bascomie, napotkałem problem, z którym się wcześniej nie zetknąłem i nie znalazłem nic na ten temat w sieci. Wykonałem czterokanałowy miernik napięcia, który będzie częścią pewnego urządzenia. Układ działa poprawnie, ale mam kłopot z zapamiętaniem wartości zmiennych tablicowych. Zadeklarowane...
Zatem nieswiadomie:-) zaczynam siegać kresu mozliwości BASCOM'a ;-) - Myslę, że jeszcze ten jeden temat zakończe w BASCOM. Ale koledzy narobiliscie mi "ochoty" na tego C;-) Przyznam , ze programista ze mnie jak z koziej d....., ale coś tam potrafie naskrobać. Generalnie jestem Hardware'owcem i BASCOM rozszerzył mi troche loty. Niestety w C nigdy nic...
Witam. Czy ktoś wie może czy taka sekwencja da pożądany skutek chodzi mi głównie o tablice np. if a() = b() then jakieś tam instrukcje end if Chciałem zapytać czy poprostu porówna wszystkie elementy tablicy bo jak tak wpisałem to niby błędu nie ma. czy raczej muszę to zrobić z dodatkową instrukcją for i tyle razy ile elementów ma tablica. Potrzebne...
Bez tablic jest ciężko cokolwiek programować a tutaj tablica to zaledwie 4 bajty. Ja nie znam wystarczająco składni bascoma - nie wiem jak się tworzy tablice - podejrzewam że DIM tablica(ilość_komórek) as byte (tak jest zwykle w Basicu). Więc u ciebie zamiast 4 zmiennych będziesz miał kolejne komórki tablicy np. zmienna1 - parametry(1) zmienna2 - parametry(2)...
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 chciałbym prosić o pomoc w korekcji programu napisanego w bascomie. Skonstruowałem tablice o rozdzielczości 8x80 pikseli na której są wyświetlane: zegar temperatura, imieniny. Chodzi mi o to żeby przystosować tablice do wyświetlania nazw przystanków tak jak jest to rozwiązane w komunikacji miejskiej. Chciałbym aby był do tego sterownik z wyświetlaczem...
Potrzebuję w Bascomie uśrednić wynik z pomiaru odległości (czas odbicia ultradźwięku od przeszkody). Myślałem, że samo uśrednienie wyniku pomoże, ale niestety nie. Muszę dodatkowo z 10 zebranych próbek odrzucić te, które są błędne. Wytłumaczę dokładniej: Mam tablicę [syntax=vbnet]Dim Probka(10) As Word[/syntax] Z tych 10 próbek wyliczam sobie średnia...
Mam mały problem z bascomem. Przymierzam się do budowy małego manipulatora i narazie chcę podejść do tego od strony programowania. Przeszperałem trochę internet i mam wzory do kinematyki odwrotnej: http://obrazki.elektroda.pl/7434369800_1... a1 i a1 to są długości ramion u mnie takie same więc mam po prostu a fi1 i fi2 to u mnie odpowiednio...
Witam. W Bascom-ie tworzę tablicę danych- np. Tablica(10). Dim Tablica(10) as byte Wpisuję do tablicy wartości: Tablica(0)=12 Tablica(1) = 24 Tablica(3) = 3 itd. Jednak w czasie kompilacji wyskakuje błąd- "Index out of range". Okazuje się, że błąd powoduje linijka Tablica(0)=12. Dlaczego do okienka 0 w Tablicy nie mogę...
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 kłopot ze skompilowaniem tego kodu w bascomie 2.0.8.1 W wersji bascoma 2.0.7.3, której do tej pory używałem kompilacja przechodzi pomyślnie ERROR: 380 Line: 43 Array<> Non Array mismatch Error sugeruje błąd z tablicą w funkcji Czy ktoś miał podobny problem?
:| Witam wszystkich. Mam taki problem bo bascom zle liczy ulamki (mniej wiecej wiem o co chodzi) np. w pewnym momencie zamiast 0.4 pokazuje0.399999999989 oczywiscie uzywam zmiennej single. czy da sie to jakos obejsc w prosty sposob czy bascom jest skazany na takie problemy? Bardzo prosze o pomoc.
Problem nieprawidłowego zaokrąglania liczb zmiennoprzecinkowych uprościłem i przedstawiam na poniższym przykładzie: $regfile = "m8def.dat" $crystal = 16000000 --------------------------- Dim Nr As Byte Dim Tau_s As Single Dim Tau_w As Word Cursor Off Noblink '.............ukrycie kursora na LCD Cls Do Restore Tab '...............ustawienie się na pierwszej...
Witam.mam taki male pytanko. NA poczatku zalaczam kawalek przykładowego kodu w C " int main(void) { DDRD=0xff; uint8_t seg Dodano po 13 ups.. to juz zsotalo jedno tylko pytanko..o skok do drugiego elementu tablicy. co do resetu to : Reset zeruje tylko zmienna globalna a zmienna lokalna pozostaje nie ruszona :) Ze tez tego nie moglem sie nigdzie doczytac...
Witam. Nie mam już pomysłu, może ktoś z was coś podsunie. Problem leży prawdopodobnie w złym zarządzaniu pamięcią. Program to miernik energii elektrycznej. Może zamiast kodu przedstawie schemat blokowy. Cały program znajduje się w pętli, nie używam zadnych gosubów i innych podprogramów. Jest tylko 1 przerwanie co sek i tylko zmiana 1 zmiennej. 1. Program...
Witam Robisz tak : Deklarujesz macierz czy tam tablice zwał jak zwał o x zmiennych byte. 1wreset W = 1wirecount() Adres(1) = 1wsearchfirst() Adres(9) = 1wsearchnext() 1wreset itd itd. Masz w tej tablicy adresy kilku czujników a później: 1wreset 1wwrite &H55 ' Będę wysyłał adres 1wwrite Adres(1) , 8 ' Wysyłam...
1. jakie masz źródło napięcia podawanego na wej przetwornika? jeżeli jest to w potencjometr sprawdź odczyty bezpośrednie powinny być z zakresu 1....1023. Zastosuj potencjometr wieloobrotowy będziesz mógł dokładnie sprawdzić odczyty i ich stabilność . Gdy już będziesz miał stabilny odczyt to mierząc napięcie w zakresie 0 .. 5 V napięcie U = 5000 * wartość_odczytana...
Pomysł wydaje się nienajgorszy, przeciwnie, raczej typowy w takim przypadku. Jeżeli w sumulatorze działa, tzn., że algorytm jest OK. Nie napisałeś w czym dokładnie objawia się błędne funkcjonowanie programu w rzeczywistym układzie, więc trudno coś jednoznacznie stwierdzić. Najprawdopodobniej problem wynika z jakichś różnic pomiędzy idealnym środowiskiem...
Nadeszła chyba pora zapoznać się , z Bascom-owym helpem :D Dim Adres As Word Dim Pozycja As Byte Do For Pozycja = 0 To 5 Adres = Lookup(pozycja , Tablica) Next Loop Tablica: Data 1% , 10% , 100% , 1000% , 10000% , 65535% Teraz będzie dobrze :?: Piotrek
Najprościej skorzystać z gotowych funkcji. W Bascomie 51 jest funkcja MAX. Działa ona na zmiennych typu Byte. W Bascomie AVR funkcja ta działa na zmiennych Word. Więcej info w helpie do Bascom-a. Jeśli musi to być koniecznie Integer, można zastosować jakąś konwersję typu Word na Integer lub napisanie własnej funkcji, co nie powinno być trudne.
LOOKUP nie wie jakiego typu są dane, które ma przeglądać. Równie dobrze możesz mieć tablicę słów (Word) a odczytywać ją bajt po bajcie przez LOOKUP, gdzie zmienną do której zwraca ona wartość będzie Byte. To otwiera pewne możliwości: 1. Normalnie dane są jednobajtowe. Dane dwubajtowe, są w stałych i określonych miejscach oraz jest ich bardzo mało. Zatem...
... BASCOM nie obsluguje tablic bitow... Bascom-AVR obsługuje tablice bitów , jednak z pewnymi ograniczeniami a)Tablica nie większa niż 256 bitów. b)index/numer bitu , MUSI być zmienną , choć właściwie niekoniecznie MUSI :D Piotrek
Wartość w poleceniu lookup to jest właśnie adres wiec nie kumam w czym problem. przeskaluj adc z 0-1023 na 0-90 i potem wywołuj zmienna=lookup(adc,tablica)
Poczytaj w pomocy o instrukcjach: DATA , RESTORE, READ... To się nie nadaje , ponieważ Restore potrzebuje etykiety , a Read to odczyt sekwencyjny i nie da sie wybrać konkretnego elementu tablicy , tylko trzeba odczytywać kolejno , począwszy od pierwszego elementu. Ale ... Bascom AVR posiada funkcje , za pomocą których można naśladować mechanizm wskaźników...
No więc ? Tablica: DIM Odczyt(2) składa się z dwóch zmiennych typu Byte. Więc ile masz bitów razem ?
A widzisz, pojawia się wreszcie jakiś konkret. Skoro pojawia się komenda "300" to rozumiem, że pojawi się też "120", "1", "55" itp. Więc zamieniasz otrzymany string na word i masz już wskaźnik tablicy. W odpowiedzi wysyłasz wartość zmiennej o numerze "300".
Ściagnij sobie jeden z tych plików pomocy, uruchom, wybierz indeks wpisz "dim" klinij wyświetl i tyle, prościej sie nie da :) Dodano po 5 Sorry kolego, dim to nie tablica tylko deklaracja zmiennej, przepraszam za wprowadzenie w błąd Dodano po 6 teraz się temu przyjrzałem i okazuje się że dobrze pamietam. Dim moze być deklaracja singlowej zmiennej bądź...
Tak, rozwiązałem problem za pomocą tablicy.
Tworzysz zmienną sting * 20 i tworzysz tablice byte(20) adresujesz je tak samo i poleceniem lcd chr(byte(a)) stawiasz znak z wybranego miejsca ze stinga.
Tak na szybko - pierwsze skojarzenie: skopiować element tablicy do zmiennej tymczasowej, na niej przeprowadzić przesunięcie, a następnie nadpisać pole tablicy zmodyfikowaną zmienną tymczasową. pozdrawiam
Taa, bo mialem tę linijke napisaną a potem się okazało, że zmienna Alarm już jest i tablicy z niej nie chciałem robić żeby nie było zamieszania. Stworzyłem więc Alarm_nr(5) (zamiast Alarm1,Alarm2,Alarm3..) a o tej linijce zapomniałem ;) Widzę czujność jest :D
Zrobić jedną tablicę jednowymiarową i zapisywać kolejno po sobie po 7 tych zmiennych, następnie odczytywać z "offsetem" tablica(x + y*offset) daje to pseudo 2 wymiarową tablicę. tablica(0 + 0*7) = tablica(0) tablica(1 + 0*7) = tablica(1) tablica(2 + 0*7) = tablica(2) .... tablica(0 + 1*7) = tablica(7) tablica(1 + 1*7) = tablica(8) itd....
Patrzę i patrzę na Twój kod i na opis tego co chcesz i nic nie rozumiem. Nie wiem co chcesz osiągnąć i za nic nie rozumiem tego kodu.
tak, stosuj tablice. Ulatwi ci to robote.... ALE pamietaj zeby NIE ZAPISYWAC DANYCH W KOMORCE EEPROMA O ADRESIE 0. Jesli zaczniesz deklarowac zmienne w bascomie to : ...jakies zmienne... .... .... .... 'EEPROM dim foo as eram byte 'to ci zalatwia komorke 0, bo tu bascom umiesci tą zmienną, i z niej niekorzystasz dim tablica1(3) as eram byte dim tablica2(3)...
nie przyjmie. Trzeba zapisywać po charze. A coś takiego jak string tak na prawde nie istnieje - jest to tablica charów.
Jeśli ręcznie rozmieszczasz zmienne w pamięci, to możesz tablice (mające do 256 bajtów) porozmieszczać tak, aby wszystkie komórki w jej obrębie mały górną część adresu taką samą, przez co w kodzie możesz pominąć dodawanie do ZH. Niestety jeśli zmienne rozmieszcza kompilator, który traktuje całą pamięć jako przestrzeń liniową i nie czyni żadnych dodatkowych...
Nie da rady w ten sposób... Ale... Załóż zmienną typu "byte". W programie możesz odwoływać się do pojedyńczych bitów tejże (np.: set zmienna.1 , reset zmienna.5 ) Właśnie tu jest pewien problem. Zawsze jest sterowane tylko jedno wyjście przez specyficzny cykliczny układ zmiennych czasowo przerwań. INT0 przełącza na kolejny pin czyli next x Zawsze mogę...
Dołącz do ramki np znak nowej linii '\n' i odbieraj znaki aż do jego napotkania zapisując ramkę do tablicy potem zostaje tylko ją zinterpretować określając wielkość tablicy.
Należy zrezygnować z Bascoma albo zrobić wstawkę w assemblerze, a wynik umieścić w tablicy lub dwóch zmiennych. Niestety Bascom nie potrafi operować na liczbach 64-bitowych.
Tak jak wprowadza się dane do tablicy...
Co to za dane? Czy mają stałą ilość bajtów? Jakieś stałe bajty na początku/końcu ramki danych? Poza tym uważam, że wszystko inne wyjaśniłem teraz tylko Kolega musi sięgnąć do dokumentacji BASCOM'a, znaleźć odpowiednie funkcje i napisać na ich podstawie program który chce kolega zrealizować. No i takie dane to raczej nie do jednej zmiennej, ale do tablicy...
(at)zumek Dzięki za kod, ale nie do końca wiem jak on działa. Szkoda :( W1 to tablica wskaźników na W, przesunięta o dwa miejsca? Mylisz się :( W1 , to jakby wskaźnik na W powiększony o 1 element tablicy W , czyli 2 bajty . Natomiast tablica wskaźników , to ... nie z tej bajki ;) A dokładnie rzecz ujmując , to Bascom definiuje tablicę W1 , w obszarze...
Kwarc wstaw w obu przypadkach nawet 16MHz. Baudrate jest zależna w zasadzie od jego dzielnika niż od kwarcu. Nie szalej też z dużą szybkością bo błędy mogą wyskoczyć, zacznij od 4800 bps. Połączenie po UART masz zrobić sprzętowo! Timer niech ci obsługuje multiplexing, główna pętla programu sprawdzanie czy w UART coś przyszło i przepisywanie do tablicy....
zrobiłem klawiature matrycową działa można wprowadzac dane zapisałem dane do tablicy np. dim a(3) as bit a(1)=4 a(2)=3 a(3)=6 pytanie brzmi jak dane z tablicy przekształcić na jedną zmienną x =436 :cry:
chcę zrobić tablicę z nazwami dni tygodnia do kalendarza. deklaruję dim tablica(7) as string * 12 Po co Ci aż 7 12-bajtowych stringów :?: Wystarczy: Dim Dzientygodnia As String *12 , Nrdnia As Byte ... Dzientygodnia=Lookupstr(Nrdnia,Tabli... '0=Pon, 1=Wtor, ... Lcd Dzientygodnia; ... Tablica: Data "poniedziałek", "wtorek"...
oczywiście, że wystarczy $asm ... kod twojej wstawki $end asm ale oczywiście przydałoby się jeszcze wiedzieć jak można uzyskiwać w asemblerze dostęp do zmiennych itp, otóż: Dim Zmienna1 as Byte $asm lds R16, {Zmienna1} ... coś tam robimy sobie w asm ze zmienną i chcemy ją uaktualnić, więc: sts {Zmienna1}, R16 $end asm powyżej...
Stwórz tablicę za pomocą: Dim Zmienna(5) As Byte 'lub Word, Integer, Long, Single, Double... Przed zapisem aktualnej wartości do Zmienna(1), przesuń wartości z 1, 2, 3, 4 o jeden indeks (na 2, 3, 4, 5). Pamiętaj aby zrobić to tak, by nie "zamazać" wartości przy przesuwaniu. Potem zapisujesz aktualną wartość do Zmienna(1) i masz komplet, który...
A poprawiłeś tą linijkę z błędem o której mówiłem: [syntax=basic4gl]Karta = Buffer_in(1)(2)[/syntax] ? Po jej poprawieniu działa. I jeszcze trzeba zainicjalizować zmienną In_pos na 1. Bez tego też będzie działało ale zgubi pierwsza ramkę. [syntax=basic4gl]... Adres = 01 In_pos = 1 Enable URXC Enable Interrupts Do Loop ...[/syntax] A i trzeba się upewnić...
Zaprezentuj krótszy program tylko z odbiorem, ale z wszystkimi ustawieniami, configiem i deklaracjami zmiennych. Może coś się od razu rzuci w oczy :D Nie wiadomo czy zadeklarowałeś wielkość ramki której Bascom używa do obrabiania danych pracując na stringach lub tablicach ($framesize) Kiedy jest za mała to program może jeździć po innych zmiennych ;)
Szanowni koledzy! Czujnik ozonu wysyła po UART taką ramkę FF 2A 04 00 00 3E 27 10 5D z czego FF to bajt startu 2A - rodzaj gazu (03) 00 - cyfry dziesiętne ( nie istotne) 00 - stężenie gazu - bajt starszy 3E - stężenie gazu bat młodszy reszta nie istotna (choć znana) Jak w Bascom odebrać te dane do tablicy zmiennych? Zwykle odbierałem cyfry dziesiętne...
Coś enigmatycznie i mało przejrzyście to tłumaczysz napisz jakio rozmiar ma zmienna i co ma zrobić . Jeśli chcesz żeby robiła operacje na porcie możesz to osiągnąć przez wybór typu"case" lub zmienna tablicową czyli w zależności od pobranej zmiennej wybierasz wartość z tablicy i wysyłasz ją na port
bascom zmiennych tablice bascom bascom tablice
subwoofer zakup renault laguna pasek rozrządu swiatla diodowe
podłączyć wentylator łazienkowy
Nagrywanie dwóch programów jednocześnie na dekoderze KGS 3200 Czy w stykach termostatu Brotje Energy Top płynie prąd?