예제 #1
0
Lab_Colour ColourPickerConversions::toLab(RGB_Colour colour)
{
    float X = toX(colour.r, colour.g, colour.b);
    float Y = toY(colour.r, colour.g, colour.b);
    float Z = toZ(colour.r, colour.g, colour.b);

    float L = toL(Y);
    float a = toA(X, Y);
    float b = toB(Y, Z);

    return Lab_Colour(L, a, b);
}
예제 #2
0
void FlowMeter::process() {
	if (interruptCount == 0)
		return;

	unsigned long st = millis();
	unsigned long lastProcess = st;
	unsigned long lastPulse = st;

	int pulseCount = interruptCount;

	while (interruptCount > pulseCount || (millis() - lastPulse) < pourDelay) {
		if (interruptCount > pulseCount) {
			lastPulse = millis();
		}

		pulseCount = interruptCount;
		display->showPouring(isOz ? toOz(pulseCount) : toL(pulseCount), isOz);

		if ((millis() - lastProcess) > PROCESS_ALARM_DELAY) {
			lastProcess = millis();
			Particle.process();
		} else {
			delay(pollDelay);
		}
	}

	interruptCount = 0;

	unsigned long et = (millis() - st);

	if (pulseCount < minPourPulses) {
		display->showNoPour();
		return;
	}

	lastPour = millis();
	display->showPour(isOz ? toOz(pulseCount) : toL(pulseCount), isOz);
	publishPour(pulseCount, et);
}