Update LiPo examples to use PicoGraphics

pull/498/head
helgibbons 2022-08-25 17:11:13 +01:00
rodzic 2cbd710620
commit b8110f3905
3 zmienionych plików z 102 dodań i 44 usunięć

Wyświetl plik

@ -1,28 +1,30 @@
# This example shows how to read the voltage from a LiPo battery connected to a Raspberry Pi Pico via our Pico Lipo SHIM...
# ...and uses this reading to calculate how much charge is left in the battery.
# It then displays the info on the screen of Pico Display or Pico Explorer.
# This example shows how to read the voltage from a LiPo battery connected to a Raspberry Pi Pico via our Pico Lipo SHIM
# and uses this reading to calculate how much charge is left in the battery.
# It then displays the info on the screen of Pico Display.
# Remember to save this code as main.py on your Pico if you want it to run automatically!
from machine import ADC, Pin
import time
# Uncomment one of these lines, depending on what display you have
import picodisplay as display
# import picodisplay2 as display
# import picoexplorer as display
# change to DISPLAY_PICO_DISPLAY_2 for Pico Display 2.0
from picographics import PicoGraphics, DISPLAY_PICO_DISPLAY
display = PicoGraphics(display=DISPLAY_PICO_DISPLAY, rotate=0)
# Set up and initialise display
buf = bytearray(display.get_width() * display.get_height() * 2)
display.init(buf)
display.set_backlight(0.8) # comment out this line if you have a Pico Explorer as it doesn't have a controllable backlight
display.set_backlight(0.8)
vsys = ADC(29) # reads the system input voltage
charging = Pin(24, Pin.IN) # reading GP24 tells us whether or not USB power is connected
vsys = ADC(29) # reads the system input voltage
charging = Pin(24, Pin.IN) # reading GP24 tells us whether or not USB power is connected
conversion_factor = 3 * 3.3 / 65535
full_battery = 4.2 # these are our reference voltages for a full/empty battery, in volts
empty_battery = 2.8 # the values could vary by battery size/manufacturer so you might need to adjust them
# Create some pen colours for drawing with
BLACK = display.create_pen(0, 0, 0)
GREY = display.create_pen(190, 190, 190)
GREEN = display.create_pen(0, 255, 0)
RED = display.create_pen(255, 0, 0)
while True:
# convert the raw ADC read into a voltage, and then a percentage
voltage = vsys.read_u16() * conversion_factor
@ -31,30 +33,25 @@ while True:
percentage = 100.00
# draw the battery outline
display.set_pen(0, 0, 0)
display.set_pen(BLACK)
display.clear()
display.set_pen(190, 190, 190)
display.set_pen(GREY)
display.rectangle(0, 0, 220, 135)
display.rectangle(220, 40, 20, 55)
display.set_pen(0, 0, 0)
display.set_pen(GREEN)
display.rectangle(3, 3, 214, 129)
# draw a green box for the battery level
display.set_pen(0, 255, 0)
display.set_pen(GREEN)
display.rectangle(5, 5, round(210 / 100 * percentage), 125)
# add text
display.set_pen(255, 0, 0)
display.set_pen(RED)
if charging.value() == 1: # if it's plugged into USB power...
display.text("Charging!", 15, 55, 240, 4)
else: # if not, display the battery stats
display.text('{:.2f}'.format(voltage) + "v", 15, 10, 240, 5)
display.text('{:.0f}%'.format(percentage), 15, 50, 240, 5)
# uncomment for low battery alarm (Pico Explorer only, you'll need to have GP0 and AUDIO connected with a jumper wire)
# display.set_audio_pin(0)
# if percentage < 5: # if the battery is less than 5%
# display.set_tone(262) # then make an annoying noise
display.update()
time.sleep(0.5)

Wyświetl plik

