Witam, Proponuję spróbować tego, to kawałek kodu z mojego pliku pomocy w obsłudze termometru DS18B20: 'Odczyt temperatury z dokladnością do dziesiątych części $regfile = "89s8252.dat" $crystal = 12000000 Dim Odczyt(2) As Byte 'deklaracja dwóch zmiennych typu byte do których będą zapisywane dane z termometru Dim T As Integer , Przecinek...
Witam Piszę do was bo nie mogę rozpracować histerezy w poniższym kodzie programu. Program działa prawidłowo ale jest mały problem. Histereza zawsze działa, a raczej jej brak (załączanie i wyłączanie) działa równo przy 30 stopniach. Potrzebuję aby histereza była ustawiona na 5 stopni. Proszę pomóżcie mi wyeliminować ten problem. Program musi mieć funkcję...
Podejrzewam, że chodzi o 8 bitów z czujnika interpretowane do tej pory w C jako int8_t. :arrow: wader_669 Reprezentacja binarna - zobacz [url=http://pl.wikipedia.org/wiki/Kod_uz... uzupełnieniowy do 2 Przeliczanie - wpisz te 8 bitów do 16-bitowego integer-a i jeżeli jest więcej niż 127 to odejmij 256.
Lepiej zmień deklarację T As Word na T As Integer - zmieniono zobacz czy bit całkiem po lewej to jedynka. - Jest 1 Zmieniłem na bit 16 i error w tej linijce. Dim Tempw1 As Integer Dim Tempstr As String * 20
Error 10:Wrong type(bit,byte,integer,word,or string)
BASCOM może mieć problemy z odjęciem od liczby 65536 zmiennej Word lub Integer. To po pierwsze. Więc zastosuj zmienne typu Long. W dodatku stosując offset (wartość odniesienia) nawet zoptymalizowanie programu nie pozwoli zastosować zmiennych dwubajtowych, bo niektóre wyniki będą miały wartości większe od 65535 (lub inaczej: dodatnie wartości mogą wyskoczyć...
Ja bym dał Integer żeby nie działy się cuda jak temperatura zechce być ujemna.
Witam. Potrzebuję informacji czy w bascomie można wykonywać operacje typu zmienna1*zmienna2 lub zmienna1=zmienna2 gdy jedna zmienna jest np.typu integer a druga long?, gdy zawierają liczbę która mieści się w zakresie dozwolonym dla obu?. Jeśli ze zmiennej long zrobiłem licznik zliczający w obie strony a później próbuję po pewnym okresie zliczania przypisać...
Mam problem jestem początkujący napisałem program który ma za zadanie regulować włączanie wiatraka i czas z jakim ma dmuchać , jednocześnie mierzy temperaturę i nie działa tak jak powinno : Temperatura pokazuję co jakiś czas błędny pomiar np 124 , 32 , 98 procek się resetuje chińskie znaki raz na jakiś czas w programie można było ręcznie zmieniać czas...
Prosiłabym o wyrozumiałość i pomoc w nakierowaniu mnie na rozwiązanie problemu. Spróbuję nakierować :) Jeśli zapis ID do eeprom ma być jednorazowy, w kodzie programu deklarujesz (wcześniej innym programikiem i LCD odczytane) ID $eeprom Termometr2: 'nr seryjny termometru 1 Data 40 , 25 , 0 , 133 , 2 , 0 , 0 , 196 Termometr1: 'nr seryjny termometru...
Witam Mam taki program który wyświetla temperaturę potocznie zwany termometrem. Problem w tym ze nie wyświetla mi znaku minus przy ujemnych temperaturach. Po wsadzeniu do zamrażarki mija temperaturę 0 st C i idzie dalej niby w dół, ale bez minusa. Przeglądałem sporo źródeł na elektrodzie i w innych miejscach i nie mogę sobie z tym poradzić. Oto kod:...
dane(k) - to dane wejsciowe dla DFT i one musza być ze znakiem Sample(k) - to dane z przetwornika ADC (8bitowe) Poziom - średnia z wszystkich próbek czyli poziom masy ja wszysstki obliczenia robiłem na liczbach integer czyli 16 bitowe za znakiem czyli -32768 do 32768 i to starczyło .GCC cos kaszani z ujemnymi. ludzie nazekają na bascoma a on jest naserio...
A rodzaj zmiennej ma znaczenie w tym przypadku? Bo kombinuje i z byte i integer. Zdecydowanie ma , a także znak liczby.Jeżeli spodziewasz sie pomiaru temperatur ujemnych, to całe Twoje obliczenia temperatury i podzielenia je na "cyfry" , biorą w łeb :| Radzę poeksperymentować w symulatorze - można nieźle się z(a)dziwić :)
. Deklarując zmienną "dowpisania" jako bajt nic się nie zmienia. W czasie jednej pełnej pętli głównej licznik zwiększa się o 3, więc dla najwyższej możliwej częstotliwości pętla wykona się 16 razy zanim dojdzie do przerwania, nawet zostawiając w głównej pętli wysyłanie ocr2 przez uart, gdyby wywalić tę linijkę, pewnie trwałoby to jeszcze krócej. Nie...
Problem leży po stronie scalania danych - wartości tmp_accx(1) i tmp_accx(2) nie mogą być dodane do siebie. Należy pamiętać że są to dwie połówki zmiennej typu integer, wartość tmp_accx(2) należy pomnożyć przez 255 lub przesunąć w lewo o 8 pozycji. Następnie obie połówki łączymy instrukcją OR (+ tu nie zadziała gdyż w przypadku liczb ujemnych będą głupoty)....
1) Możliwe że zmienna T ci się przepełnia, spróbuj ją zmienić z integer na word 2) Unikaj ułamków, np 23.58 lepiej wymnożyć przez 100, wykonać działania i na samym końcu podzielić przez 100 niż działać na przecinkach. Staraj się nie używać ujemnych liczb. 3) Zrób drugą wersję tego programu - przyklej z obecnego absolutne minimum i obserwuj działanie....
Czy można przez konwersję BCD wyciągnąć znak (temperatura dodatnia/ ujemna) Wynik zczytywany jest do zmiennej Integer(nie Single, żeby od razu odciąć część ułamkową) dalej poprzez BCD uzyskuję liczbę dziesiątek i jedności. Wszystko działa tylko jeśli temperatura spadnie poniżej 0, zaczyna liczyć od końca. W jaki sposób można oddzielić znak "-" ze zmiennej...
Chwilowo straciłem ten kod postaram się go znaleźć ale opierałem się na projektach z internetu. No bez jaj. Na 99% nic nie masz tylko czekasz na gotowca. Ale dobra, zlituję się na święta :D Pomijając całą beznadziejność kodu do multipleksowania wyświetlacza, takie coś powinno działać: $regfile = "ATTiny2313.dat" $crystal = 8000000 Dim Jednosci...
[quote="zumek"]Drogi kolego Tomotron, oto lekarstwo na Twoją duszę :wink: W menu Options->Compiler->Misc jest sobie takie coś jak Byte End(hex) więc ustaw sobie tam wartość np.50 i po ptokach ,a jak by to było mało, to walnij ze 60 lub lepiej 70 i masz skompilowany program.Żeby nie ustawiać stosu za wysoko, to wartość "Byte End" trzeba tak ustawić żeby...
Witam Temat był już wałkowany x-razy Co mam dopisać do tego programu żeby mi mierzył temp. ujemne ? Jest to program do zegara z termometrem kit AVT868. Proszę o pomoc pozdrawiam Sjzwojtek $large Declare Sub Settime(s As Byte , M As Byte , H As Byte , D As Byte , Month As Byte) Declare Sub Gettime Declare Sub Displaytime Declare Sub Displaydata...
Witam. Mam termometr na Atmedze8, program napisany przez kolegę Ducha. Chciałbym dodać funkcję zapisu do eepromu najniższej zarejestrowanej temperatury przez termometr, lecz nie jest to możliwe ponieważ ostateczny format temperatury zapisywany jest w zmiennej typu string. Program ma porównywać, czy aktualna temperatura jest mniejsza od zapisanej w eepromie,...
Wszystko działa dobrze, dokładnie tak jak napisałeś :-) Syfy w programie: 1) A jako integer, powinno być jako byte (pwm 8 bit) lub word (16 bit). Tutaj to nie powoduje błędu ale dobrze by było nie używać zmiennych mogących być ujemnymi, ponieważ PWM może mieć wartości tylko 0 lub dodatnie. 2) Enable Timer 1 - nie jest potrzebne bo nie używasz przerwań,...
Witam. Naskrobałem coś takiego: Dodano po 33 Aha, jeszcze dwa pytania. Czy DS może być blisko kwarcu? Mam go wlutowany ok. 1cm od kwarcu. Jaka jest żywotność pamięci eeprom w DS? 100000 zapisów jak w przypadku Atmega, czy więcej? Odczytuję temperaturę co pięć sekund i martwi mnie obecność eeprom w DS.
Jaka jest najmniejsza i największa temperatura jaką mierzy ten czujnik oraz jaka jest najmniejsza i największa temperatura jaką chcesz zmierzyć? Pokarz schemat jak masz wpięty ten czujnik. Jaki schemat? Toż to 2 kabelki, jeden do uc drugi do GND przez 100nf. Zakres jaki chcę uzyskać to 10°C-120°C. temp = 60 + (600 - wartosc)/10 To działa ale...
Widzę że kolega And! nigdy nie programował w Bascomie, otóż ten język nie przyjmuje aż tak skomplikowanych działań. Trzeba prościej. Zważając na to że integer to także liczby ujemne sugeruję taki oto kodzik: Dim A As Integer , C1 As Byte , C2 As Byte , C3 As Byte , C4 As Byte , C5 As Byte Dim Temp As Integer , Znak As Bit A = -31945 If A < 0 Then...
Znalazł się znawca od przesuwania liczb i bitów ! Zrobiłem juz wiele sterowników używając nie jednego, dwóch a nawet więcej liczby ds'ów i zawsze działa bezbłęnie, nie tylko w BASCOMIE. A Ty Piotrusiu trochę pokory. Co za problem z przesuwaniem liczb zakodowanych w U2 ? Nie rozumiem . Z podziałem przez 2 i shiftem to zwyczajna literówka oczywiści powinno...
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...
[syntax=vbnet][/syntax]Witam; Małe pytanko odnośnie wyświetlania wyników - dokładniej chodzi o temperaturę ujemną [syntax=vbnet]1wreset 1wwrite &HCC 1wwrite &H44 Waitms 750 1wreset 1wwrite &H55 1wverify Dsid1(1) If Err = 0 Then 1wwrite &HBE T = 1wread(2) T = T * 10 T = T / 16 S = Str(t) S = Format(s , " 0.0") Lcdgoxy 1 , 3 Lcdstr S , 2 , 0 Lcdupdate[/syntax]...
Przejrzałem naszą dyskusję i zajrzałem do dokumentacji Bascom i moim zdaniem masz w swoim programie problemy z arytmetyką i typami danych W Twoim programie ma miejsce następujący tok obliczeń: 1. pobierasz z ADC dwie liczby 8-bitowe w zakresie 0..255 każda (bez znaku): Pomiarl i Pomiarh 2. następnie dokonujesz podstawienia: Dodano po 3 I jeszcze jedno:...
1wreset 'reset 1wwrite &HCC 'jedna kostka, więc wykorzystujemy rozkaz SKIP ROM 1wwrite &H44 'dokonaj konwersji Waitms 750 'przeczekaj czas konwersji 1wreset 'reset 1wwrite &HCC 'rozkaz adresowy SKIP ROM 1wwrite &HBE 'rozkaz funkcyjny - polecenie odczytu DS18x20 Odczyt(1) = 1wread(2) 'odczytaj dwa pierwsze bajty T = Odczyt(2)...
Pomyśl trochę nad "sprytem" kodu :D Chodzi mi o to że kiedy widzisz powtarzające się linijki kodu to powinieneś pomyśleć "czym one się różnią" i tylko te różnice napisać osobno a wszystkie powtarzające się sprawy napisać tylko raz. Po co tyle tych Locate 1,1 . Przeciez i tak i tak będziesz tę linijkę rysował od 1,1 zawsze, chyba że inaczej podejdziesz...
Tego fragmentu zdania , nie jestem w stanie pojąć I tu się nie dziwię. Za co przepraszam i postaram się wyjaśnić co miałem na myśli W Czasie przeszukiwania forum znalazłem taki kod konwersji T = Makeint(odczyt(1) , Odczyt(2)) 'zrób z dwóch bajtów jednego integer'a Tspr = T 'teraz sprawdzam jaki jest wynik 'interesuje nas tylko...
Mam jakas liczbe WEJ ktora sie zmienia i poszukuje jej wartosci najwiekszej MAXX oraz najmniejszej MINN. Liczba jest typu integer i przyjmuje wartosci dodatnie oraz ujemne- chodzi o temperature i zapamietanie wart min oraz max. Zrobilem cos takiego: If Maxx < wej then Maxx = wej End If If Minn > wej then Minn = wej Else End If Nie dziala poprawnie...
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)...
Wczytaj dane z DS do tablicy dwuelementowej Byte, a później oba bajty wtłocz do zmiennej integer albo word np. przez Makeinit. Dla temperatur tylko dodatnich można użyc zmiennej word , natomiast jeżeli wystąpią temperatury ujemne bezwzględnie trzeba zastosowac tu zmienną interger ; inaczej wystąpią absurdalne interpretacje odczytów temperatury. Dla...
Antystatyk - co oznacza że nie działa? Skąd wiesz że nie działa? Testujesz to na procesorze czy w symulatorze bascoma? 1) wywal "Enable Timer2" ponieważ już w TIMSK aktywowałeś przerwanie 2) wstawiasz w przerwanie komendę PRINT (robisz sobie jaja) i twierdzisz że nie działa. A wiesz ile czasu zajmuje wykonanie się tego? 3) jeśli mimo wszystko testujesz...
Jest program napisany dzieki waszej pomocy. A tu program w razie jakiś błędów piszcie. Config Portb = &B11111111 Portb = &B11111111 Config Portd = &B1111111 Portd = &B1111111 Config 1wire = Portd.5 : Dim Odczyt(2) As Byte , A As Byte , T As Integer Do 1wreset : 1wwrite &HCC : 1wwrite &HBE 'odczyt z DS1820...
Shift pozwala szybko dzielić lub mnożyć tylko przez kolejne potęgi dwójki czyli, żeby się nie rozpisywać ograniczę się do bajtu :2,4,8,16,32,64,128 i 256 Ten Shift tam nie musi zostać. Umieściłem go tam bo liczba przez którą Ty dzieliłeś była potegą dwójki :D Shift Zmienna, Right, 1 ' podzieli ją przez dwa Sgift Zmienna, Right, 4 ' podzieli ją przez...
Mam maly problem ze zliczaniem czasu stanu niskiego na pinie INT0. Napisalem programik ale nie chce on liczyc czasu. A zmienna Ilecykli czasem zawiera wartosci ujemne, i ogolnie pokazuje jakies nieprawdziwe wartosci. bede wdzieczny za pomoc $regfile = "m48def.dat" $crystal = 8000000 $baud = 4800 Config Timer1 = Timer , Prescale = 1 On Timer1...
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,...
Tu masz działający i uproszczony do max kod do obsługi ds18b20 (wyświetla temp na wyświetlaczu) [syntax=basic4gl] I = 1wread(2) S = I / 16 T = Fusing(s , "##.#") Locate 1 , 1 Lcd "Temp:" ; T ; Chr(0) ; "C" [/syntax] tu masz dokładnie objaśnione co i jak: [syntax=basic4gl]Do 1wreset 'reset 1wwrite &HCC 'jedna kostka, więc wykorzystujemy rozkaz SKIP ROM...
Witam Mam problem z programem, który został umieszczony w książce (osła łączka). Program został napisany pod attiny2313 lecz niestety podczas kompilacji wyskakuje błąd: Reserved word may not be used Proszę kod umieścić w znacznikach code! Robak
Witam, Na wstepie zaznaczam, ze uklad (przynajmniej na pierwszy rzut oka) dziala poprawnie. Moje pytanie wynika z tego, ze nie mam gdzie sprawdzic czy dobrze odczytuje mi znak kiedy temperatura jest ujemna. Z dokumentacji czujnika wynika ze jezeli bity znaku tj od 15-go do 11-go sa wyzerowane to temeratura jest dodatnia a ujemna w przypadku gdy ustawione...
Witam Na wstępie chciałbym zaznaczyć iż jestem początkującym programistą i dlatego proszę o wyrozumiałość. Robię termometr na lampach nixie, ale nie działa mi poprawnie komunikacja z ds18b20 i ds1820. Problem polega na tym, że na lampach pokazuje się wartość -00.1 tak jak by wyjście czujnika było zwarte bezpośrednio z + , a nie jest . Czujnik jest podpięty...
Tzn. wiem, że zmienna typu bajt nie może być większa niż 255, ale zapomniałem, że nie robi się operacji na różnych typach zmiennych razem [syntax=vbnet] Solar_mid_mod_temp = Solar_mid_mod_temp \ 2 ' srednia z dwoch czujnikow = 283 [/syntax] co prawda przekracza 255, ale wynik z dzielenia przez 10 i Modulo 10 już nie, czyli 28 i 3 [syntax=vbnet] Solar_mid_dec...
Witam zainstalowałem najnowszą wersję bascoma 1.11.8.3 i chcę skompilowac program z kursu mikroprocesorowej oslej łączki co32g jest to podwójny termometr , wgrywałem go starą wersją bascoma do procka 90s2313 i działał. Teraz chcę skompilowac soft pod ATtiny2313 i wyskakuje mi Error file not found , co robie nie tak za pomoc dziękuję a to soft ' C032g...
Witam Używam Attiny2313 do pomiaru dwóch temperatur z DS18B20. Wynik ( Integer ) przesyłam bez żadnej obróbki przez UART przewodem 40 cm do Atmega328. Atmega rozbija odebrane dane i jest obróbka Kod Attiny2313 $regfile = "attiny2313.dat" $crystal = 8000000 $baud = 4800 '********************* Konfiguracja magistrali 1-Wire Config 1wire = Portd.5...
procesor maga8 nie wyswietla bledow w bascomie-avr dziala niby poprawnie... wiec problem jest taki: temperatura ok. gdy na port Pc.1 podam stan wysoki 12v przez stabilizator 5v nic sie nie dzieje tak samo jak z reszta ktora jest pod linia ------------- zaczynam dopiero zabawe wiec nie mam pojecia co z tym nie tak na dodatek nie wyswietla bledow:) ale...
Witam Próbuje przerobić kod obsługujący kilka DS18B20 na jednej linii i drugi obsługujący kilka DS18B20 na kilku liniach. Niestety jak na razie efekt jest taki, że działa tylko pierwsza linia, czyli dwa DS18B20. Jeśli chodzi o konfiguracje, to celowo nie ma Config 1wire = Porta.1 gdyż wpisanie tego portu, jako 1WIRE powoduje wyświetlanie 0.0 dla pierwszego...
Czy sprawdzałeś błędy w swoim programie ? Tak na szybko to: Zmienne otw i zam mają taką samą nazwę jak sub katalogi otw : i zam : Dłaczego typ zmiennych stosujesz jako Integer? Czyżby były też ujemne ? Trochę zmieniłem, sprawdź go. [syntax=basic4gl] $regfile = "m8def.dat" 'korzystamy z AMTEGA8 $crystal = 1000000 Dim Rezl As Integer 'napięcie z rezystora...
integer bascom ujemne bascom zmienna integer ds18b20 bascom ujemny
instalacja gazowy punto czujnik manometru odbiornik dowolny pilot bascom
kabel brake radio zwrotnice głośnikowe
Samochód gaźnikowy sam dodaje gazu po rozgrzaniu – przyczyny, diagnostyka, Weber, Pierburg Brother DCP-115C Windows 10 – drukarka widoczna, skaner niewidoczny lub odwrotnie