87 lines
1.9 KiB
Go
87 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)
|
||
|
|
}
|
||
|
|
}
|