所以,我想做一个洗手液。我有一个超声波传感器。
现在它的工作原理是这样的:当距离低于 5 厘米时,它会倒液体。
我要做的是:当距离<5厘米时,倒入2秒。2 秒过去后,再等待 3 秒,然后再次测量。
例如:我将手放在传感器前面,它会倾倒液体 2 秒钟。之后等待 3 秒,如果距离 < 5 厘米,则可以再次倾倒。
谢谢,这将有很大帮助。我真的不知道如何实现这样的计时器。
所以,我想做一个洗手液。我有一个超声波传感器。
现在它的工作原理是这样的:当距离低于 5 厘米时,它会倒液体。
我要做的是:当距离<5厘米时,倒入2秒。2 秒过去后,再等待 3 秒,然后再次测量。
例如:我将手放在传感器前面,它会倾倒液体 2 秒钟。之后等待 3 秒,如果距离 < 5 厘米,则可以再次倾倒。
谢谢,这将有很大帮助。我真的不知道如何实现这样的计时器。
#define DISTANCE_IN_MM 50u
#define DISPENSE_DURATION_IN_MS 2000u
#define DISPENSE_TIMOUT_IN_MS 3000u
// Function declarations.
//
uint16_t ultrasonic_sensor_get_distance();
void turn_dispenser_on();
void turn_dispenser_off();
void loop()
{
// Poll sensor distance. If under threshold, pour.
//
if (DISTANCE_IN_MM >= ultrasonic_sensor_get_distance())
{
turn_dispenser_on();
delay(DISPENSE_DURATION_IN_MS);
turn_dispenser_off();
delay(DISPENSE_TIMOUT_IN_MS);
}
}