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 epd: %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 epd: %v", err) } var img image.Image 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, 0x15, 0x41, 0xA8, 0x32, 0x30, 0x0A, }, 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, 0x15, 0x41, 0xA8, 0x32, 0x30, 0x0A, }, }
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 )