Fix ultrasonic value to use cm instead of 0.1 cm units (#110)
* Fix simulator * use 250 instead of 255
This commit is contained in:
parent
b07f157181
commit
0529759a80
@ -25,7 +25,7 @@ namespace sensors {
|
|||||||
}
|
}
|
||||||
|
|
||||||
_query(): number {
|
_query(): number {
|
||||||
return this.getNumber(NumberFormat.UInt16LE, 0) & 0x0fff;
|
return (this.getNumber(NumberFormat.UInt16LE, 0) & 0x0fff) * 0.1; // range is 0..2550, in 0.1 cm increments.
|
||||||
}
|
}
|
||||||
|
|
||||||
_update(prev: number, curr: number) {
|
_update(prev: number, curr: number) {
|
||||||
@ -86,7 +86,7 @@ namespace sensors {
|
|||||||
distance(): number {
|
distance(): number {
|
||||||
// it supposedly also has an inch mode, but we stick to cm
|
// it supposedly also has an inch mode, but we stick to cm
|
||||||
this._setMode(0)
|
this._setMode(0)
|
||||||
return this.getNumber(NumberFormat.UInt16LE, 0) & 0x0fff; // range is 0..255
|
return (this.getNumber(NumberFormat.UInt16LE, 0) & 0x0fff) * 0.1; // range is 0..2550, in 0.1 cm increments.
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -38,7 +38,7 @@ namespace pxsim {
|
|||||||
data[AnalogOff.InConn + port] = node.isUart() ? DAL.CONN_INPUT_UART : DAL.CONN_INPUT_DUMB;
|
data[AnalogOff.InConn + port] = node.isUart() ? DAL.CONN_INPUT_UART : DAL.CONN_INPUT_DUMB;
|
||||||
if (node.isAnalog() && node.hasData()) {
|
if (node.isAnalog() && node.hasData()) {
|
||||||
//data[AnalogOff.InPin6 + 2 * port] = node.getValue();
|
//data[AnalogOff.InPin6 + 2 * port] = node.getValue();
|
||||||
util.map16Bit(data, AnalogOff.InPin6 + 2 * port, node.getValue())
|
util.map16Bit(data, AnalogOff.InPin6 + 2 * port, Math.floor(node.getValue()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -91,7 +91,7 @@ namespace pxsim {
|
|||||||
if (node) {
|
if (node) {
|
||||||
// Actual
|
// Actual
|
||||||
const index = 0; //UartOff.Actual + port * 2;
|
const index = 0; //UartOff.Actual + port * 2;
|
||||||
data[UartOff.Raw + DAL.MAX_DEVICE_DATALENGTH * 300 * port + DAL.MAX_DEVICE_DATALENGTH * index] = node.getValue();
|
util.map16Bit(data, UartOff.Raw + DAL.MAX_DEVICE_DATALENGTH * 300 * port + DAL.MAX_DEVICE_DATALENGTH * index, Math.floor(node.getValue()))
|
||||||
// Status
|
// Status
|
||||||
data[UartOff.Status + port] = node.valueChange() ? UartStatus.UART_PORT_CHANGED : UartStatus.UART_DATA_READY;
|
data[UartOff.Status + port] = node.valueChange() ? UartStatus.UART_PORT_CHANGED : UartStatus.UART_DATA_READY;
|
||||||
}
|
}
|
||||||
|
@ -4,7 +4,7 @@ namespace pxsim {
|
|||||||
export class UltrasonicSensorNode extends UartSensorNode {
|
export class UltrasonicSensorNode extends UartSensorNode {
|
||||||
id = NodeType.UltrasonicSensor;
|
id = NodeType.UltrasonicSensor;
|
||||||
|
|
||||||
private distance: number = 50;
|
private distance: number = 127; // in cm
|
||||||
|
|
||||||
constructor(port: number) {
|
constructor(port: number) {
|
||||||
super(port);
|
super(port);
|
||||||
@ -25,7 +25,7 @@ namespace pxsim {
|
|||||||
}
|
}
|
||||||
|
|
||||||
getValue() {
|
getValue() {
|
||||||
return this.distance;
|
return this.distance * 10; // convert to 0.1 cm
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -1,7 +1,7 @@
|
|||||||
namespace pxsim.util {
|
namespace pxsim.util {
|
||||||
|
|
||||||
export function map16Bit(buffer: Uint8Array, index: number, value: number) {
|
export function map16Bit(buffer: Uint8Array, index: number, value: number) {
|
||||||
buffer[index] = (value >> 8) & 0xff;
|
buffer[index] = value & 0xFF;
|
||||||
buffer[index+1] = value & 0xff;
|
buffer[index + 1] = (value >> 8) & 0xFF;
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -83,8 +83,8 @@ namespace pxsim.visuals {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
const node = this.state;
|
const node = this.state;
|
||||||
const percentage = node.getValue();
|
const percentage = node.getValue() / 10; /* convert back to cm */
|
||||||
const y = this.getContentHeight() * percentage / 100;
|
const y = this.getContentHeight() * percentage / this.getMax();
|
||||||
this.slider.setAttribute("transform", `translate(0, ${y - DistanceSliderControl.SLIDER_HANDLE_HEIGHT / 2})`);
|
this.slider.setAttribute("transform", `translate(0, ${y - DistanceSliderControl.SLIDER_HANDLE_HEIGHT / 2})`);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -104,7 +104,15 @@ namespace pxsim.visuals {
|
|||||||
let t = Math.max(0, Math.min(1, (this.getTopPadding() + height + this.top / this.scaleFactor - cur.y / this.scaleFactor) / height))
|
let t = Math.max(0, Math.min(1, (this.getTopPadding() + height + this.top / this.scaleFactor - cur.y / this.scaleFactor) / height))
|
||||||
|
|
||||||
const state = this.state;
|
const state = this.state;
|
||||||
state.setDistance((1 - t) * (100));
|
state.setDistance((1 - t) * (this.getMax()));
|
||||||
|
}
|
||||||
|
|
||||||
|
private getMin() {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
private getMax() {
|
||||||
|
return 250; //cm
|
||||||
}
|
}
|
||||||
|
|
||||||
private getGradientDefinition(): LinearGradientDefinition {
|
private getGradientDefinition(): LinearGradientDefinition {
|
||||||
|
Loading…
Reference in New Issue
Block a user