mirror of
https://github.com/tinygo-org/drivers.git
synced 2026-07-26 10:38:41 +00:00
c710cc8236
* ssd1xxx: break dependency from machine package * fix ssd1289 example * simplify
70 lines
1.7 KiB
Go
70 lines
1.7 KiB
Go
package main
|
|
|
|
import (
|
|
"image/color"
|
|
"machine"
|
|
"math/rand"
|
|
|
|
"tinygo.org/x/drivers/internal/pin"
|
|
"tinygo.org/x/drivers/ssd1289"
|
|
)
|
|
|
|
func main() {
|
|
|
|
//The SSD1289 is configured in 16 bit parallel mode and requires 16 GPIOs
|
|
//The Pin bus is the most flexible but ineffecient method it switches
|
|
//individual pins on and off. If you are able to use consecutive pins
|
|
//consider creating a more efficient bus implementation that uses
|
|
//your microcontrollers built in "ports"
|
|
//see rp2040bus.go for an example for the rapsberry pi pico
|
|
bus := ssd1289.NewPinBus([16]pin.Output{
|
|
machine.GP4, //DB0
|
|
machine.GP5, //DB1
|
|
machine.GP6, //DB2
|
|
machine.GP7, //DB3
|
|
machine.GP8, //DB4
|
|
machine.GP9, //DB5
|
|
machine.GP10, //DB6
|
|
machine.GP11, //DB7
|
|
machine.GP12, //DB8
|
|
machine.GP13, //DB9
|
|
machine.GP14, //DB10
|
|
machine.GP15, //DB11
|
|
machine.GP16, //DB12
|
|
machine.GP17, //DB13
|
|
machine.GP18, //DB14
|
|
machine.GP19, //DB15
|
|
})
|
|
|
|
//Control pins for the SSD1289
|
|
rs := machine.GP0
|
|
wr := machine.GP1
|
|
cs := machine.GP2
|
|
rst := machine.GP3
|
|
|
|
display := ssd1289.New(rs, wr, cs, rst, bus)
|
|
|
|
display.Configure() //Sends intialization sequence to SSD1289.
|
|
//!! After configure the display will contain random data and needs to be cleared
|
|
|
|
background := color.RGBA{0, 0, 0, 255} //Black
|
|
display.FillDisplay(background) //Clears the display to the given color
|
|
|
|
for {
|
|
//Draw random filled coloured rectangles
|
|
x := int16(rand.Intn(120))
|
|
w := int16(rand.Intn(120))
|
|
|
|
y := int16(rand.Intn(160))
|
|
h := int16(rand.Intn(160))
|
|
|
|
r := uint8(rand.Intn(255))
|
|
g := uint8(rand.Intn(255))
|
|
b := uint8(rand.Intn(255))
|
|
|
|
c := color.RGBA{r, g, b, 255}
|
|
|
|
display.FillRect(x, y, w, h, c) //Fills the given rectangle the rest of the display is unaffected.
|
|
}
|
|
}
|