Potrzebny mi jest prosty termometr do auta który mierzyłby temperaturę silnika. W moim aucie jest dziwnie rozwiązane więc wolę zrobic to na wyświetlaczach typu LED.
Znalazłem cosik takiego: http://www.elektroda.pl/rtvforum/topic334889.html
Termometr oparty na DS18B20 oraz na AT90S2313 z kwarcem 4 MHz. Program napisany jest w bascomie. niestety wada jest taka że ten termometr mierzy temperaturę w zakresie 0-99°C
Mi przydałby się zakres ok -15 do 125°C. Z tego co wyczytałem Dallas to wytrzyma więc nie widzę problemu.
Kod: Zaznacz cały
Config Portb = Output
Config Portd = Output
Portb = 255
Portd = 127
Dim Zmienna As Byte
Dim Liczba As Byte
Dim Jednosci As Byte
Dim Dziesiatki As Byte
Dim Temp As Byte
Dim 1cyfra As Byte
Dim 2cyfra As Byte
Dim A As Byte
Dim Odczyt(2) As Byte
Dim T As Integer
Portd.0 = 1
Portd.1 = 0
Config 1wire = Portd.0
Liczba = 77
Do
1wreset : 1wwrite &HCC : 1wwrite &HBE 'polecenie odczytu DS18x20
Odczyt(1) = 1wread(2) 'odczytaj dwa pierwsze bajty - temperaturę
T = Odczyt(2) ' starszy bajt temperatury
Shift T , Left , 8 'przesuń w lewo o 8 miejsc
T = T + Odczyt(1) 'w zmiennej Integer jest dziwna "ułamkowa" wartość
Shift T , Right , 4 'zamiast dzielić przez 16 przesuń w prawo
' Shift T , Right , 1 'dla kostek DS18S20, DS1820 przesuń o 1 bit
1wreset ' dopiero teraz daj polecenie konwersji:
1wwrite &HCC 'polecenie SKIP ROM, bo pojedyncza kostka
1wwrite &H44 ' dokonaj konwersji - zmierz temperaturę
'po cyklu pracy poczekaj
Liczba = T
Gosub Wyswietlanie
Loop
Wyswietlanie:
Portd.1 = 1
Gosub Oblicz
For A = 0 To 125
Dziesiatki:
If Dziesiatki = 0 Then
Portd.6 = 1
Goto Jednosci
End If
Portb = 1cyfra
Portd.6 = 0
Waitms 3
Jednosci:
Portb = 2cyfra
Portd.6 = 1
Portb.0 = 0
Waitms 3
Next A
A = 0
Portd.1 = 0
Return
Oblicz:
Temp = Makebcd(liczba)
Jednosci = Temp And &B00001111
Shift Temp , Right , 4
Dziesiatki = Temp
1cyfra = Lookup(dziesiatki , Tabela)
2cyfra = Lookup(jednosci , Tabela)
'Dziesiatki = Liczba / 10
'Jednosci = Dziesiatki * 10
'Jednosci = Liczba - jednosci
Return
End
Tabela:
Data 3 , 111 , 133 , 37 , 105 , 49 , 17 , 99 , 1 , 33Wiem że to dla połowy z was banalne zadanie ale ja niestety ni w ząb nie umiem pisać tak zaawansowanych programów w BASCOM'ie
Za pomoc oczywiscie się odwzajemnie jeśli tylko będę mógł
P.S Fajnie by było jakby dało radę to przerobic tak aby mierzyło jeszcze napięcie na akumulatorze w samochodzie. Ale to już nie jest konieczne