 #include "RPMWS2812.h"
 
 #define SERIAL_BAUD_RATE 115200
-#define STARTING_BRIGHTNESS 150 //Out of 255
+#define STARTING_BRIGHTNESS 100 //Out of 255
 
 #define ANIMATION_STEPS 6000
-#define DEMO_RPM_RANGE 19000
-
-#define ANIMATION_DURATION 12000
+#define DEMO_RPM_RANGE 18000
+
+#define ANIMATION_DURATION 15000
 #define ANIMATION_UPDATE_INTERVAL 5
 #define DEMO_RPM_UPDATE_INTERVAL  5
 #define DEMO_LED_UPDATE_INTERVAL 100

	Success = RPMDriver.Begin();
	RPMDriver.SetDesignModel(SUB_PIXEL_ENABLED | BACKGROUND_ENABLED);// | SUB_PIXEL_HIGH_RANGE_ENABLED | BACKGROUND_ENABLED);
	RPMDriver.SetBrightness(GlobalBrightness);
	RPMDriver.SetRangeRPM(600, 15000);
	RPMDriver.ClearSections();

	RPMDriver.SetAlertBlink(HIGH_COLOUR, ALERT_PULSE_MILLIS, ALERT_PULSE_DUTY_CYCLE);

	//RPMDriver.SetExtendedOverflowRange(constrain(GlobalBrightness + 50, 0, 255));

	RPMDriver.SetSection(0, MEDIUM_RPM / 2, LOW_COLOUR, BACKGROUND_COLOUR);
	RPMDriver.SetSection(MEDIUM_RPM / 2, MEDIUM_RPM, cHSV(300, 254, 254), BACKGROUND_COLOUR);
	RPMDriver.SetSection(MEDIUM_RPM, HIGH_RPM, MEDIUM_COLOUR, BACKGROUND_COLOUR);
	RPMDriver.SetSection(HIGH_RPM, MAX_RPM, HIGH_COLOUR, BACKGROUND_COLOUR);//, { 120,255,1 }
	RPMDriver.BootAnimation(LOW_COLOUR);

}

void loop()

#define MAX_RPM 15000

#define ALERT_PULSE_MILLIS 110
#define ALERT_PULSE_DUTY_CYCLE 127
#define ALERT_MIN_BRIGHTNESS 60

#define DEAD_COLOR cHSV(225, 255, 255)
#define DEAD_PULSE_DURATION 1000

#define LOW_COLOUR cHSV(240, 255, 255)
#define MEDIUM_COLOUR cHSV(100, 255, 255)
#define HIGH_COLOUR cHSV(120, 255, 255)
#define BACKGROUND_COLOUR cHSV(240, 0, 0)
#define LED_MIN_BRIGHTNESS_VALUE 20


