Created
November 13, 2025 19:39
-
-
Save stanelie/1facea9d41149cf4a0fa80122a1459ad to your computer and use it in GitHub Desktop.
badger2040 battery level
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| from machine import ADC, Pin | |
| import time | |
| import badger2040 | |
| import badger_os | |
| display = badger2040.Badger2040() | |
| display.set_font("bitmap8") | |
| display.set_update_speed(badger2040.UPDATE_FAST) | |
| display.led(128) | |
| WIDTH = badger2040.WIDTH | |
| display.set_pen(15) | |
| display.clear() | |
| display.set_pen(0) | |
| def get_battery_voltage(): | |
| vref_power = Pin(27, Pin.OUT) | |
| vref_power.value(1) | |
| adc_vbat = ADC(29) | |
| time.sleep(0.3) | |
| conversion_factor = 3.3 / 65535 | |
| voltage_divider_ratio = 3.0 | |
| # reading = sum(adc_vbat.read_u16() for _ in range(10)) / 10 | |
| reading = 0 | |
| for _ in range(5): | |
| reading += adc_vbat.read_u16() | |
| reading /= 5 | |
| voltage = reading * conversion_factor * voltage_divider_ratio | |
| vref_power.value(0) | |
| MIN_VOLTS = 3.2 | |
| MAX_VOLTS = 4.1 | |
| percent = int(max(0, min(100, (voltage - MIN_VOLTS) / (MAX_VOLTS - MIN_VOLTS) * 100))) | |
| return percent | |
| percent = get_battery_voltage() | |
| display.set_pen(15) | |
| display.clear() | |
| display.set_pen(0) | |
| display.text(f"battery level is {percent}%", 200, 0, WIDTH, 1.0) | |
| display.update() | |
| display.led(0) | |
| display.halt() | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment