Witam, jako, że w szkole nie mam programowania nowych uc postanowiłem się tego sam nauczyć.
Zainspirował mnie projekt prędkościomierza, więc wybrałem go. Jest to mój pierwszy program i dlatego też chcę zapytać czy ma on szanse na poprawne działanie.
Sygnał z czujnika to sygnał z hallotronu, który odbiera sygnał co 1/6 obwodu koła (czyli 0.25m). Reszta przedstawia program. (Jeśli chodzi o ubogie komentarze, to myśle, że program jest na tyle "prosty", że jest przejrzysty i tak.
Zainspirował mnie projekt prędkościomierza, więc wybrałem go. Jest to mój pierwszy program i dlatego też chcę zapytać czy ma on szanse na poprawne działanie.
Sygnał z czujnika to sygnał z hallotronu, który odbiera sygnał co 1/6 obwodu koła (czyli 0.25m). Reszta przedstawia program. (Jeśli chodzi o ubogie komentarze, to myśle, że program jest na tyle "prosty", że jest przejrzysty i tak.
$crystal = 1000000
$regfile = "2313def.dat"
Config Lcd = 16 * 1
Config Lcdpin = Pin , Db4 = Portb.2 , Db5 = Portb.3 , Db6 = Portb.4 , Db7 = Portb.5 , E = Portb.6 , Rs = Portb.7
Config Portb = &B10111111 'Pin Pb.1 jako wejście, reszta jako wyjścia
Config Pind.6 = Input ' wyprowadzenie PD6 jako wejście (przełacznik wyświetlania)
Portb.0 = 0 'Pin wyjścia sygnału do innego układu
Dim Wynik As Long
Dim A As Byte 'do przesuwania wyświetlacza
Config Timer0 = Timer , Prescale = 1024
Config Timer1 = Timer , Prescale = 8
Cls
Initlcd
Lcd "Predkosciomierz"
Wait 1
For A = 0 To 15
Shiftlcd Left
Next
Lcd "V= km/h"
Part1:
Do
Timer0 = 0 'wartość początkowa T0=0
Timer1 = 0 'wartość początkowa T1=0
If Portb.1 = 1 Then 'czekamy na początek sygnału z czujnika
If Portb.1 = 0 Then 'zaczynamy zliczać gdy stracimy sygnał z czujnika
Start Timer1
Start Timer0
End If
If Timer0 = 250 Then 'zbyt długi czas pomiaru
Stop Timer1
Stop Timer0
Cls
Lcd "V=0 km/h"
Goto Part1
End If
Part2:
If Portb.1 = 0 Then 'zapętlam program do czasu aż pojawi się sygnał z czujnika
Goto Part2
Else
Stop Timer0 'Kończymy zliczanie
Stop Timer1
Timer0 = 0
Wynik = Timer1
Wynik = 0.25 / Wynik 'wynik w m/s
End If
If Portd.6 = 0 Then
Wynik = Wynik * 3.6 'wynik w km/h
Cls
Lcd "V=Wynik km/h"
Else
Cls
Lcd "V=Wynik m/s"
End If
If Wynik > 90 Then
Set Portb.0
Cls
Lcd "Zwolnij!"
Waitms 400
Reset Portb.0
Cls
Lcd "V=Wynik"
End If
Else
Goto Part1
End If
Loop
End 'end program