Skip to content

Instantly share code, notes, and snippets.

@conejoninja conejoninja/main.go
Last active Jul 17, 2019

Embed
What would you like to do?
main.go
package main
import (
"machine"
"image/color"
"time"
"tinygo.org/x/drivers/waveshare-epd/epd2in13"
)
var display epd2in13.Device
func main() {
println("start")
machine.PowerSupplyActive(true)
machine.SPI0.Configure(machine.SPIConfig{
Frequency: 4000000,
Mode: 0,
SCK: machine.EPD_SCK_PIN,
MOSI: machine.EPD_MOSI_PIN,
})
display = epd2in13.New(machine.SPI0, machine.EPD_CS_PIN, machine.EPD_DC_PIN, machine.EPD_RESET_PIN, machine.EPD_BUSY_PIN)
display.Configure(epd2in13.Config{})
black := color.RGBA{1, 1, 1, 255}
white := color.RGBA{0, 0, 0, 255}
display.ClearBuffer()
println("Clear the display")
display.ClearDisplay()
display.WaitUntilIdle()
println("Waiting for 2 seconds")
time.Sleep(2 * time.Second)
// Show a checkered board
for i := int16(0); i < 16; i++ {
for j := int16(0); j < 25; j++ {
if (i+j)%2 == 0 {
showRect(i*8, j*10, 8, 10, black)
}
}
}
println("Show checkered board")
display.Display()
display.WaitUntilIdle()
println("Waiting for 2 seconds")
time.Sleep(2 * time.Second)
println("Set partial lut")
display.SetLUT(false) // partial updates (faster, but with some ghosting)
println("Show smaller striped area")
for i := int16(40); i < 88; i++ {
for j := int16(83); j < 166; j++ {
if (i+j)%4 == 0 || (i+j)%4 == 1 {
display.SetPixel(i, j, black)
} else {
display.SetPixel(i, j, white)
}
}
}
// There are two memory areas in the display, once the display is refreshed, memory areas are auto-toggled.
// DisplayRect needs to be called twice
display.DisplayRect(40, 83, 48, 83)
display.WaitUntilIdle()
display.DisplayRect(40, 83, 48, 83)
display.WaitUntilIdle()
println("You could remove power now")
}
func showRect(x int16, y int16, w int16, h int16, c color.RGBA) {
for i := x; i < x+w; i++ {
for j := y; j < y+h; j++ {
display.SetPixel(i, j, c)
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.