Add ultrasonic and gyro (untested)
This commit is contained in:
parent
babdf45fc3
commit
d3263d8456
@ -24,7 +24,6 @@ namespace input {
|
||||
export class ColorSensor extends internal.UartSensor {
|
||||
constructor() {
|
||||
super()
|
||||
this.mode = ColorSensorMode.Reflect
|
||||
}
|
||||
|
||||
_deviceType() {
|
||||
|
@ -29,6 +29,8 @@ const enum LMS {
|
||||
DEVICE_TYPE_NEWTACHO = 9,
|
||||
DEVICE_TYPE_TOUCH = 16,
|
||||
DEVICE_TYPE_COLOR = 29,
|
||||
DEVICE_TYPE_ULTRASONIC = 30,
|
||||
DEVICE_TYPE_GYRO = 32,
|
||||
DEVICE_TYPE_IR = 33,
|
||||
DEVICE_TYPE_THIRD_PARTY_START = 50,
|
||||
DEVICE_TYPE_THIRD_PARTY_END = 99,
|
||||
|
34
libs/core/gyro.ts
Normal file
34
libs/core/gyro.ts
Normal file
@ -0,0 +1,34 @@
|
||||
const enum GyroSensorMode {
|
||||
None = -1,
|
||||
Angle = 0,
|
||||
Rate = 1,
|
||||
}
|
||||
|
||||
namespace input {
|
||||
export class GyroSensor extends internal.UartSensor {
|
||||
constructor() {
|
||||
super()
|
||||
}
|
||||
|
||||
_deviceType() {
|
||||
return LMS.DEVICE_TYPE_GYRO
|
||||
}
|
||||
|
||||
setMode(m: GyroSensorMode) {
|
||||
this._setMode(m)
|
||||
}
|
||||
|
||||
getAngle() {
|
||||
this.setMode(GyroSensorMode.Angle)
|
||||
return this.getNumber(NumberFormat.Int16LE, 0)
|
||||
}
|
||||
|
||||
getRate() {
|
||||
this.setMode(GyroSensorMode.Rate)
|
||||
return this.getNumber(NumberFormat.Int16LE, 0)
|
||||
}
|
||||
}
|
||||
|
||||
//% whenUsed
|
||||
export const gyro: GyroSensor = new GyroSensor()
|
||||
}
|
@ -18,6 +18,8 @@
|
||||
"input.ts",
|
||||
"ir.ts",
|
||||
"color.ts",
|
||||
"gyro.ts",
|
||||
"ultrasonic.ts",
|
||||
"touch.ts",
|
||||
"shims.d.ts",
|
||||
"enums.d.ts",
|
||||
|
22
libs/core/ultrasonic.ts
Normal file
22
libs/core/ultrasonic.ts
Normal file
@ -0,0 +1,22 @@
|
||||
namespace input {
|
||||
|
||||
export class UltraSonicSensor extends internal.UartSensor {
|
||||
constructor() {
|
||||
super()
|
||||
}
|
||||
|
||||
_deviceType() {
|
||||
return LMS.DEVICE_TYPE_ULTRASONIC
|
||||
}
|
||||
|
||||
/** Get distance in mm */
|
||||
getDistance() {
|
||||
// it supposedly also has an inch mode, but we stick to mm
|
||||
this._setMode(0)
|
||||
return this.getNumber(NumberFormat.UInt16LE, 0) & 0x0fff
|
||||
}
|
||||
}
|
||||
|
||||
//% whenUsed
|
||||
export const ultrasonic: UltraSonicSensor = new UltraSonicSensor()
|
||||
}
|
Loading…
Reference in New Issue
Block a user