aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSelene ToyKeeper2015-10-03 16:49:41 -0600
committerSelene ToyKeeper2015-10-03 16:49:41 -0600
commitc0aacf8d1161aa7ce341a3332252f623062e2a1a (patch)
treef2a1dab74241f69bb3ce7646fad518186312ced9
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.
-rw-r--r--tk-calibration.h42
-rw-r--r--tk-voltage.h94
2 files changed, 120 insertions, 16 deletions
diff --git a/tk-calibration.h b/tk-calibration.h
index 37edf76..2b5ff9f 100644
--- a/tk-calibration.h
+++ b/tk-calibration.h
@@ -24,14 +24,40 @@
/********************** Voltage ADC calibration **************************/
// These values were measured using RMM's FET+7135.
// See battcheck/readings.txt for reference values.
-#define ADC_42 195 // the ADC value we expect for 4.20 volts
-#define ADC_100 195 // the ADC value for 100% full (4.2V resting)
-#define ADC_75 186 // the ADC value for 75% full (4.0V resting)
-#define ADC_50 176 // the ADC value for 50% full (3.8V resting)
-#define ADC_25 162 // the ADC value for 25% full (3.5V resting)
-#define ADC_0 138 // the ADC value for 0% full (3.0V resting)
-#define ADC_LOW 129 // When do we start ramping down (2.8V)
-#define ADC_CRIT 124 // When do we shut the light off (2.7V)
+// the ADC values we expect for specific voltages
+#define ADC_44 205
+#define ADC_43 201
+#define ADC_42 196
+#define ADC_41 191
+#define ADC_40 187
+#define ADC_39 182
+#define ADC_38 177
+#define ADC_37 172
+#define ADC_36 168
+#define ADC_35 163
+#define ADC_34 158
+#define ADC_33 153
+#define ADC_32 149
+#define ADC_31 144
+#define ADC_30 139
+#define ADC_29 134
+#define ADC_28 130
+#define ADC_27 125
+#define ADC_26 120
+#define ADC_25 116
+#define ADC_24 111
+#define ADC_23 106
+#define ADC_22 101
+#define ADC_21 97
+#define ADC_20 92
+
+#define ADC_100p ADC_42 // the ADC value for 100% full (resting)
+#define ADC_75p ADC_40 // the ADC value for 75% full (resting)
+#define ADC_50p ADC_38 // the ADC value for 50% full (resting)
+#define ADC_25p ADC_35 // the ADC value for 25% full (resting)
+#define ADC_0p ADC_30 // the ADC value for 0% full (resting)
+#define ADC_LOW ADC_28 // When do we start ramping down
+#define ADC_CRIT ADC_27 // When do we shut the light off
/********************** Offtime capacitor calibration ********************/
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