-
Notifications
You must be signed in to change notification settings - Fork 0
/
main.ts
119 lines (119 loc) · 3.28 KB
/
main.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
function AbstandInfoSenden () {
serial.writeString("<")
serial.writeString("Start")
serial.writeString("Sensorabstand ")
serial.writeNumber(Abstand)
serial.writeString(" Millimeter")
serial.writeString(">")
}
function Initialisierung () {
BlinkZeit = 100
LS_Frei = 0
LS_unterbrochen = 1
Schritt = 0
pins.digitalWritePin(DigitalPin.P0, 1)
pins.digitalWritePin(DigitalPin.P1, 0)
pins.digitalWritePin(DigitalPin.P8, 1)
pins.digitalWritePin(DigitalPin.P16, 0)
Abstand = 2000
DatenSendenEinstellen()
}
function BerechneGeschwindigkeit () {
ZeitDifferenz = EndZeit - StartZeit
Geschw_mm_sec = Abstand / ZeitDifferenz
Geschwindigkeit_km_h = Geschw_mm_sec * 36
Geschwindigkeit_km_h = Math.round(Geschwindigkeit_km_h) / 10
}
function PruefeLichtschranke2 () {
if (pins.digitalReadPin(DigitalPin.P11) == LS_unterbrochen) {
EndZeit = control.millis()
pins.digitalWritePin(DigitalPin.P16, 0)
Schritt = 2
}
}
function SendeMesswert () {
serial.writeString("<")
serial.writeString("V=")
serial.writeNumber(Geschwindigkeit_km_h)
serial.writeString(" km/h")
serial.writeString(">")
}
function DatenSendenEinstellen () {
serial.redirect(
SerialPin.P14,
SerialPin.P15,
BaudRate.BaudRate19200
)
}
function GeschwindigkeitMessen () {
if (Schritt == 0) {
MessungStarten()
}
if (Schritt == 1) {
PruefeLichtschranke2()
}
if (Schritt == 2) {
BerechneGeschwindigkeit()
SendeMesswert()
Schritt = 0
pins.digitalWritePin(DigitalPin.P1, 0)
pins.digitalWritePin(DigitalPin.P0, 1)
pins.digitalWritePin(DigitalPin.P8, 1)
basic.pause(100)
}
}
function Blinker () {
if (control.millis() - StartTime > BlinkZeit) {
StartTime = control.millis()
if (LEDEin == 0) {
BlinkZeit = 200
LEDEin = 1
pins.digitalWritePin(DigitalPin.P0, 1)
pins.digitalWritePin(DigitalPin.P1, 1)
pins.digitalWritePin(DigitalPin.P8, 1)
pins.digitalWritePin(DigitalPin.P16, 1)
} else {
BlinkZeit = 800
pins.digitalWritePin(DigitalPin.P0, 0)
pins.digitalWritePin(DigitalPin.P1, 0)
pins.digitalWritePin(DigitalPin.P8, 0)
pins.digitalWritePin(DigitalPin.P16, 0)
LEDEin = 0
}
}
}
function MessungStarten () {
if (pins.digitalReadPin(DigitalPin.P5) == LS_unterbrochen) {
StartZeit = control.millis()
pins.digitalWritePin(DigitalPin.P0, 0)
pins.digitalWritePin(DigitalPin.P1, 1)
pins.digitalWritePin(DigitalPin.P8, 0)
pins.digitalWritePin(DigitalPin.P16, 1)
basic.pause(100)
Schritt = 1
}
}
let LEDEin = 0
let StartTime = 0
let Geschwindigkeit_km_h = 0
let Geschw_mm_sec = 0
let StartZeit = 0
let EndZeit = 0
let ZeitDifferenz = 0
let Schritt = 0
let LS_unterbrochen = 0
let LS_Frei = 0
let BlinkZeit = 0
let Abstand = 0
Initialisierung()
AbstandInfoSenden()
basic.forever(function () {
// Schalter zum Umschalten zwischen Einstellmodus mit blinkenden Lichtschranken
// und
// Geschwindigkeitsmessung
if (pins.digitalReadPin(DigitalPin.P2) == 1) {
Blinker()
} else {
GeschwindigkeitMessen()
}
})