brians | 0ab60bb | 2013-01-31 02:21:51 +0000 | [diff] [blame] | 1 | #ifndef __ANALOG_H__ |
| 2 | #define __ANALOG_H__ |
| 3 | |
Brian Silverman | f92396c | 2013-09-12 20:13:13 -0700 | [diff] [blame] | 4 | #include <stdint.h> |
| 5 | |
Brian Silverman | db85c9a | 2013-11-02 14:38:43 -0700 | [diff] [blame] | 6 | // Internal variable for holding the averaged value. USE analog TO GET TO THIS |
| 7 | // IN CASE IT CHANGES! |
| 8 | uint16_t averaged_values[4]; |
| 9 | |
Brian Silverman | 74acd62 | 2013-10-26 14:47:14 -0700 | [diff] [blame] | 10 | // Starts the hardware constantly doing conversions on all 4 of our analog |
| 11 | // inputs. |
Brian Silverman | 6ad00b8 | 2013-03-27 19:02:38 -0700 | [diff] [blame] | 12 | void analog_init(void); |
Brian Silverman | 74acd62 | 2013-10-26 14:47:14 -0700 | [diff] [blame] | 13 | |
| 14 | // Retrieves the most recent reading on channel (0-3). |
| 15 | // Returns 0xFFFF for invalid channel. |
Brian Silverman | db85c9a | 2013-11-02 14:38:43 -0700 | [diff] [blame] | 16 | // 0 means 0V and 0xFFF means 3.3V. |
| 17 | // These values are run through a low-pass filter with unreasonable readings |
| 18 | // discarded first. |
| 19 | uint16_t analog(int channel) { |
| 20 | if (channel < 0 || channel > 3) return 0xFFFF; |
| 21 | return averaged_values[channel]; |
| 22 | } |
Austin Schuh | 63d0e9b | 2013-03-27 04:43:14 +0000 | [diff] [blame] | 23 | |
Brian Silverman | 6ad00b8 | 2013-03-27 19:02:38 -0700 | [diff] [blame] | 24 | #endif // __ANALOG_H__ |