aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBlaster4385 <[email protected]>2026-11-11 09:42:30 +0530
committerBlaster4385 <[email protected]>2026-11-11 10:13:54 +0530
commitebda09414b925f43a66e3a98b74235d6faf81e3c (patch)
tree29ceec4e0666816e2059d95d9bbb83632d333803
parent1dc5efd77b6b9405af29d08aa1ee8c4c70c4d439 (diff)
Add ReadmeHEADdevel
-rw-r--r--README.md65
1 files changed, 65 insertions, 0 deletions
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..4430379
--- /dev/null
+++ b/README.md
@@ -0,0 +1,65 @@
+# go-epd7in3e
+
+A small Go driver for the Waveshare 7.3" e-Paper (E) "Spectra 6" panel
+(`epd7in3e`, 800x480, 6 colours) over SPI on a Raspberry Pi.
+
+This was written by referencing the original c driver provided by waveshare at https://github.com/waveshareteam/e-Paper
+
+## Wiring
+
+Default Waveshare HAT wiring, BCM numbers:
+
+| Signal | BCM pin | Direction | Notes |
+|--------|---------|-----------|-------|
+| RST | GPIO17 | out | active low |
+| DC | GPIO25 | out | low = command, high = data |
+| CS | GPIO8 (CE0) | - | driven by the kernel spidev driver |
+| BUSY | GPIO24 | in | LOW = busy, HIGH = idle |
+| PWR | GPIO27 | out | driven HIGH before anything else |
+| MOSI | GPIO10 | - | SPI0 |
+| SCLK | GPIO11 | - | SPI0, 4 MHz, mode 0, 8 bits |
+
+## Enabling SPI
+
+On a Raspberry Pi with the HAT fitted:
+
+1. `sudo raspi-config` -> *Interface Options* -> *SPI* -> *Yes*.
+2. `sudo reboot`, then confirm `/dev/spidev0.0` exists.
+3. Build with the Makefile, on the Pi or cross-compiled on a PC/server:
+
+```
+make build # on the Pi, produces ./epdctl
+make arm64 # Pi 4/5 64-bit, produces ./epdctl-arm64
+make arm # 32-bit, produces ./epdctl-arm
+make clean # remove the built binaries
+```
+
+## CLI usage
+
+`epdctl` always initialises the panel, draws, then puts it to deep
+sleep. `-dry-run out.png` writes the quantised 800x480 frame to a PNG
+instead of touching the hardware. `-v` logs every command, data write
+and busy-wait duration to stderr for bring-up diagnostics.
+
+```
+epdctl clear # fill the panel white
+epdctl clear blue # any of black|white|yellow|red|blue|green
+epdctl bars # six vertical colour bars
+epdctl show photo.jpg # letterbox, dither, display
+epdctl show photo.png -dry-run /tmp/preview.png
+```
+
+## Library Usage
+
+```go
+d, err := epd7in3e.NewHAT(nil) // SPI0.0 + default HAT pins, defaults
+// or &epd7in3e.Opts{Verbose: true} to log every command to stderr
+if err != nil { log.Fatal(err) }
+ctx := context.Background()
+if err := d.Init(ctx); err != nil { log.Fatal(err) }
+img, _, err := image.Decode(file) // 800x480 or 480x800 (rotated)
+if err != nil { log.Fatal(err) }
+if err := d.Display(ctx, img); err != nil { log.Fatal(err) }
+if err := d.Sleep(ctx); err != nil { log.Fatal(err) }
+d.Halt() // power the board rail off
+```