mirror of
https://github.com/tinygo-org/drivers.git
synced 2026-07-26 10:38:41 +00:00
c09f0a8075
Signed-off-by: Ron Evans <ron@hybridgroup.com>
104 lines
1.7 KiB
Go
104 lines
1.7 KiB
Go
package main
|
|
|
|
import (
|
|
"machine"
|
|
|
|
"image/color"
|
|
"time"
|
|
|
|
"tinygo.org/x/drivers/examples/hub75/gopherimg"
|
|
"tinygo.org/x/drivers/hub75"
|
|
)
|
|
|
|
var display hub75.Device
|
|
|
|
func main() {
|
|
machine.SPI0.Configure(machine.SPIConfig{
|
|
Frequency: 8000000,
|
|
Mode: 0},
|
|
)
|
|
|
|
display = hub75.New(machine.SPI0, 11, 12, 6, 10, 18, 20)
|
|
display.Configure(hub75.Config{
|
|
Width: 64,
|
|
Height: 32,
|
|
RowPattern: 16,
|
|
ColorDepth: 6,
|
|
})
|
|
|
|
colors := []color.RGBA{
|
|
{255, 0, 0, 255},
|
|
{255, 255, 0, 255},
|
|
{0, 255, 0, 255},
|
|
{0, 255, 255, 255},
|
|
{0, 0, 255, 255},
|
|
{255, 0, 255, 255},
|
|
{255, 255, 255, 255},
|
|
}
|
|
|
|
display.ClearDisplay()
|
|
display.SetBrightness(100)
|
|
|
|
step := 0
|
|
then := time.Now()
|
|
size := int16(8)
|
|
x := int16(0)
|
|
y := int16(0)
|
|
dx := int16(1)
|
|
dy := int16(1)
|
|
c := 0
|
|
for {
|
|
if time.Since(then).Nanoseconds() > 800000000 {
|
|
then = time.Now()
|
|
step++
|
|
|
|
if step < 23 {
|
|
showRect(size, x*size, y*size, colors[c])
|
|
c = (c + 1) % 7
|
|
x += dx
|
|
y += dy
|
|
if x >= (64 / size) {
|
|
dx = -1
|
|
x += 2 * dx
|
|
}
|
|
if y >= (32 / size) {
|
|
dy = -1
|
|
y += 2 * dy
|
|
}
|
|
if x < 0 {
|
|
dx = 1
|
|
x += 2 * dx
|
|
}
|
|
if y < 0 {
|
|
dy = 1
|
|
y += 2 * dy
|
|
}
|
|
} else if step == 23 {
|
|
showGopher()
|
|
} else if step == 30 {
|
|
display.ClearDisplay()
|
|
step = 0
|
|
x = 0
|
|
y = 0
|
|
}
|
|
}
|
|
display.Display()
|
|
}
|
|
}
|
|
|
|
func showGopher() {
|
|
for i := int16(0); i < 64; i++ {
|
|
for j := int16(0); j < 32; j++ {
|
|
display.SetPixel(i, j, gopherimg.Int2Color(gopherimg.ImageArray[32*i+j]))
|
|
}
|
|
}
|
|
}
|
|
|
|
func showRect(size int16, x int16, y int16, c color.RGBA) {
|
|
for i := x; i < x+size; i++ {
|
|
for j := y; j < y+size; j++ {
|
|
display.SetPixel(i, j, c)
|
|
}
|
|
}
|
|
}
|