-
Notifications
You must be signed in to change notification settings - Fork 0
/
main.ts
41 lines (38 loc) · 1.17 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
enum SensorUnit {
//% block="mg"
MicroSeconds, //edited
//% block="g"
Centimeters,
//% block="kg"
Inches
}
/**
* Sonar and ping utilities
*/
//% color="#f66618" weight=10 icon="\uf24e"
namespace hx711 {
/**
* Send a ping and get the echo time (in microseconds) as a result
* @param SCK SCK pin
* @param DT DT pin
* @param unit desired conversion unit
* @param maxCmDistance maximum distance in centimeters (default is 500)
*/
//% blockId=sonar_ping block="HX711 Width test SCK %SCK|DT %DT|unit %unit"
export function ping(SCK: DigitalPin, DT: DigitalPin, unit: SensorUnit, maxCmDistance = 500): number {
// send pulse
pins.setPull(SCK, PinPullMode.PullNone);
pins.digitalWritePin(SCK, 0);
control.waitMicros(2);
pins.digitalWritePin(SCK, 1);
control.waitMicros(10);
pins.digitalWritePin(SCK, 0);
// read pulse
const d = pins.pulseIn(DT, PulseValue.High, maxCmDistance * 58);
switch (unit) {
case SensorUnit.Centimeters: return d / 58;
case SensorUnit.Inches: return d / 148;
default: return d ;
}
}
}