mirror of
https://github.com/tinygo-org/drivers.git
synced 2026-09-01 20:39:04 +00:00
gdew0154m09: add e-paper display driver
This commit is contained in:
committed by
Ron Evans
parent
be556a971c
commit
119afb933c
@@ -0,0 +1,69 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"device/esp"
|
||||
"image/color"
|
||||
"machine"
|
||||
"time"
|
||||
|
||||
"tinygo.org/x/drivers/gdew0154m09"
|
||||
"tinygo.org/x/tinyfont"
|
||||
"tinygo.org/x/tinyfont/freemono"
|
||||
)
|
||||
|
||||
func main() {
|
||||
// Hold the M5Stack CoreInk power rail on.
|
||||
machine.GPIO12.Configure(machine.PinConfig{Mode: machine.PinOutput})
|
||||
machine.GPIO12.High()
|
||||
|
||||
cs := machine.IO9
|
||||
dc := machine.GPIO15
|
||||
rst := machine.IO0
|
||||
busy := machine.IO4
|
||||
cs.Configure(machine.PinConfig{Mode: machine.PinOutput})
|
||||
dc.Configure(machine.PinConfig{Mode: machine.PinOutput})
|
||||
rst.Configure(machine.PinConfig{Mode: machine.PinOutput})
|
||||
busy.Configure(machine.PinConfig{Mode: machine.PinInput})
|
||||
cs.High()
|
||||
dc.High()
|
||||
rst.High()
|
||||
|
||||
// Enable and reset the ESP32 VSPI peripheral before configuring SPI3.
|
||||
esp.DPORT.SetPERIP_RST_EN_SPI3_RST(1)
|
||||
esp.DPORT.SetPERIP_CLK_EN_SPI3_CLK_EN(1)
|
||||
esp.DPORT.SetPERIP_RST_EN_SPI3_RST(0)
|
||||
if err := machine.SPI3.Configure(machine.SPIConfig{
|
||||
Frequency: gdew0154m09.Baudrate,
|
||||
SCK: machine.IO18,
|
||||
SDO: machine.IO23,
|
||||
SDI: machine.NoPin,
|
||||
Mode: gdew0154m09.SPIMode,
|
||||
}); err != nil {
|
||||
println("could not configure SPI:", err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
display := gdew0154m09.New(machine.SPI3, cs, dc, rst, busy)
|
||||
if err := display.Configure(gdew0154m09.DefaultConfig); err != nil {
|
||||
println("could not configure display:", err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
black := color.RGBA{A: 0xff}
|
||||
tinyfont.WriteLine(display, &freemono.Bold18pt7b, 15, 90, "TinyGo", black)
|
||||
for x := int16(0); x < gdew0154m09.Width; x++ {
|
||||
display.SetPixel(x, 0, black)
|
||||
display.SetPixel(x, gdew0154m09.Height-1, black)
|
||||
}
|
||||
for y := int16(0); y < gdew0154m09.Height; y++ {
|
||||
display.SetPixel(0, y, black)
|
||||
display.SetPixel(gdew0154m09.Width-1, y, black)
|
||||
}
|
||||
|
||||
if err := display.Display(); err != nil {
|
||||
println("could not refresh display:", err.Error())
|
||||
}
|
||||
for {
|
||||
time.Sleep(time.Hour)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user