@ -1,21 +1,17 @@
# This example reads the voltage from a LiPo battery connected to Pimoroni Pico LiPo...
# ...and uses this reading to calculate how much charge is left in the battery.
# It then displays the info on the screen of Pico Display or Pico Explorer.
# This example reads the voltage from a LiPo battery connected to Pimoroni Pico LiPo
# and uses this reading to calculate how much charge is left in the battery.
# It then displays the info on the screen of Pico Display (or Pico Display 2.0).
# With Pimoroni Pico LiPo, you can read the battery percentage while it's charging.
# Save this code as main.py on your Pico if you want it to run automatically!
from machine import ADC, Pin
import time
# change to DISPLAY_PICO_DISPLAY_2 for Pico Display 2.0
from picographics import PicoGraphics, DISPLAY_PICO_DISPLAY
# Uncomment one of these lines, depending on what display you have
import picodisplay as display
# import picodisplay2 as display
# import picoexplorer as display
display = PicoGraphics(display=DISPLAY_PICO_DISPLAY, rotate=0)
# Set up and initialise display
buf = bytearray(display.get_width() * display.get_height() * 2)
display.init(buf)
display.set_backlight(0.8) # comment out this line if you have a Pico Explorer, it doesn't have a controllable backlight
display.set_backlight(0.8)
vsys = ADC(29) # reads the system input voltage
charging = Pin(24, Pin.IN) # reading GP24 tells us whether or not USB power is connected
@ -24,6 +20,12 @@ conversion_factor = 3 * 3.3 / 65535
full_battery = 4.2 # reference voltages for a full/empty battery, in volts
empty_battery = 2.8 # the values could vary by battery size/manufacturer so you might need to adjust them
# Create some pen colours for drawing with
BLACK = display.create_pen(0, 0, 0)
GREY = display.create_pen(190, 190, 190)
GREEN = display.create_pen(0, 255, 0)
RED = display.create_pen(255, 0, 0)
while True:
# convert the raw ADC read into a voltage, and then a percentage
voltage = vsys.read_u16() * conversion_factor
@ -32,30 +34,25 @@ while True:
percentage = 100
# draw the battery outline
display.set_pen(0, 0, 0)
display.set_pen(BLACK)
display.clear()
display.set_pen(190, 190, 190)
display.set_pen(GREY)
display.rectangle(0, 0, 220, 135)
display.rectangle(220, 40, 20, 55)
display.set_pen(0, 0, 0)
display.set_pen(BLACK)
display.rectangle(3, 3, 214, 129)
# draw a green box for the battery level
display.set_pen(0, 255, 0)
display.set_pen(GREEN)
display.rectangle(5, 5, int((210 / 100) * percentage), 125)
# add text
display.set_pen(255, 0, 0)
display.set_pen(RED)
if charging.value() == 1: # if it's plugged into USB power...
display.text("Charging!", 15, 90, 240, 4)
display.text('{:.2f}'.format(voltage) + "v", 15, 10, 240, 5)
display.text('{:.0f}%'.format(percentage), 15, 50, 240, 5)
# uncomment for low battery alarm (Pico Explorer only, you'll need to have GP0 and AUDIO connected with a jumper wire)
# display.set_audio_pin(0)
# if percentage < 5: # if the battery is less than 5%
# display.set_tone(262) # then make an annoying noise
display.update()
time.sleep(0.5)

Wyświetl plik

@ -0,0 +1,64 @@
# This example reads the voltage from a LiPo battery connected to Pimoroni Pico LiPo
# and uses this reading to calculate how much charge is left in the battery.
# It then displays the info on the screen of Pico Explorer.
# With Pimoroni Pico LiPo, you can read the battery percentage while it's charging.
# Save this code as main.py on your Pico if you want it to run automatically!
from machine import ADC, Pin
import time
from pimoroni import Buzzer
from picographics import PicoGraphics, DISPLAY_PICO_EXPLORER
display = PicoGraphics(display=DISPLAY_PICO_EXPLORER)
buzzer = Buzzer(0)
vsys = ADC(29) # reads the system input voltage
charging = Pin(24, Pin.IN) # reading GP24 tells us whether or not USB power is connected
conversion_factor = 3 * 3.3 / 65535
full_battery = 4.2 # reference voltages for a full/empty battery, in volts
empty_battery = 2.8 # the values could vary by battery size/manufacturer so you might need to adjust them
# Create some pen colours for drawing with
BLACK = display.create_pen(0, 0, 0)
GREY = display.create_pen(190, 190, 190)
GREEN = display.create_pen(0, 255, 0)
RED = display.create_pen(255, 0, 0)
while True:
buzzer.set_tone(0)
# convert the raw ADC read into a voltage, and then a percentage
voltage = vsys.read_u16() * conversion_factor
percentage = 100 * ((voltage - empty_battery) / (full_battery - empty_battery))
if percentage > 100:
percentage = 100
# draw the battery outline
display.set_pen(BLACK)
display.clear()
display.set_pen(GREY)
display.rectangle(0, 0, 220, 135)
display.rectangle(220, 40, 20, 55)
display.set_pen(BLACK)
display.rectangle(3, 3, 214, 129)
# draw a green box for the battery level
display.set_pen(GREEN)
display.rectangle(5, 5, int((210 / 100) * percentage), 125)
# add text
display.set_pen(RED)
if charging.value() == 1: # if it's plugged into USB power...
display.text("Charging!", 15, 90, 240, 4)
display.text('{:.2f}'.format(voltage) + "v", 15, 10, 240, 5)
display.text('{:.0f}%'.format(percentage), 15, 50, 240, 5)
# Low battery alarm! (you'll need to have GP0 and AUDIO connected with a jumper wire)
if percentage < 5: # if the battery is less than 5%
buzzer.set_tone(262) # then make an annoying noise
display.update()
time.sleep(0.5)