Documentation ¶
Overview ¶
Package waveshare2in13v2 controls Waveshare 2in13v2 e-paper display.
Datasheets ¶
https://www.waveshare.com/w/upload/d/d5/2.13inch_e-Paper_Specification.pdf
Product page:
2.13 Inch version 2: https://www.waveshare.com/wiki/2.13inch_e-Paper_HAT
Example ¶
// Make sure periph is initialized. if _, err := host.Init(); err != nil { log.Fatal(err) } // Use spireg SPI bus registry to find the first available SPI bus. b, err := spireg.Open("") if err != nil { log.Fatal(err) } defer b.Close() dev, err := waveshare2in13v2.NewHat(b, &waveshare2in13v2.EPD2in13v2) // Display config and size if err != nil { log.Fatalf("Failed to initialize driver: %v", err) } err = dev.Init(false) if err != nil { log.Fatalf("Failed to initialize display: %v", err) } // Draw on it. Black text on a white background. img := image1bit.NewVerticalLSB(dev.Bounds()) draw.Draw(img, img.Bounds(), &image.Uniform{image1bit.On}, image.Point{}, draw.Src) f := basicfont.Face7x13 drawer := font.Drawer{ Dst: img, Src: &image.Uniform{image1bit.Off}, Face: f, Dot: fixed.P(0, img.Bounds().Dy()-1-f.Descent), } drawer.DrawString("Hello from periph!") if err := dev.Draw(dev.Bounds(), img, image.Point{}); err != nil { log.Fatal(err) }
Output:
Example (Other) ¶
// Make sure periph is initialized. if _, err := host.Init(); err != nil { log.Fatal(err) } // Use spireg SPI bus registry to find the first available SPI bus. b, err := spireg.Open("") if err != nil { log.Fatal(err) } defer b.Close() dev, err := waveshare2in13v2.NewHat(b, &waveshare2in13v2.EPD2in13v2) // Display config and size if err != nil { log.Fatalf("Failed to initialize driver: %v", err) } err = dev.Init(false) if err != nil { log.Fatalf("Failed to initialize display: %v", err) } var img image.Image // Note: this code is commented out so periph does not depend on: // "github.com/fogleman/gg" // "github.com/golang/freetype/truetype" // "golang.org/x/image/font/gofont/goregular" // bounds := dev.Bounds() // w := bounds.Dx() // h := bounds.Dy() // dc := gg.NewContext(w, h) // im, err := gg.LoadPNG("gopher.png") // if err != nil { // panic(err) // } // dc.SetRGB(1, 1, 1) // dc.Clear() // dc.SetRGB(0, 0, 0) // dc.Rotate(gg.Radians(90)) // dc.Translate(0.0, -float64(h/2)) // font, err := truetype.Parse(goregular.TTF) // if err != nil { // panic(err) // } // face := truetype.NewFace(font, &truetype.Options{ // Size: 16, // }) // dc.SetFontFace(face) // text := "Hello from periph!" // tw, th := dc.MeasureString(text) // dc.DrawImage(im, 120, 30) // padding := 8.0 // dc.DrawRoundedRectangle(padding*2, padding*2, tw+padding*2, th+padding, 10) // dc.Stroke() // dc.DrawString(text, padding*3, padding*2+th) // for i := 0; i < 10; i++ { // dc.DrawCircle(float64(30+(10*i)), 100, 5) // } // for i := 0; i < 10; i++ { // dc.DrawRectangle(float64(30+(10*i)), 80, 5, 5) // } // dc.Fill() // img = dc.Image() if err := dev.Draw(dev.Bounds(), img, image.Point{}); err != nil { log.Fatal(err) }
Output:
Index ¶
- Variables
- type Dev
- func (d *Dev) Bounds() image.Rectangle
- func (d *Dev) Clear(color byte) error
- func (d *Dev) ColorModel() color.Model
- func (d *Dev) Draw(dstRect image.Rectangle, src image.Image, srcPts image.Point) error
- func (d *Dev) DrawPartial(dstRect image.Rectangle, src image.Image, srcPts image.Point) error
- func (d *Dev) Halt() error
- func (d *Dev) Init(partialUpdate PartialUpdate) error
- func (d *Dev) String() string
- type LUT
- type Opts
- type PartialUpdate
Examples ¶
Constants ¶
This section is empty.
Variables ¶
var EPD2in13v2 = Opts{ Width: 122, Height: 250, FullUpdate: LUT{ 0x80, 0x60, 0x40, 0x00, 0x00, 0x00, 0x00, 0x10, 0x60, 0x20, 0x00, 0x00, 0x00, 0x00, 0x80, 0x60, 0x40, 0x00, 0x00, 0x00, 0x00, 0x10, 0x60, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0x02, 0x09, 0x09, 0x00, 0x00, 0x02, 0x03, 0x03, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }, PartialUpdate: LUT{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }, }
EPD2in13v2 cointains display configuration for the Waveshare 2in13v2.
Functions ¶
This section is empty.
Types ¶
type Dev ¶
type Dev struct {
// contains filtered or unexported fields
}
Dev defines the handler which is used to access the display.
func NewHat ¶
NewHat creates new handler which is used to access the display. Default Waveshare Hat configuration is used.
func (*Dev) ColorModel ¶
ColorModel returns a 1Bit color model.
func (*Dev) DrawPartial ¶
DrawPartial draws the given image to the display. Display will update only changed pixel.
func (*Dev) Init ¶
func (d *Dev) Init(partialUpdate PartialUpdate) error
Init will initialize the display with the partial-update or full-update mode.
type PartialUpdate ¶
type PartialUpdate bool
PartialUpdate defines if the display should do a full update or just a partial update.
const ( // Full should update the complete display. Full PartialUpdate = false // Partial should update only partial parts of the display. Partial PartialUpdate = true )