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......
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ć.
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 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...
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...
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...
1. (pomiar > temp+histereza) -> wyłącz 2. (pomiar < temp-histereza) -> włącz Albert
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ć...
[syntax=c]íf(temp>max)dmuchawa(on); elsé íf(temp<max-híst)dmuchawa(off);[/synt...
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 .
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
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?
Mam tylko jeden czujnik na magistrali Ale gdy pozbywam się 1wverify Dsid1(1) to układ nie wyświetla temp.
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ą :|
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
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ń.
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)...
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...
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...
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...
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....
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...
A jak zakomentujesz program między enable a disable interrupts tam gdzie odbierasz temp. z termometru?
Poprawiłem, po usunięciu return faktycznie zadziałało. Teraz mam problem z wyświetlaniem wyniku, przykładowo jeśli jestem na wyświetlaniu Nap, podłączam baterie 1,4V wynik wyświetla się, ale po odłączeniu baterii dalej zostaje 1,4V. Dopiero po przełączeniu na Temp i znów na Nap pokazuje 0.0V. Jak zrobić, żeby wynik na bieżąco był odświeżany i zczytywany...
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...
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...
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...
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
$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
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...
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...
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
Szybciej zdążyłem napisać samodzielny i działający program niż uzyskałem jakąkolwiek pomoc. Dziękuję serdecznie wszystkim forumowiczom ! :) Zamykam.
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...
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...
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...
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...
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]
Podaj cały kod
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)...
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...
Niestety na twoim programie też nie działa B Wyświetla "DS18B20" "temp: -0,1*C"
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...
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]...
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?...
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?
bascom tempo pomiar tempo bascom corolla tempo
bezpiecznik termiczny przekładniki prądu dopasowanie potencjometru
sterownik pieca thomson 50ud6306
Kody do pilota uniwersalnego dla DVD Manta Piekarnik nie grzeje i nie świeci - możliwe przyczyny i rozwiązania