nie wiem czy o to chodziło bo nie mam na czym uruchomić tego programu (tzn. mam Bascom ale nie mam zestawu '51), ale wg mnie dopiero ten program zadziała: $crystal = 16000000 '$default Xram $large Dim Cyfra(12) As Byte Dim Jedn_sekund As Byte Dim Tempo As Byte Config Timer0 = Timer , Gate = Internal , Mode = 1 Th0 = &Hd8 ' Tl0 = &Hd7 ' =10025 cykli...
http://obrazki.elektroda.pl/8230612800_1... Przedstawiam dzisiaj prosty gadżet jaki zmajstrowałem jakiś czas temu. Jest to w zasadzie zwykły elektroniczny metronom i nie różniłby się od wielu podobnych tu prezentowanych gdyby nie sposób ustawiania czasu pikania. Założenia: 1.Wykorzystać stare diody led, które leżały w szafce około 15lat......
Nie rozumiem tej odpowiedzi. Nie działa, potem rzeczywiście działa. Jeśli jednak zadziałało to doczytaj dlaczego. "Prędkość" SCK nie powinna / nie może, być szybsza niż 1/4 (jedna czwarta) "prędkości" procesora. Nowy procesor śmiga na 1MHz. Jeden milion Herców. Jedna czwarta z tego to 250 tysięcy czyli 250kHz. Dlatego 187kHz się sprawdza. Jeśli jednak...
Witam. Faktycznie obsługa LCD jest bardzo prosta. 1. zainicjować LCD ( wybór trybu 4 lub 8 bit ) 2. ustawic dane na pinach D4 do D7 lub D0 do D7 3.ustawic zbocze opadajace na E Zanki wysylamy przy RS=1 Komendy wysylamy przy RS=0 W trybie 4 bitowym. Bajt wysylamy na dwa razy 1. starsza czesc bajtu i zbocze opadajace na E 2. mlodsza czesc bajtu i zbocze...
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...
Witam napisałem taki kawałek programu wzorując się na innym przykładzie i program działa Ale podczas ustawiamia Procesor wysyła mi Dec 47 na port P0 A powinien wysyłać Dec 63 prubowałem nawet wpisać w tablicę cyfr 0 wówczas zaczyna wysyłać 48 a przy ustawianiu 32 Siedzę już jakiś czas nad tym i całkiem zgłupiałem Pomocy A bym zapomniał P0.0 seg A P0.1...
Jak widzisz zależność jest liniowa, pokrywa się przy 60 stopniach. Stąd można wymyślić wzór taki: temp = 60 + (600 - wartosc)/10 np wartosc = 1000 -> temp = 60+(600-1000)/10 = 20 wartosc = 400 -> temp = 60 + (600 - 400)/10 = 80 Nie znam bascoma ale wystarczy to tam przepisać.
Jak zwykle czasu nie ma, ale nie mogłem się powstrzymać. Nakręciłem pierwszy klip - ahahahaha :D No musiałem się pobawić edytorem. Efekt to półtora minuty magii :D Ahahaha miałem kupę zabawy z tym :D Przy okazji możesz zobaczyć jak się używa wbudowanego symulatora by zadawać wartości ADC ;) Twój pomniejszony kodzik też poniżej, tylko używając poza symulatorem...
Witam Chociaż nie programuję w bascomie, to według mnie będzie lepiej wyznaczyć równań prostych w pewnych przedziałach zamiast tworzyć dużą tablicę z danymi, w przypadku równań będziesz miał bardziej elestyczny program zmieninijac jedynie współczynniki prostych dostosowując zależność pwm od temperatury je do swoich potrzeb zamiast za każdym razem zmieniać...
1. (pomiar > temp+histereza) -> wyłącz 2. (pomiar < temp-histereza) -> włącz Albert
Załaczam kod, który działa. odbiera dane z portu szeregowego i wyswietla je w MsgBox(). Zwróć jedynie uwagę na zdarzenieSerialPort1_DataReceived. Zmień w nim ilośc bajtów po której mają zostać odczytane dane z BUFORA portu szeregowego. Początkowo bowiem dane trafiają do bufora (każdy bajt oddzielnie wywołuje przerwanie i trafia do bufora) a stamtąd...
[syntax=c]íf(temp>max)dmuchawa(on); elsé íf(temp<max-híst)dmuchawa(off);[/synt...
0.0049 to wynik z dzielenia 5V(napięcie odniesienia ADC) / 1024 (rozdzielczość pomiaru przetwornika ADC w AtMega) Skoro rozjazdy u Ciebie są takie dziwne to przypuszczam, że zastosowałeś kolbę z inną termoparą niż autor projektu na którym się wzorowałeś. A tak na marginesie o po co te waitms 100 za pomiarem ADC?
Witam Masz pamięć nie ulotną na pokładzie. Poczytaj o WRITEEEPROM. Pozdrawiam
Normalne sterowanie on/off nie ma problemu. Tylko dla przykładu mam lutownice podłączam do niej czujnik pt100 ustawiam temp na 200 stopni i różnica jest 195-209 stopni tak skacze temp. ale gdy zrobię to na PIDzie 199-201 stopni mam regulator elektroniczny dwa wzmacniacze troche oporników i kondensatorów i chodzi pięknie:) ale chcę to samo zrobić programowo....
W skrócie: TYMCZAS=TEMPERATURA TYMCZAS=TYMCZAS + 30 TYMCZAS=TYMCZAS * 1.85 PWM=TYMCZAS Najpierw pozbywasz się wartości ujemnej, a następnie mnożysz przez współczynnik będący wynikiem działania MAX PWM / MAX TEMP , czyli około 1,8 .
Czyli jak to dokładnie działa ? Dodaje w configu coś takiego ? [syntax=basic4gl]Config Timer0 = Timer , Prescale = 256 Enable Timer0 : On Timer0 Prztimer0 Enable Interrupts[/syntax] I właściwie to wszystko czy jak ? Niestety nie potrafię znaleźć niczego konkretnego, jak coś jest to czysta teoria bez przykładów. Jak gotowy program to zazwyczaj zbyt rozbudowany...
dim TEMP as Word TEMP=Odczyt_temp(1) Shift TEMP, Left , 8 TEMP=TEMP+Odczyt_temp(2)
taka wartosc w zmiennej wysw , czyli temp 25,5 stC
Błędy się mogą zdarzyć zawsze, ale lepiej jak jest ich jak najmniej więc możesz spróbować dodać kondensator 100nF - 1uF przy samym czujniku jeśli pracuje w trybie na trzech przewodach. Potem zmieniłbym procedure odczytu danych z czujnika na taka która sprawdza CRC i ósmy bajt na obecność wartości &H10. Kiedy sprawdzanie przebiegnie pomyślnie to bierzesz...
A w jaki sposób sprawdzić przyczyny resetowania sie układu? Popatrz na skrót fragmentu Twojego kodu: [syntax=basic4gl] Mainn: '... Gosub Temp '... Temp: '... Gosub Mainn '... [/syntax] Jeśli rozumiesz w czym tkwi błąd, to OK, ale jeśli nie, to ... jeszcze sporo nauki przed Tobą :|
Zbyt szybko spodziewasz się odpowiedzi R1, odczytujesz ją tylko 1 raz ;). Mały przykład (BASCOM): [syntax=basic4gl]Sd_r1: ' pobiera odpowiedź typu R1 Odpowiedz(1) = 0 Temp = 0 Do Spiin Odpowiedz(1) , 1 ' odczytaj 1 bajt Incr Temp ' zwiększ temp o 1 Loop Until Odpowiedz(1) <> &HFF Or Temp = 250 ' opuść pętle jeżeli wykonasz ją 250 razy lub...
O tak: If temp < -1 then zaswiec else zgas end if A jeszcze lepiej: If temp < -1 then zaswiec else if temp > -1 then zgas end if end if Tylko najpierw musisz mieć dobrze odczytaną temperaturę w zmiennej temp - znajdziesz tu masę przykładów, bo temat wraca co tydzień.
Witam jak wykonać, szczałki sygnalizujące spadek tem i wzrost temp w bascom?? Jak napisać program, aby dobrze on działał i szczałki dobrze wskazywały?
Szybciej zdążyłem napisać samodzielny i działający program niż uzyskałem jakąkolwiek pomoc. Dziękuję serdecznie wszystkim forumowiczom ! :) Zamykam.
Poprawiłem - nie sprawdzałem. Dim Odczyt(2) As Byte dim T As Integer dim T1 As Single dim T2 As Single Dim Temp As Long Do Ds18b20 Print Temp Wait 1 Loop End Sub Ds18b20 1wreset 1wwrite &HCC 1wwrite &H44 Waitms 750 1wreset 1wwrite &HCC 1wwrite &HBE Odczyt(1) = 1wread(2) T = Odczyt(2) Shift T , Left , 8 T = T + Odczyt(1)...
Jeśli testujesz wyżej przytoczony przykład w symulatorze BASCOM'a to dodaj na jego końcu pętlę DO-LOOP lub komendę END i będzie OK. Dim Temp As Integer Dim Disp As String * 5 Temp = 366 'odczytana wartość temperatury Disp = Str(Temp) Disp = Format(Disp , " 0.0") ' dwie spacje (kasowanie zer nieznaczących) + 0.0 Locate...
Witam serdecznie! To jest mój pierwszy post na elektrodzie. Jestem początkującym Bascomowcem. Szukałem długo w necie rozwiązań typu "Tap tempo" dla AVR pod Bascom. Niestety nie było. Napisałem własny programik i działa. 'mój pierwszy program typu "metronom" 'z "nabijaniem tempa 1 przyciskiem 'Działa, ale czy da się prościej? $regfile...
proszę bardzo. 3 minuty razem z sprawdzeniem. $regfile = "m162def.dat" $crystal = 7372800 Dim A$ As String * 20 Dim Temp$ As String * 4 Dim Zmianna_1 As Byte Dim Zmianna_2 as byte Dim Zmianna_3 As Byte Dim Zmianna_4 As Byte A$ = "123.234.213.132" Temp$ = Left(a$ , 3 ) Zmianna_1 = Val(temp$) Temp$ = Mid(a$ , 5...
No to nie poradzisz sobie jak masz takie małe pojęcie Gdzie mogę poczytać coś o tych rezystorach, kondensatorach itp i coś o łączeniu ich, by uzyskać pożądany efekt? Najprostszym do opanowania jest BASCOM-51 lub BASCOM-AVR na początek. O mikrokontrolerach poczytasz na stronach producentów, Atmel lub Microchip
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)...
Mam tylko jeden czujnik na magistrali Ale gdy pozbywam się 1wverify Dsid1(1) to układ nie wyświetla temp.
$regfile = "attiny2313.dat" $crystal = 4000000 Config Portb = Input Portb.0 = 1 Config Portd = Output Portd = &B11111111 Dim Temp As Byte Temp = 1 Do Temp = Temp * 2 If Temp > 80 Then Temp = 1 Portd = Temp Toggle Portd If Pinb.0 = 0 Then Bitwait Pinb.0 , Set End If Waitms 500 Loop End Dodałem znaczniki
Tak to da się zrobić. Godziny 5 bitów, minuty 6 bitów, miesiąc 4 bity, dzień 5 bitów, rodzaj x bitów. Razem 20 bitów + x. Kodowanie: Dim temp as long '.... temp = godziny shift temp, left, 5 temp = temp OR minuty shift temp, left, 6 temp = temp OR miesiac Działa jak widać dodajemy przesuwamy o odpowiednią ilość bitów i następną zmienną dodajemy w puste...
Hej! Zobaczcie jak ja to robię, może komuś sie to przyda: 'Powiedzmy ze zmienna Liczba(single) wynosi 22.62555426 Temp = Int(liczba) ' dzieki temu poleceniu odcinam czesc setna czyli ' zmiennej Temp(byte) przypisuje liczbę 22 Liczba = Frac(liczba) ' dzieki temu poleceniu odcinam czesc ' dziesiętną czyli zmiennej Liczba(single) przypisuje ' liczbe 0.62555426...
Ja zrobilem tak: licz = 789 Setki = Licz / 100 Temp = Licz Mod 100 Dziesiatki = Temp / 10 Jednosci = Temp Mod 10 Reset Wysw3 Liczba = Lookup(jednosci , Znaki) Waitms 3 Set Wysw3 Reset Wysw2 Liczba = Lookup(dziesiatki , Znaki) Waitms 3 Set Wysw2 Reset Wysw1 Liczba = Lookup(setki , Znaki) Waitms 3 Set Wysw1 i dziala bez problemu
Podaj cały kod
Po co się męczyć to tylko kilka linijek w bascomie: Kod archaiczny dla słabeuszy: $regfile = "m128def.dat" $crystal = 8000000 Config Spi = Soft , Din = Pinf.2 , Dout = Portf.0 , Ss = None , Clock = Portf.6 Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Porta.4 , Db5 = Porta.5 , Db6 = Porta.6 , Db7 = Porta.7 , E = Porta.3 , Rs = Porta.2 Config Pinf.6...
Witam, Dawno nie korzystałem z BASCOM'a, więc nie pamiętam już składni, ale algorytm jest następujący: 1) zapisujesz sobie w zmiennej temperaturę w stopniach 2) wykonujesz dzielenie całkowite temperatury przez 10 -> otrzymujesz cyfrę dziesiątki, zapisz do zmiennej x 3) wykonujesz dzielenie modulo temperatury (reszta z dzielenia) przez 10 -> otrzymujesz...
A jak zakomentujesz program między enable a disable interrupts tam gdzie odbierasz temp. z termometru?
A przy Temp: tez wywalić return ?
Poniżej przykład. Zwróć uwagę, że w tym przykładzie komenda konwersji temperatury występuje na końcu, a nie na początku. Odczytana temperatura będzie zatem tą która została konwertowana po poprzednim odczycie. To oczywiście nie ma znaczenia dla tego jak adresować czujniki. Powodzenia ! PL Config 1wire = Portd.6 Dim Adresy(16) As Byte Dim T1 As Byte...
Jeszcze wprowadziłem pewną modyfikację,tak aby kolejny wentylator włączał się dopiero przy wyższej temp. Jest to zrobione poprawnie? To ci może pracowac; czy jest poprawnie?............ Owszem, wentylatory bedą włączac się stopniowo, ale wyłączenie ich nastąpi jednocześnie po osiągnięciu temp poniżej 'min'. Ten fragment programu powyżej może powodowac...
kreska=3 kropki (czasowo) ale dobrze jest dać margines np. ±0.2 na niedokładności operatora nadającego. Odstęp kropka-kreska w znaku = 1 kropka (czasowo) między znakami wyrazu = 3 kropki między wyrazami = 7 kropek tempo nadawania w słowach na minutę: 1 słowo na minutę=czas 50 kropek (tzw. standard Paryski -> słowo PARIS ma 50 kropek. czas kropki=60/(50*WPM)=1.2/WPM...
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...
temperatura początkowwa na jakom jest ustawiony termostst czyta swicze Widzę że kolega ma problem z pisaniem w języku polskim ale do rzeczy... 1wr ma być call 1wr . Założę się że program nie jest twój... Patrząc dalej: If Tust1 > Tust Then Portb.2 = 1 znowu nie zadziała... Co do histerezy to lepiej zrealizuj ją tak: Temp = Temperatura(1)...
Dzielenie przez 16 to to samo co przesuwanie bajtu w prawo o 4. Czyli jest to wywalenie jakby 4 najmłodszych bitów, czyli odczyt temp będzie z dokładnością do 0,5 stopnia. Zajrzyj do notki. 5 najstarszych bitów to znak czy dodatnia czy ujemna, a 4 najmłodsze oznaczają miejsca po przecinku. Rozumiem ze zmiana z systemu binarnego na dziesiętny jest znana?...
No to jak się zastanawiałeś nad tym, to powinieneś zaskoczyć o co chodzi... Po prostu należy najpierw wyłączyć maskowanie roku i dnia tygodnia (więc zamiast 8 do rejestru 0 wpisać wartość 0), potem odczytać cały bajt, zamaskować niepotrzebne bity w danym bajcie: najpierw rok i odczytać dzień miesiąca, potem zamaskować dzień miesiąca i odczytać rok -...
A spróbuj tak: Odczyt=Temp Dim Jednostki As Byte , Dziesiatki As Byte ' cyfry do wyświetlania temperatury Dim Temp As Byte ' temperatura Dim Pompka As Bit ' sterowanie pompką Dim Odczyt As Byte Dim Cyfrybcd As Byte Dim Ktorywysw As Bit Enable Interrupts ' oblokuj przerwania Enable Timer0 'odblokuj timer0 Enable Timer1 'oblokuj timer1 Config Timer0 =...
Pisząc ten program posiłkowałem się książką "BASCOM AVR" i fragment: Osobiście nie rozumiem procedury: Sub Wart_temp(temp As Byte) Temp = Temp And &B00001111 Portd = Portd And &B11110000 Portd = Portd Or Temp End Sub
Nie !!!! Nie w środku pętli to byłoby bez sensu. Ale ja to bym zrobił inaczej [syntax=basic4gl].. .... ...jakieś instrukcje.. .. Dim Pk As Byte Declare Sub PrzyciskC5 Ddrc = &B00000011 Set Portc.5 .... ...jakieś instrukcje.. .. Menu3: Pk = 0 Do Locate 1 , 8 Lcd "T" Start Adc Temp = Getadc(6) Temp = Getadc(6) C = Temp / 4.166 Celsius = Fusing(c , "###.#")...
Witam. Po wgraniu kodu do obsługi czujnika DS18S20 (Bascom), temperatura wyświetla się kilka jako jedności i kilka miejsc po przecinku (dziele przez 16). Jak zmniejszyć wyświetlaną temp do 1 miejsca po przecinku?
No, zrobiłem "przekop" i nigdzie nie znalazłem. Ani w helpie by ZG, ani w helpie do wersji ... JEST. W samplach. '---------------------------------------... 'name : bin2bcd16.bas 'copyright : (c) 1995-2005, MCS Electronics 'purpose : Test program for BIN to BCD Calculations 'suited for demo :...
Niestety na twoim programie też nie działa B Wyświetla "DS18B20" "temp: -0,1*C"
C:\Program Files\MCS Electronics\BASCOM-AVR\SAMPLES\
Ja mam tak (DS18B20) i to chodzi: 1wreset 1wwrite &H55 ' Będę wysyłał adres 1wwrite Adresy(1) , 8 ' Wysyłam adres 1wwrite &HBE ' Komenda dla czujnika o wysłanym adresie Wew(1) = 1wread(9) 1wreset 1wwrite &H55 1wwrite Adresy(9) , 8 1wwrite &HBE Zew(1) = 1wread(9) 1wreset 1wwrite &HCC ' Komenda skip ROM,...
Chce zrobić sobie termometr taki :) temp. na zewnatrz i wewnątrz :)
Sprawdź miernikiem napięcie podawane z LM35 na ADC. Przepisałem ten kod tak by był przejrzystszy. Przy okazji zaoszczędziłem 8% pamięci. To nieistotne. Istotne natomiast jest to, że teraz widać, że układ wyłączy się jeśli odczyt na ADC będzie w zakresie 250-300. Powyżej lub poniżej tego zakresu krążek będzie świecił. [syntax=vbnet]'Program "elektronicznej...
Proponuje dodać dodatkową zmienną pomocniczą której zadaniem będzie pamiętanie że program zaczął działać nie jestem pewien tego rozwiązania z bascomem miałem doczynienia dość dawno temu ale możesz spróbować tego $regfile = "attiny25.dat" $crystal = 4000000 Config Portb.3 = Output 'przekażnik Config Portb.2 = Input 'włącznik typu microswitch...
Czyli z kantońskiego na nasze :): [syntax=basic4gl]Mojazmienna = Pina Licz_jedynki = 0 For Index = 0 To 7 Rotate Mojazmienna , Right Temp = Mojazmienna : Temp = Temp And 1 : Licz_jedynki = Licz_jedynki + Temp Next Index[/syntax]
Hmm.. nie wiem o jakim PDFie mówisz, ale ok :) Rozumie, że to co podesłałeś to fragment kodu, który powinien u siebie podmienić, czyli ten fragment: [syntax=basic4gl]Tempa = Msb * 256 Tempa = Tempa + Lsb If Msb.7 = 0 Then Temp = Tempa / 16 Else Set Minus Tempa = Not Tempa Tempa = Tempa + 1 Temp = Tempa / 16 End If[/syntax] na ten? [syntax=basic4gl]...
Temperatura jest podawana przez DS18xx w kodzie U2. Zacznij od określenia, jaki masz dokładnie typ układu - różne wersje mają nieco różne formaty temperatury. Potem przeczytaj temperaturę do zmiennej 16-bitowej ze znakiem. Jeśli jest ujemna, zaneguj ją, wyświetl minus, a potem wyświetl jej zanegowaną (czyli już dodatnią) wartość. Prawdopodobnie będzie...
Niestety tamto nie zadziałało pojęcia nie mam czemu, ale udało mi się zrobić takie coś jak niżej. Da sie prostym sposobem skrócić zmienną single do postaci xxx.x ?? [syntax=basic4gl]Odczyt = Getadc(0) Temp = Odczyt * 0.0025 Temp_dz = Temp * 100[/syntax]
1) Do Debounce dodaj dopiski SUB 2) Program prawdopodobnie wywala ci się na pierwszym Lookup od setek, szukasz po CYFRA zamiast TEMP (wywalenie to być nie musi ale może być problem) 3) Zrób najprostszy test: wywal te swoje lookupy, przyciski i resztę kombinacji. Na sztywno przypisz cyfry, zrób ich lookup i wyślij na wyświetlacz. Zobacz czy chociaż to...
...I dalej mam takie pytanie czy da się to zrobić prościej Bascom posiada funkcję skoków do podprogramu w/g indeksu. Portc.4 = 1 'podciagam port - przycisk Dim A As Byte , B As Byte Declare Sub Temp Declare Sub Temp2 Declare Sub Nap Declare Sub Przyc Const Maxa = 2 'maksymalna ilosc podprogramow A = 0 : B = 1 Cls Do 'petla glowna Debounce Pinc.4...
PCF pożera max 200µA... Schemat poprawny, można tylko dodać 10µF pomiędzy RESET a GND oraz na wszelki wypadek przycisk reset lub włączyć watchdog'a. Bo jak się zwiesi to pozostanie tylko odłączenie zasilania. Mam gdzieś kilka wersji zegara na pcf'ie z pomiarem temp na DS'ach, ale to dawne czasy i pisane było na 4051, nie na avr'a. Ale jako...
Witam, Piszę program na ATmega128 pod Bascom AVR. Od kilku godzin szukam rozwiązania, jak zrrealizować odczyt czujnika temp. DS18b20 korzystając z przerwań. Czy takie rozwiązanie jest możliwe??
Zmień: Dim Temp As Byte na Dim Temp As long
Witam, O Histerezie też myślałem ale nie za bardzo wiem jak to ugryź w realizacji. Teoretyczne wyglądało by to tak: Zmierz wartość temperatury, porównaj z zapisaną poprzednio w TEMP'ie, jeżeli jest o X procent większa lub mniejsza to zareaguj na to. Ale jak to wykonać w programie?? Nie za bardzo wiem. Prosto. Do histerezy musisz mieć: * dwa poziomy...
Jednak problem był w sofcie... temp, temp2, suma1 zadeklarowane jako single ta sekwensja była przyczyną błędów: ... temp=suma1/255 temp=temp-241.09 ... Zmianiłem ją następująco ... temp=suma1/255 temp2=temp-241.09 temp=temp2 ... i pomogło ... ale czemu?
A jednak są literówki :D I w sumie dzięki temu chyba znalazłem błąd, który rozwiąże całość. Sprawdzałeś 16 bit Send_volume a wcześniej przesuwasz Volume o 16 bitów (co oznacza, że bity jakie sprawdzasz są "0"). Warunek do sprawdzania czy DQ ma być 1/0 musi być [syntax=c]if(Send_volume & 0x80000000)[/syntax] Ja na twoim miejscu zrobiłbym w ogóle...
Przecież można to zrobić prościej: If Temp <= 320 Then 'TEMP WLACZENIA Portx.0 = 1 End If If Temp >= 340 Then 'WYLACZENIA Portx.0 = 0
Tak, oczywiście że temp ma związek z włączaniem wentylatorów w pierwszym "trybie". Drugi (ten który chce dołożyć), ma za zadanie włączać went na określony czas i później przerwa na również określony czas, bez względu na temp (przy temp 10st jak i przy 40st).
Właśnie znalazłem błąd brakowało mi: Config Pinc.5 = Output Bez tego coś przebijało ale nie tak jak powinno teraz jest okej :) Ale jeśli już temat jest założony w jaki sposób sterować obrotami wentylatora? Im większa temp. wieksze obroty wentylatora?
If Nastawa < Temp Then PORTd.5 = 1 End If If Nastawa > Temp Then PORTd.5 = 0 End If
W jaki sposób chcesz kolego je zmieniać? Małe na duże litery i odwrotnie czy coś ambitniejszego? [syntax=vbnet]$regfile = "m48def.dat" $crystal = 8000000 ' 8 MHz crystal Dim X As String * 8 Dim Temp(8) As Byte At X Overlay X = "bla" Print X Temp(2) = 70 Print X End[/syntax]
Przerwania wewnetrzne wykorzystuje, aby skakac do podprogramow gosub. W petli kolejno co 4ms(odczyt, obliczenie obr. i wyswietlenie na lcd), 1s(odczyt temp i wyswietlenie na lcd).
napisz tak Deflcdchar 1 , 6 , 9 , 9 , 6 , 32 , 32 , 32 , 32 ' znak stopni Cls Lcd "Temp =" ; T1 ; Chr(1) ; "C"
Witam Na wyświetlanie cyfr napisałem kiedyś taką procedurkę: wyswietl: ;wyświetla wartość z rejestru temp ldi ZH, high(cyfry<<1);ładuj rejestr Z adresem, pod którym umieszczono ldi ZL, low(cyfry<<1) ;początek tablicy cyfr clr R17 add ZL, temp ;dodaj zawartość rejestru temp (cyfra do wyswietlenia) do wskaźnika...
Temperatura jest wyświetlana prawidłowo. Nie wiem czemu ale załącza się wyjście PB.0, gdy temp. jest ponizej 2 C.
Witam Nie za bardzo kumam tej linijki Jednosci = Temp And &B00001111 na jakiej zasadzie to działa? Pozdrawiam
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...
Tylko jest jedno ale. To zajmuje 45 cykli, czyli tyle ile jakbym to robił po Ifach dla każdego portu. Dodano po 9 Sorki, na ifach byłyby 72 cykle (4 na każdy) A w ilu cyklach musisz sie zmieścic? Możesz sprawdzac instrukcją warunkową nie pojedynczy pin ale cały port wejściowy Np.: [code][syntax=basic4gl] Do If Pinb > 0 Then Flag = 1 Reset Portc.2 Temp...
temperatura alarmu musi być "nastawiana" ? zaoszczędził byś trochę miejsca jak byś np. tak jak ja dał sobie stałą temp. alarmu . twoje demko ma ograniczenie do 4kb ?
Myślę, że najodpowiedniejszym wyborem na początek będzie jakiś mikrokontroler z rodziny AVR z tego względu, że nie są to bardzo skomplikowane układy i pozwolą ci poznać podstawy .Do tego polecam dobrą książkę i tutaj mogę zaproponować: "AVR i ARM7. Programowanie mikrokontrolerów dla każdego" autorstwa Pana Pawła Borkowskiego .Według mnie dla zupełnie...
ja to rozumiem tak: zbyt szybko zapalasz i gasisz diode. Sprawdz czy efekt bedzie taki sam jak w programie zmienisz tempo zapalania sie kolejnych diodek - zwolnisz :) Radzio
Witam Zerknij na mój kod. Procedury napisane są pod AT89S52. ' ten podprogram czyta czas z RTC i wyswietla go na LCD Sub Read_time() I2cstart I2cwbyte 160 I2cwbyte 2 I2cstart I2cwbyte 161 I2crbyte S , Ack I2crbyte M , Ack I2crbyte G , Nack I2cstop Waitms 1 S = Makedec(s) M = Makedec(m) G = Makedec(g) If S = 0 Then Set...
Skompilowało się ale nigdzie nie zapisało . Odpowiedzi brak . Mnie niby też ale niewidem czy kod będzie dzaiałac ,mój sposób to pousuwałem TEMP ZA Ale to chyba nie zbyt dobrze zrobiłem.
Witam. Dzieki za podeslany kod ale wynik jest taki, ze ucieklo czasowo od zbocza opadajacego zegara o okolo 3.25us w prawo na wykresie analizatora. Ekran w zalaczeniu. Teraz cwicze taki sposob wysylania . Ale na dzis chyba juz bedzie koniec. [syntax=BASCOM] Do Waitms 100 'opoznienie petli Temp = &HF059 'tu wartosc wysylana Rf_sck = 0 'zegar w stan niski...
Tak, ale klawiatura jest częściej skanowana i trzeba odczekać jakiś czas aby DS przekonwertował temp. a to przerwanie które używam jest od PCF8583
... może ktoś znajdzie jednak złoty środek na ten problem... Złoty , oznacza kosztowny :D dim T as integer dim tf as integer dim minus as bit dim wynik as string * 6 dim pos as byte ... Read18b20 'odczytaj dane z 1WIRE minus=t.15 T = Abs(t) Tf = T Mod 10 'część ułamkowa T = T / 10 'część całkowita home lcd "Temp: "; wynik=""...
Masz rację - ustawiałem 22. W kodzie nic nie zmienia tej wartości tylko jest wyświetlanajeśli naciśniemy przycisk w sposób: if p1.3=0 then do until p1.3<>0 if temp<26 then temp=temp+1 print str(temp) ' lub podobna instrukcja end if
Zamień temp. odczytaną z DS-a na string a potem skorzystaj z MID i VAL.
Do odczytu nie uzywa sie PORTB.0 tylko PINB.0 temp=PINB.0 waitms 100 PORTB.1= temp Wczesniej deklarujesz temp jako zmienna typu boolean
Z tym "else" to nie tak do końca - próg wyłączania powinien być niżej, niż próg załączania, inaczej, gdy temperatura będzie się wahała w okolicach tych 20 stopni, wskazania będą np. 19,9-20.1, zmieniające się co kilka sekund - i wiatrak oszaleje... czyli coś a'la: if (temp > 20) wlacz(); else if (temp < 19) wylacz();...
Spróbuj użyć tego sposobu obsługi parametrów zapisywanych w EEPROM (traktujesz je jak zwykłe zmienne): Dim Reserved As Eram String * 8 'Przyzwyczajenie ze starych AVRów - zapobiega(ło) utracie danych z początku obszaru EEPROM :) Dim Zmienna1 As Eram Byte Dim Zmienna2 As Eram String * 8 Dim Zmienna3 As Eram Long Dim Temp as Byte [...]...
Problem może być ... sprzętowy. Otóż Tiny2313 fabrycznie ma ustawiony zegar na 8MHz i preskaler zegara na podział przez 8 czyli pracuje na 1MHz. Jeśli nie manipulowałeś z Tinką to nie będzie zgodna rzeczywista częstotliwość taktowania uC z zadeklarowaną w programie. Magistrala 1Wire jest bardzo wrażliwa na czas poszczególnych impulsów i nie zniesie...
Temp. min / max, logowanie temp. wykresy temp. Masz kalendarz zrób możliwość wyświetlania cyklu Swojej (kiedy możecie:P) kobiety na nim cokolwiek:) Możliwości w czort...
Witam Mam podobny problem atmega8 i DS18B20 bascom u mnie dzieje się coś takiego że do 40°C pokazuje dobrą temperature przy rezystorze podciągającym 2,2kΩ ale przy wyższej temperaturze to ją podwaja i tak sobie miga na przemian dobra temp i podwojona, czasem wskoczy jakaś ujemna albo jeszcze coś innego, a przy jeszcze wyższej zrywa komunikację...
Trzeba by zmienić program, aby nie wyświetlał temp. 85°C w pokoju, podanej przez "niezainicjowany" czujnik.
pomiar tempo bascom corolla tempo master tempo
programowanie alarm drzwi wydmuchuje uszczelkę głowicą rozjaśniać monitor
łączenie grzejników łączenie grzejników
Lokalizacja pompy paliwa w Kia Carnival 2007 Jak zdemontować drugi rząd siedzeń w Kia Carnival 2007?