1. Bascom jest bardzo dobrym językiem, znacznie lepszym niż Arduino. 2. "a:10.0" "a:10.0 " ":10" "10 " Ten temat jest zamknięty, dostałeś 2 przykłady. Pierwszy napisałem do składni ramki jaką podałeś w pierwszym poście, później zmieniłeś konstrukcję rami to napisałem kolejny przykład, można jak dobrze naliczyłem jeszcze 9 innych metod zastosować by...
Ja to robie na przykład tak: dziele cyfre co ja mam wyswietlic przez 1000 i mam juz liczbe tysiecy czyli moge ja wyswietlic na pierwszym miejscu, nastepnie poleceniem a=wynik mod 1000 dostaje reszte z dzielenia przez 1000 dziele ja przez 100 i mam liczbe setek i znowu mod 100 i mam reszte z dizelenia przez 100 kolejne dzielenie przez 10 da w rezultacie...
Racja. Do tego typu obliczeń są potrzebne większe procki. Wracając do tematu licznika. Stworzyłem już kod, który odlicza czas i zlicza naciśnięcia(maksymalne wychylenia). Nie mogę dojść do sposobu jakim mam obliczyć resztę. Nadal ufam,że jeszcze na ATtiny uda mi się to zrobić :) Wzór G = k * l/T^2 gdzie k tam stały współczynnik 39,44 l - długość, zakładam...
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...
No normalnie: If zmienna >= 1000 Then zmienna = 999 End If
Co to znaczy ilość jest zmienna? W Bascomie rozmiar tablicy jest stały. Rozumiem, że pozostałe po prostu są pustymi stringami. Może polecenie SORT się nada, Ale do zmiennych STRING go nie próbowałem używać więc....
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...
... Czemu? Dlatego, że źródło i cel funkcji Format, to ten sam obszar pamięci(czytaj: ta sama zmienna) Ponieważ funkcje zwracają wartość przez referencję, to w tym przypadku polecenie Stringi = Format(czas_str(inx_zaw) , "00") jest równoważne Czas_str(inx_zaw) = Format(czas_str(inx_zaw) , "00")...
chcę osiągnąć coś takiego: Declare Function Set_by_spi(co As String*10 , Wartosc*40 As String , Procesor As Byte) As Byte A co to za zmienna Wartosc*40 ? Poza tym zmiennych w parametrach się nie wymiaruje. Wszystko dlatego, że w przekazywaniu parametrów uczestniczą tylko wskaźniki do zmiennych. Nie użyłeś ByVal więc kompilator przekaże 16-bitowy...
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.
Po pojawieniu się PINB.0 = 1 zwiększaj indeks tablicy Idx. Idx to zmienna którą będziesz indeksował tablicę w poleceniu: Lcd Tablica(idx). Ponieważ program może być na tyle szybki, że mógłby przesunąć indeks tablicy o parę kroków naprzód jeśli na PINB.0 utrzymuje się stan wysoki, to musisz też zapamiętać czy zwiększenie zostało już wykonane i pozwolić...
wielkie dzięki za sugestie, w związku z tym, że dopiero intensywnie uczę się Bascoma, to dlatego nie zawsze jeszcze jestem w stanie na szybko doszukać się odpowiednich poleceń w helpie jak podany przez ciebie Instr ;) również odnośnie tych paramterów $hwstack, $swstack, $framesize i ustalania ich wartości nie jestem jeszcze w pełni świadomy jak z nich...
Zrozumienie prostego i nieskomplikowanego, jak się na końcu okaże, Overlay bardzo się przydaje. Zanim zacznę to przypomnę i umówmy się że jeden bajt zapisujemy w dwóch znakach, na przykład FA, FF, 8C, 0B itd.. Pierwszy przykład obrazujący zagadnienie: Jak wiadomo zmienne typu WORD albo INTEGER składają się z dwóch bajtów. Jeśli więc zadeklarujemy w...
Hmm wróżki na urlopie... A jakich danych się spodziewasz? A jakiego typu jest zmienna? Czy dane jakich się spodziewasz są stałej długości? Dodano po 46 PS do przechywtywania było chyba input (po RSie) albo coś takiego - czytało do CRLFa jako stringi...
... Moze inaczej sie zapytam: Jak zadeklarowac zmienna do wyswietlenia, aby wstawic ja do funckji pisztekst(PSTR("wyswietl cos")) Zamiast "wyswietl cos" chcialbym wstawic zmienna,ktorej wartosc to "wyswietl cos". W ten sposób sie nie da :( Podejrzewam , że niezbyt dokładnie przeczytałeś manuala.Jest tam napisane: #define PSTR...
Jaki będziesz miał wyświetlacz? Alfanumeryczny że string będzie ok? Czy może LED lub LCD segmentowy? Żeby zmieniać wartość enkoderem trzeba go obsłużyć... Enkoder ma przycisk? Zatem weź zmienną Word w której będziesz zmieniał nastawy np. [syntax=vbnet]dim wartosc as word dim index_wartosc as byte if index_wartosc =1 then wartosc=wartosc + 1 end if if...
Chyba nie czytałeś ostatnio tego rozdziału z Language Fundamentals. W ten sposób sam sobie robisz kuku... Pomijając to myślę, że jeśli te Twoje zmiennoprzecinkowe masz tylko do dwóch miejsc po przecinku, to dlaczego, po prostu, nie pomnożysz tego x100 a na końcu wyniku nie podzielisz /100? Zapewne wszystko się wykona dużo szybciej niż na tych zmiennoprzecinkowych....
ja bym wpisywal np. do stringa i pozniej go zamienial. Albo inna metoda 1klawisz x100 + 2klawisz x10 + 3klawisz= zmienna
Widzę, że moderatorzy posprzątali zwyczajowy hejt na Bascoma :D Niestety przy okazji usunięto też ważną informację. Rzeczywiście potrzebujesz instrukcji VAL https://wiki.mcselec.com/bavr/VAL do zamiany reprezentacji tekstowej liczby na wartość liczbową. W drugą stronę, jeśli chcesz wysłać zmienną WORD do komputera możesz zrobić to wprost. Bascom sam...
Witam. Mam problem ze zmianą odebranych danych z Uart'a na zmienną liczbową. Mianowicie na jednej Atmedze mierzę poprzez ADC wartość prądu i wysyłam ją na uart'a. Na drugiej Atmedze odbieram te dane i tu nie mam problemów - wysłane i odebrane dane się zgadzają i są poprawne. Ale odebrane dane są stringiem, nie mogę nic z nimi zrobić (matematycznie)....
Funkcja MID. :) [url=http://avrhelp.mcselec.com/index.ht...
jeżeli już uzyjesz procka a dwoma uart'ami to budujesz procedure która odbiera od twojego urządzenia string'i jeżeli wykryjesz odbior pierwszego string'u (czyli nagłówka) np if odebrany="wzór nagłówka jeden" then ustaw flagę że nastepny string to będą pierwsze dane wtedy : if flaga1=1 then pierwsze_dane=odebrana:reset flaga1 z drugim nagłówkiem i drugimi...
Left przyjmuje 2 parametry, a Ty podajesz 3: Character$ = Left(rozkaz , 4 , 1) Tak trudno zajrzeć do Helpa? Zrób na MID: Character$ = MID(rozkaz , 4, 1)
A w kodzie masz Rs=Es
Użyj po prostu VAL(zmienna typu string). Ale nie jestem teraz przekonany, czy VAL zwróci wartość stringa zawierającego HEX. Możesz napisać prostą procedurę, która zamieni dwa znaki w HEX na wartość dziesiętną, a tą już łatwo wyślesz. EDIT: Jest komenda HEXVAL - opis w helpie.
Zadeklaruj stringa o znanej długości tj. Dim x as String * 10 a nie samo string * .
Witam, Napisałem program w BASCOM AVR, z komputera otrzymuje dane np: "14" te dane są i muszą być odbierane do zmiennej typu string. Mam problem z: chciałem tą zmienną ze zmiennej typu string przypisać do zmiennej typu BYTE. Nie wiem jak by to zrobić. Probowalem już kilu sposobów ale zawsze otrzymywałem jakieś bzdury w zmiennej typu byte. Czy istnieje...
http://www.elektroda.pl/rtvforum/topic22...
Nie używałem nigdy BASCOMa, ale chyba powinno się dać w nim zrobić coś takiego: wynik = round(liczba*100)/100
Hmm, czytajac ostatni post atoma, troszka sie skrzywilem. Mowie ze program ktory napisalem dziala, ale nieprawidlowo, to nie jest wynik zamiany miejscami danej z adresem, malo tego, zmienna k, która jest oczywiscie stringiem, bo jest to zlozenie LITERY P i liczby 11, ktora jest zamieniona ze zmiennej byte (kali) na stringa podstawiona w miejsce adresu...
Bo fusing robi stringa proszę szanownego kolegi:) To nie tędy droga...PS może nie zaokrąglanie a histereza?:) Wiem właśnie. I dla tego takie głupoty wychodziły. Ale gdy dam dodatkową zmienną string i tak "zfusuje" wartość temperatury a następnie ponownie przepiszę ją do zmiennej single procedurą Val to ponownie zamiast xx.xx mam xx.xxxxxxxxx. A = Fusing...
Czy liczba jest zawsze siedmiocyfrowa? Nie mówie że to jedyny sposób ale podam jeden z możliwych. Deklarujesz zmienną tekstową siedmioznakową. Taka zmienna ma w rzeczywistości osiem bajtów. Nie chcesz wysyłać ósmego NULL. No i OK :D Na te zmienną nakładasz bufor siedmiu bajtów. Kiedy zmienna Dword każesz zamienić Bascomowi na string to on zapisze komórki...
01 czy 1 ? Jest to wartosc bcd czy normalna od 0 do 255? (sory na c sie nie znam) Ja bym to zrobil tak (i chyba tak zawsze robilem i dziala) Iput i zapisywal zmienna odebrana do stringa, a nastepnie ja przemienial na normalny byte za pomoca val()
Motam się znowu okrutnie z uartami. Mam dwa urządzenia i chcę aby w każdym nadawanie i odbieranie chodziło w przerwaniach. Urządzenia A odpytuje cyklicznie co kilka sekund urządzenie B. Całe odpytywanie polega na tym że: Moduł A wysyła poleceniem: Print #6 , "RED" ; chr(13) ; zapytanie o treści "RED" i na to zapytanie urządzenie B...
Pomyśl..Cztery znaki chcesz upchać w trzyznakowym stringu.. Nie wiesz jak to działa. Kiedy deklarujesz String * 10 rezerwujesz 11 bajtów bo każdy string ma znak swojego końca. Nie musisz wykorzystać wszystkich bajtów. String może być krótszy i zaraz po znakach postawiony będzie znak końca..ale zarezerwowałeś 11 bajtów i tam program nigdy nic nie będzie...
Deklarujesz jakąś zmienną, która "pomieści" znaki wszystkich zmiennych Dim S As String * 200 S=zmienna1 Zamieniasz zmienna2 na stringa zmienna1=str(zmienna2) i sklejasz całość s=s+zmienna1 'lub s=s+" "+zmienna1 s=s+zmienna3 Powinno zadziałać też s=zmienna1+" "+str(zmienna2)+" "+zmienna3
Bo trzymasz znak w zmiennej zadeklarowanej jako Byte. Zrob sobie stringa o dlugosci np. 5 znakow i zobaczysz. acha i jeszcze po zresetowaniu mikroprocesora wyskakuje w terminalu kwadracik... Wcale sie nie dziwie bo po resecie pojawiaja sie smieci...
Zamieniasz poszczególne znaki na ich liczbowe odpowiedniki za pomocą funkcji: ASC i XORujesz z poprzednią wartością, za pomocą funkcji XOR. O rozbijaniu stringa na poszczególne znaki było parę( dziesiąt) postów temu. A sam XOR to inaczej suma modulo 2: 0 xor 0 -> 0 1 xor 0 -> 1 0 xor 1- > 1 1 xor 1 -> 0 Oooo, znalazłem: http://www.elektroda.pl/rtvforum/topic15...
1) Warunek jest taki że string zawsze musi mieć taka samą długość 2) Użyj funkcji MID aby powycinać ze stringa kawałki z poszczególnymi temp 3) I tutaj uwaga - konwersje string->liczby są pamięciożerne. Jeśli nie wykonujesz żadnych obliczeń temperatury itp to odebrany string wyświetl na lcd jako string a nie jako bajty. Poprostu funkcją MID porozcinaj...
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"...
Coś mi się nie podoba w tym programie. Takie coś przełknął kompilator?? a = input() Jeśli chcesz wyczyścić zmienną String to poprostu przypisujesz jej pusty ciąg.
Tak, rozwiązałem problem za pomocą tablicy.
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.
Komeda LCD zmienna zamienia zmienną na ascii wystarczy teraz to ominąć. Dla przykłady zamiast zmienną dla cyfr modyfikować w zakresie 0-9 modyfikować w zakresie %h30-&h39. I wysyłać na LCD, poprzez chr(zmienna), lub dodawać do stringa.
Proponował bym Ci na początek zrobienie komunikacji między PC a jednym z tych ATMEL-i. Wtedy będziesz wiedział o co chodzi. Mój program dla ATMEGA16 w BASCOM-ie wygląda tak: $crystal = 16000000 ' mam kwarc 16 Mhz $baud = 9600 ' prędkość na RS-ie Config Com1 = Dummy , Parity = None , Stopbits = 1 , Databits = 8 ' konfiguracja portu Echo Off ' nie chcę...
Witajcie! Gryze wlasnie swoj maly projekt (sterowanie swiatlami z pwm za pomoca pc) i natrafilem na problem. Up dostaje na com taki string: HELLO,255,11,23,45,0,END Na tej podstawie ustawia 5 zmiennych kolejnymi wartosciami (pomijajac pierwsza i ostatnia). I tutaj utkwilem - jak rozdzilic to co dostanie na pojedyncze wartosci (np. w tablicy)?
Rozumiem, czyli zmienna String to jakby ciąg zmiennych bajtowych stanowiący całość i w programie instrukcja: IF zmienna_string_1znak(to jakby jedna zmienna bajtowa, tylko inaczej interpretowana, bo nie mogę do stringa w programie wpisać prosto wart. liczbowej, a jedynie literę, która reprezentuje ową wartość liczbową) = "a" then... jest równoważna IF...
czyli jak rozumiem, 80 zmiennych bajtowych i potem wysyłanie każdej po kolei tak ?
Proszę zapoznać sie z funkcją MID() z pliku pomocy Bascoma. Jeżeli dobrze zrozumiałem problem chodzi ci o to, przykład podany w pomocy powinien rozjaśnić sprawę
Najłatwiejszy "słownik" komend Bascoma jest tutaj -> https://wiki.mcselec.com/bavr/BASCOM-AVR... -> bo widać je wszystkie na raz alfabetycznie i szybko można kliknąć. Tłumaczyć można oczywiście całe bloki teksu, albo w GoogleTranslator, albo DeepL Ja korzystam z wbudowanej pomocy czyli wciskam w Bascom F1 i szukam sobie w Index. Dla mnie działa szybciej...
bascom zmienna stringi zmienna stringi stringi zmienna
ch341a pobierz oporność głośnik poziomowania actros
Renault Scénic II – trzy sygnały dźwiękowe, gasnące kontrolki, brak błędu na liczniku Błąd połączenia z serwerem IPTV Netia - komunikat 06