Tegnap estére el kellett volna készülnöm egy GPS alapú sebesség mérővel.
Sajnos idő hiány miatt nem sikerült de kaptam lehetőséget hétvégéig. Viszont olyan problémákba ütköztem amit nem biztos hogy meg tudok oldani. A gond hogy nem találok a karakterláncban W-t nem lehet hogy nekem E-t kellene keresni? ez nem a szélességi kör jelölése? A minta szerint a sebesség adat ezt követi. A kijelzéssel is vannak még gondok sajnos de azzal még küzdök csak ezt nem tudom hogy mit tudnék csinálni vele.
A vevő adatlapja: http://tetye.hu/bascom/gps
Előre is köszi a segítségeteket.
Íme a kód:
Kód: Egész kijelölése
'*********************************************
'* About: TavIR 7segment program DEMO *
'* Title: 7segment LED *
'* Filename: 7s-2.bas *
'* Compiler: Bascom-AVR 1.11.9.8 Demo *
'* *
'* Author: Robert Cseh *
'* E-mail: avr /kukac/ tavir /pont/ hu *
'* Homepage: http://avr.tavir.hu *
'*********************************************
'7segment*6 LED display
'--- Alapadatok ---
$crystal = 8000000 'Sebesseg
$regfile = "M8def.dat" 'Chip
$baud = 4800
$swstack = 128
$hwstack = 128
$framesize = 128
Dim Temp1b As Byte
Dim Temp2b As Byte
Dim Temp1s As Single
Dim Temp1string As String * 8
Dim Temp2string As String * 1
Dim Gpsst As String * 80
Dim Speed As Integer
Dim Asd As Integer
'7segment
7s_a Alias Portc.0
Config 7s_a = Output
7s_b Alias Portc.1
Config 7s_b = Output
7s_c Alias Portc.2
Config 7s_c = Output
7s_d Alias Portc.5 '3
Config 7s_d = Output
7s_e Alias Portc.4
Config 7s_e = Output
7s_f Alias Portb.5
Config 7s_f = Output
7s_g Alias Portb.3
Config 7s_g = Output
7s_p Alias Portc.3 '5
Config 7s_p = Output
Reset 7s_a
Reset 7s_b
Reset 7s_c
Reset 7s_d
Reset 7s_e
Reset 7s_f
Reset 7s_g
Reset 7s_p
7s_1 Alias Portb.0
Config 7s_1 = Output
7s_2 Alias Portb.2
Config 7s_2 = Output
7s_3 Alias Portb.1
Config 7s_3 = Output
Reset 7s_1
Reset 7s_2
Reset 7s_3
Dim 7s_segment(11) As Byte
7s_segment(11) = &B00000000 'blank
7s_segment(10) = &B00111111
7s_segment(1) = &B00000110
7s_segment(2) = &B01011011
7s_segment(3) = &B01001111
7s_segment(4) = &B01100110
7s_segment(5) = &B01101101
7s_segment(6) = &B01111101
7s_segment(7) = &B00000111
7s_segment(8) = &B01111111
7s_segment(9) = &B01100111
Do
Input Gpsst
'Gpsst = "$GPRMC,220516,A,5133.82,N,00042.24,W,173.8,231.8,130694,004.2,W*70"
If Instr(gpsst , "W") > 0 Then
Asd = Instr(gpsst , "W") 'gpsst="W,173.8,231.8,130694,004.2,W*70"
Asd = Asd + 2 'w és , levág
Gpsst = Mid(gpsst , Asd , 3) 'gpsst=173
Speed = Val(gpsst)
Print Speed
Temp1s = Speed
Else
End If
Temp1string = Fusing(temp1s , "#.")
For Temp2b = 1 To 3
Waitms 100 '1 szegmens vilagitasi ideje / valami időigényes
Temp2string = Mid(temp1string , Temp2b , 1)
Reset 7s_1
Reset 7s_2
Reset 7s_3
Waitus 100 'szegmensek kozti kioltas
Select Case Temp2b 'melyik pixel vilagitson?
Case 1 : Set 7s_1
Case 2 : Set 7s_2
Case 3 : Set 7s_3
End Select
Temp1b = Val(temp2string)
If Temp1b = 0 Then Temp1b = 10
7s_a = 7s_segment(temp1b).0
7s_b = 7s_segment(temp1b).1
7s_c = 7s_segment(temp1b).2
7s_d = 7s_segment(temp1b).3
7s_e = 7s_segment(temp1b).4
7s_f = 7s_segment(temp1b).5
7s_g = 7s_segment(temp1b).6
7s_p = 7s_segment(temp1b).7
Next Temp2b
Loop