badges/accel3d_pybadge.go
Daniel Esteban b5e08452b6 added files
2026-04-14 19:21:59 +02:00

86 lines
1.9 KiB
Go

//go:build pybadge
// +build pybadge
package main
import (
"image/color"
"machine"
"time"
"tinygo.org/x/tinydraw"
"tinygo.org/x/tinyfont"
"tinygo.org/x/tinyfont/proggy"
)
func Accel3D() {
white := color.RGBA{255, 255, 255, 255}
red := color.RGBA{255, 0, 0, 255}
green := color.RGBA{0, 255, 0, 255}
blue := color.RGBA{0, 0, 255, 255}
black := color.RGBA{0, 0, 0, 255}
display.FillScreen(white)
tinydraw.Rectangle(&display, 26, 30, 132, 7, black)
tinydraw.Rectangle(&display, 26, 40, 132, 7, black)
tinydraw.Rectangle(&display, 26, 50, 132, 7, black)
tinyfont.WriteLine(&display, &proggy.TinySZ8pt7b, 10, 80, "Move the PyBadge to see", black)
tinyfont.WriteLine(&display, &proggy.TinySZ8pt7b, 14, 90, "the accelerometer in", black)
tinyfont.WriteLine(&display, &proggy.TinySZ8pt7b, 60, 100, "action.", black)
tinyfont.WriteLine(&display, &proggy.TinySZ8pt7b, 8, 36, "X:", black)
tinyfont.WriteLine(&display, &proggy.TinySZ8pt7b, 8, 46, "Y:", black)
tinyfont.WriteLine(&display, &proggy.TinySZ8pt7b, 8, 56, "Z:", black)
x, y, z := accel.ReadRawAcceleration()
for {
pressed, _ := buttons.Read8Input()
if pressed&machine.BUTTON_SELECT_MASK > 0 {
break
}
x, y, z = accel.ReadRawAcceleration()
x = x / 500
y = y / 500
z = z / 500
if x > 64 {
x = 64
}
if y > 64 {
y = 64
}
if z > 64 {
z = 64
}
if x < -64 {
x = -64
}
if y < -64 {
y = -64
}
if z < -64 {
z = -64
}
display.FillRectangle(28, 32, 128, 2, white)
display.FillRectangle(28, 42, 128, 2, white)
display.FillRectangle(28, 52, 128, 2, white)
if x < 0 {
display.FillRectangle(92+x, 32, -x, 2, red)
} else {
display.FillRectangle(92, 32, x, 2, red)
}
if y < 0 {
display.FillRectangle(92+y, 42, -y, 2, green)
} else {
display.FillRectangle(92, 42, y, 2, green)
}
if z < 0 {
display.FillRectangle(92+z, 52, -z, 2, blue)
} else {
display.FillRectangle(92, 52, z, 2, blue)
}
time.Sleep(150 * time.Millisecond)
}
}