Skip to content

Instantly share code, notes, and snippets.

@stanelie
Created November 13, 2025 19:39
Show Gist options
  • Select an option

  • Save stanelie/1facea9d41149cf4a0fa80122a1459ad to your computer and use it in GitHub Desktop.

Select an option

Save stanelie/1facea9d41149cf4a0fa80122a1459ad to your computer and use it in GitHub Desktop.
badger2040 battery level
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