Witam.
Przeszukałem już forum, ale nie rozwiązałem problemu.
Chcę zrobić komputer spalania do samochodu. Najpierw zaczynam od pomiaru prędkości, bo bez tego nie policzy się spalania. Od razu trafiłem na problemy.
Kod:
Problem polega na tym, ze mnożenie razy stałą 2,82 powoduje wyświetlanie prędkości co 3km/h. Jedyne co wymyśliłem, to robić pomiar co 2 sekundy, wtedy mnożnik wyniesie 0,7 i prędkość powinna się zmieniać już co 1km/h, ale to jest ślepa uliczka, bo pomiar co 2s jest zbyt wolny. Kolega Pfemek ,robił pomiar nawet co 0,25s i miał mnożnik 0.9, ale wynikało to z tego że miał stałą drogi 16imp/m. Ja mam stałą 255imp/100m (trochę nietypowa).
Proszę o pomoc, jak rozwiązać sprawę częstszego pomiaru i większej rozdzielczości pomiaru.
Pozdrawiam
Przeszukałem już forum, ale nie rozwiązałem problemu.
Chcę zrobić komputer spalania do samochodu. Najpierw zaczynam od pomiaru prędkości, bo bez tego nie policzy się spalania. Od razu trafiłem na problemy.
Kod:
$regfile = "m8def.dat"
$crystal = 4000000
''''''''''''''''''''''''''konfiguracja portów''''''''''''''''''''''''''''''''''
Config Portd = &B11000000
Config Portb = Output
Config Portc = &B00010000
''''''''''''''''''''''''''''konfiguracja LCD'''''''''''''''''''''''''''''''''''
Config Lcdbus = 4
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Pb.2 , Db5 = Pb.3 , Db6 = Pb.4 , Db7 = Pb.5 , E = Pb.1 , Rs = Pb.0
Cursor Off
Cls
'''''''''''''''''''''''''konfiguracja zmiennych''''''''''''''''''''''''''''''''
Dim Predkosc As Byte
Dim Imppr As Byte
Dim Droga As Word
Dim Dystans As Long
Dim Drogastr As String * 6
Config Timer1 = Timer , Prescale = 64
Config Timer0 = Counter , Edge = Falling
''''''''''''''''''''''''''''program główny'''''''''''''''''''''''''''''''''''''
Cls
Tcnt0 = 0
Start Timer0
Start:
Timer1 = 0
Start Timer1
Do
Loop Until Timer1 = 33249 '0.5s
Stop Timer1
Imppr = Tcnt0
Predkosc = Imppr * 2.82 ' (2 [pomiary/1s] * (3600s/1000m)[przelicznik na km/h] )/(255imp/100m)[stala drogi] = 2,82
Cls
Lcd "Predkosc:" ; Predkosc ; "km/h"
Drogastr = Str(dystans)
Drogastr = Format(drogastr , " 0.0")
Lowerline
Lcd "Droga:"
Lcd " " ; Drogastr ; " km"
Imppr = 0
Droga = Droga + Tcnt0
If Droga >= 255 Then
Incr Dystans
Droga = Droga - 255
End If
Tcnt0 = 0
Goto Start
End
Problem polega na tym, ze mnożenie razy stałą 2,82 powoduje wyświetlanie prędkości co 3km/h. Jedyne co wymyśliłem, to robić pomiar co 2 sekundy, wtedy mnożnik wyniesie 0,7 i prędkość powinna się zmieniać już co 1km/h, ale to jest ślepa uliczka, bo pomiar co 2s jest zbyt wolny. Kolega Pfemek ,robił pomiar nawet co 0,25s i miał mnożnik 0.9, ale wynikało to z tego że miał stałą drogi 16imp/m. Ja mam stałą 255imp/100m (trochę nietypowa).
Proszę o pomoc, jak rozwiązać sprawę częstszego pomiaru i większej rozdzielczości pomiaru.
Pozdrawiam