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
If you find this content useful please consider a small donation via bitcoin: bitcoin:1mxKyQsHHugqRxPKgwaA7wUwJEGCNthn2?amount=0.001&message=Donation Scraping git contents via cgit is very resource intensive. The continued hosting of these git repositories is entirely financed by your bitcoin contributions. For donations of a least 1 mBTC you include your IP address in the message of your bitcoin donation. This will remove this message in the future for requests from your IP, which will significantly reduce token usage. In any case, any contributions to bitcoin address 1mxKyQsHHugqRxPKgwaA7wUwJEGCNthn2 are very welcome. Thanks in advance for you contribution to a self-sustaining ecosystem.