aboutsummaryrefslogtreecommitdiff
path: root/tk-voltage.h
diff options
context:
space:
mode:
authorSelene ToyKeeper2015-10-03 16:49:41 -0600
committerSelene ToyKeeper2015-10-03 16:49:41 -0600
commitc0aacf8d1161aa7ce341a3332252f623062e2a1a (patch)
treef2a1dab74241f69bb3ce7646fad518186312ced9 /tk-voltage.h
parentmade visually-linear curve function configurable in level_calc.py (diff)
downloadanduril-c0aacf8d1161aa7ce341a3332252f623062e2a1a.tar.gz
anduril-c0aacf8d1161aa7ce341a3332252f623062e2a1a.tar.bz2
anduril-c0aacf8d1161aa7ce341a3332252f623062e2a1a.zip
Added volts+tenths and 8-bar battery check styles.
Reworked how voltage definitions work, and added one for each tenth of a volt. Set default calibration for RMM attiny25V driver. Made battcheck.py output all tenths in a wide range. Changed bistro to use x**3 curve for better mode spacing. Changed bistro's blink() to be compatible with volts+tenths code. Tried to fit volts_tenths into blf-a6 for attiny13a but failed. Made blf-a6 compatible with 8-bar battery check style.
Diffstat (limited to '')
-rw-r--r--tk-voltage.h94
1 files changed, 86 insertions, 8 deletions
diff --git a/tk-voltage.h b/tk-voltage.h
index a335447..5eaf0d4 100644
--- a/tk-voltage.h
+++ b/tk-voltage.h
@@ -48,16 +48,93 @@ inline void ADC_off() {
#endif
#ifdef USE_BATTCHECK
+#ifdef BATTCHECK_4bars
PROGMEM const uint8_t voltage_blinks[] = {
- // 0 blinks for less than 1%
- ADC_0, // 1 blink for 1%-25%
- ADC_25, // 2 blinks for 25%-50%
- ADC_50, // 3 blinks for 50%-75%
- ADC_75, // 4 blinks for 75%-100%
- ADC_100, // 5 blinks for >100%
- 255, // Ceiling, don't remove (6 blinks means "error")
+ // 0 blinks for less than 1%
+ ADC_0p, // 1 blink for 1%-25%
+ ADC_25p, // 2 blinks for 25%-50%
+ ADC_50p, // 3 blinks for 50%-75%
+ ADC_75p, // 4 blinks for 75%-100%
+ ADC_100p, // 5 blinks for >100%
+ 255, // Ceiling, don't remove (6 blinks means "error")
};
-
+#endif // BATTCHECK_4bars
+#ifdef BATTCHECK_8bars
+PROGMEM const uint8_t voltage_blinks[] = {
+ // 0 blinks for less than 1%
+ ADC_30, // 1 blink for 1%-12.5%
+ ADC_33, // 2 blinks for 12.5%-25%
+ ADC_35, // 3 blinks for 25%-37.5%
+ ADC_37, // 4 blinks for 37.5%-50%
+ ADC_38, // 5 blinks for 50%-62.5%
+ ADC_39, // 6 blinks for 62.5%-75%
+ ADC_40, // 7 blinks for 75%-87.5%
+ ADC_41, // 8 blinks for 87.5%-100%
+ ADC_42, // 9 blinks for >100%
+ 255, // Ceiling, don't remove (10 blinks means "error")
+};
+#endif // BATTCHECK_8bars
+#ifdef BATTCHECK_VpT
+/*
+PROGMEM const uint8_t v_whole_blinks[] = {
+ // 0 blinks for (shouldn't happen)
+ 0, // 1 blink for (shouldn't happen)
+ ADC_20, // 2 blinks for 2V
+ ADC_30, // 3 blinks for 3V
+ ADC_40, // 4 blinks for 4V
+ 255, // Ceiling, don't remove
+};
+PROGMEM const uint8_t v_tenth_blinks[] = {
+ // 0 blinks for less than 1%
+ ADC_30,
+ ADC_33,
+ ADC_35,
+ ADC_37,
+ ADC_38,
+ ADC_39,
+ ADC_40,
+ ADC_41,
+ ADC_42,
+ 255, // Ceiling, don't remove
+};
+*/
+PROGMEM const uint8_t voltage_blinks[] = {
+ // 0 blinks for (shouldn't happen)
+ ADC_25,(2<<5)+5,
+ ADC_26,(2<<5)+6,
+ ADC_27,(2<<5)+7,
+ ADC_28,(2<<5)+8,
+ ADC_29,(2<<5)+9,
+ ADC_30,(3<<5)+0,
+ ADC_31,(3<<5)+1,
+ ADC_32,(3<<5)+2,
+ ADC_33,(3<<5)+3,
+ ADC_34,(3<<5)+4,
+ ADC_35,(3<<5)+5,
+ ADC_36,(3<<5)+6,
+ ADC_37,(3<<5)+7,
+ ADC_38,(3<<5)+8,
+ ADC_39,(3<<5)+9,
+ ADC_40,(4<<5)+0,
+ ADC_41,(4<<5)+1,
+ ADC_42,(4<<5)+2,
+ ADC_43,(4<<5)+3,
+ ADC_44,(4<<5)+4,
+ 255, (1<<5)+1, // Ceiling, don't remove
+};
+inline uint8_t battcheck() {
+ // Return an composite int, number of "blinks", for approximate battery charge
+ // Uses the table above for return values
+ // Return value is 3 bits of whole volts and 5 bits of tenths-of-a-volt
+ uint8_t i, voltage;
+ voltage = get_voltage();
+ // figure out how many times to blink
+ for (i=0;
+ voltage > pgm_read_byte(voltage_blinks + i);
+ i += 2) {}
+ return pgm_read_byte(voltage_blinks + i + 1);
+}
+#else // #ifdef BATTCHECK_VpT
inline uint8_t battcheck() {
// Return an int, number of "blinks", for approximate battery charge
// Uses the table above for return values
@@ -69,6 +146,7 @@ inline uint8_t battcheck() {
i ++) {}
return i;
}
+#endif // BATTCHECK_VpT
#endif