mirror of
https://github.com/tinygo-org/drivers.git
synced 2026-08-16 04:43:25 +00:00
SetPixel removed, formatting
This commit is contained in:
@@ -23,6 +23,8 @@ jobs:
|
|||||||
- run: tinygo build -size short -o test.elf -target=itsybitsy-m0 ./examples/espat/espconsole/main.go
|
- run: tinygo build -size short -o test.elf -target=itsybitsy-m0 ./examples/espat/espconsole/main.go
|
||||||
- run: tinygo build -size short -o test.elf -target=itsybitsy-m0 ./examples/espat/esphub/main.go
|
- run: tinygo build -size short -o test.elf -target=itsybitsy-m0 ./examples/espat/esphub/main.go
|
||||||
- run: tinygo build -size short -o test.elf -target=itsybitsy-m0 ./examples/espat/espstation/main.go
|
- run: tinygo build -size short -o test.elf -target=itsybitsy-m0 ./examples/espat/espstation/main.go
|
||||||
|
- run: tinygo build -size short -o test.elf -target=microbit ./examples/hd44780/customchar/main.go
|
||||||
|
- run: tinygo build -size short -o test.elf -target=microbit ./examples/hd44780/text/main.go
|
||||||
- run: tinygo build -size short -o test.elf -target=microbit ./examples/hub75/main.go
|
- run: tinygo build -size short -o test.elf -target=microbit ./examples/hub75/main.go
|
||||||
- run: tinygo build -size short -o test.elf -target=circuitplay-express ./examples/lis3dh/main.go
|
- run: tinygo build -size short -o test.elf -target=circuitplay-express ./examples/lis3dh/main.go
|
||||||
- run: tinygo build -size short -o test.elf -target=itsybitsy-m0 ./examples/mag3110/main.go
|
- run: tinygo build -size short -o test.elf -target=itsybitsy-m0 ./examples/mag3110/main.go
|
||||||
@@ -33,5 +35,3 @@ jobs:
|
|||||||
- run: tinygo build -size short -o test.elf -target=circuitplay-express ./examples/thermistor/main.go
|
- run: tinygo build -size short -o test.elf -target=circuitplay-express ./examples/thermistor/main.go
|
||||||
- run: tinygo build -size short -o test.elf -target=itsybitsy-m0 ./examples/vl53l1x/main.go
|
- run: tinygo build -size short -o test.elf -target=itsybitsy-m0 ./examples/vl53l1x/main.go
|
||||||
- run: tinygo build -size short -o test.elf -target=circuitplay-express ./examples/ws2812/main.go
|
- run: tinygo build -size short -o test.elf -target=circuitplay-express ./examples/ws2812/main.go
|
||||||
- run: tinygo build -size short -o test.elf -target=microbit ./examples/hd44780/text/main.go
|
|
||||||
- run: tinygo build -size short -o test.elf -target=microbit ./examples/hd44780/customchar/main.go
|
|
||||||
|
|||||||
@@ -8,9 +8,20 @@ import (
|
|||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
|
||||||
lcd, _ := hd44780.NewGPIO4Bit([]uint8{machine.P0, machine.P1, machine.P2, machine.P3}, machine.P4, machine.P5, machine.P6)
|
lcd, _ := hd44780.NewGPIO4Bit(
|
||||||
|
[]uint8{machine.P0, machine.P1, machine.P2, machine.P3},
|
||||||
|
machine.P4,
|
||||||
|
machine.P5,
|
||||||
|
machine.P6,
|
||||||
|
)
|
||||||
|
|
||||||
|
lcd.Configure(hd44780.Config{
|
||||||
|
Width: 16,
|
||||||
|
Height: 2,
|
||||||
|
CursorOnOff: true,
|
||||||
|
CursorBlink: true,
|
||||||
|
})
|
||||||
|
|
||||||
lcd.Configure(hd44780.Config{Width: 16, Height: 2, CursorOnOff: true, CursorBlink: true})
|
|
||||||
lcd.CreateCharacter(0x0, []byte{0x04, 0x0E, 0x0E, 0x0E, 0x0E, 0x1F, 0x04, 0x0})
|
lcd.CreateCharacter(0x0, []byte{0x04, 0x0E, 0x0E, 0x0E, 0x0E, 0x1F, 0x04, 0x0})
|
||||||
lcd.Write([]byte{0x0})
|
lcd.Write([]byte{0x0})
|
||||||
lcd.Display()
|
lcd.Display()
|
||||||
|
|||||||
@@ -8,9 +8,20 @@ import (
|
|||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
|
||||||
lcd, _ := hd44780.NewGPIO4Bit([]uint8{machine.P0, machine.P1, machine.P2, machine.P3}, machine.P4, machine.P5, machine.P6)
|
lcd, _ := hd44780.NewGPIO4Bit(
|
||||||
|
[]uint8{machine.P0, machine.P1, machine.P2, machine.P3},
|
||||||
|
machine.P4,
|
||||||
|
machine.P5,
|
||||||
|
machine.P6,
|
||||||
|
)
|
||||||
|
|
||||||
|
lcd.Configure(hd44780.Config{
|
||||||
|
Width: 16,
|
||||||
|
Height: 2,
|
||||||
|
CursorOnOff: true,
|
||||||
|
CursorBlink: true,
|
||||||
|
})
|
||||||
|
|
||||||
lcd.Configure(hd44780.Config{Width: 16, Height: 2, CursorOnOff: true, CursorBlink: true})
|
|
||||||
lcd.Write([]byte("This is a long line"))
|
lcd.Write([]byte("This is a long line"))
|
||||||
lcd.Display()
|
lcd.Display()
|
||||||
|
|
||||||
|
|||||||
+5
-1
@@ -62,6 +62,7 @@ func (g *GPIO) SetCommandMode(set bool) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Write writes len(data) bytes from data to display driver
|
||||||
func (g *GPIO) Write(data []byte) (n int, err error) {
|
func (g *GPIO) Write(data []byte) (n int, err error) {
|
||||||
g.rw.Low()
|
g.rw.Low()
|
||||||
for _, d := range data {
|
for _, d := range data {
|
||||||
@@ -87,11 +88,12 @@ func (g *GPIO) write4BitMode(data byte) {
|
|||||||
g.e.Low()
|
g.e.Low()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Read reads len(data) bytes from display RAM to data starting from RAM address counter position
|
||||||
|
// Ram address can be changed by writing address in command mode
|
||||||
func (g *GPIO) Read(data []byte) (n int, err error) {
|
func (g *GPIO) Read(data []byte) (n int, err error) {
|
||||||
if len(data) == 0 {
|
if len(data) == 0 {
|
||||||
return 0, errors.New("Length greater than 0 is required")
|
return 0, errors.New("Length greater than 0 is required")
|
||||||
}
|
}
|
||||||
g.rs.Low()
|
|
||||||
g.rw.High()
|
g.rw.High()
|
||||||
g.reconfigureGPIOMode(machine.GPIO_INPUT)
|
g.reconfigureGPIOMode(machine.GPIO_INPUT)
|
||||||
for i := 0; i < len(data); i++ {
|
for i := 0; i < len(data); i++ {
|
||||||
@@ -111,12 +113,14 @@ func (g *GPIO) read4BitMode() byte {
|
|||||||
g.e.Low()
|
g.e.Low()
|
||||||
return data
|
return data
|
||||||
}
|
}
|
||||||
|
|
||||||
func (g *GPIO) read8BitMode() byte {
|
func (g *GPIO) read8BitMode() byte {
|
||||||
g.e.High()
|
g.e.High()
|
||||||
data := g.pins()
|
data := g.pins()
|
||||||
g.e.Low()
|
g.e.Low()
|
||||||
return data
|
return data
|
||||||
}
|
}
|
||||||
|
|
||||||
func (g *GPIO) reconfigureGPIOMode(mode machine.GPIOMode) {
|
func (g *GPIO) reconfigureGPIOMode(mode machine.GPIOMode) {
|
||||||
for i := 0; i < len(g.dataPins); i++ {
|
for i := 0; i < len(g.dataPins); i++ {
|
||||||
g.dataPins[i].Configure(machine.GPIOConfig{Mode: mode})
|
g.dataPins[i].Configure(machine.GPIOConfig{Mode: mode})
|
||||||
|
|||||||
+19
-24
@@ -2,7 +2,6 @@ package hd44780
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"errors"
|
"errors"
|
||||||
"image/color"
|
|
||||||
"io"
|
"io"
|
||||||
"time"
|
"time"
|
||||||
)
|
)
|
||||||
@@ -12,24 +11,6 @@ type Buser interface {
|
|||||||
SetCommandMode(set bool)
|
SetCommandMode(set bool)
|
||||||
}
|
}
|
||||||
|
|
||||||
// NewGPIO4Bit returns 4bit data length HD44780 driver. Datapins are LCD DB pins starting from DB4 to DB7
|
|
||||||
func NewGPIO4Bit(dataPins []uint8, e, rs, rw uint8) (Device, error) {
|
|
||||||
const fourBitMode = 4
|
|
||||||
if len(dataPins) != fourBitMode {
|
|
||||||
return Device{}, errors.New("4 pins are required in data slice (D7-D4) when HD44780 is used in 4 bit mode")
|
|
||||||
}
|
|
||||||
return newGPIO(dataPins, e, rs, rw, DATA_LENGTH_4BIT), nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// NewGPIO8Bit returns 8bit data length HD44780 driver. Datapins are LCD DB pins starting from DB0 to DB7
|
|
||||||
func NewGPIO8Bit(dataPins []uint8, e, rs, rw uint8) (Device, error) {
|
|
||||||
const eightBitMode = 8
|
|
||||||
if len(dataPins) != eightBitMode {
|
|
||||||
return Device{}, errors.New("8 pins are required in data slice (D7-D0) when HD44780 is used in 8 bit mode")
|
|
||||||
}
|
|
||||||
return newGPIO(dataPins, e, rs, rw, DATA_LENGTH_8BIT), nil
|
|
||||||
}
|
|
||||||
|
|
||||||
type Device struct {
|
type Device struct {
|
||||||
bus Buser
|
bus Buser
|
||||||
width uint8
|
width uint8
|
||||||
@@ -56,6 +37,24 @@ type Config struct {
|
|||||||
Font uint8
|
Font uint8
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// NewGPIO4Bit returns 4bit data length HD44780 driver. Datapins are LCD DB pins starting from DB4 to DB7
|
||||||
|
func NewGPIO4Bit(dataPins []uint8, e, rs, rw uint8) (Device, error) {
|
||||||
|
const fourBitMode = 4
|
||||||
|
if len(dataPins) != fourBitMode {
|
||||||
|
return Device{}, errors.New("4 pins are required in data slice (D4-D7) when HD44780 is used in 4 bit mode")
|
||||||
|
}
|
||||||
|
return newGPIO(dataPins, e, rs, rw, DATA_LENGTH_4BIT), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// NewGPIO8Bit returns 8bit data length HD44780 driver. Datapins are LCD DB pins starting from DB0 to DB7
|
||||||
|
func NewGPIO8Bit(dataPins []uint8, e, rs, rw uint8) (Device, error) {
|
||||||
|
const eightBitMode = 8
|
||||||
|
if len(dataPins) != eightBitMode {
|
||||||
|
return Device{}, errors.New("8 pins are required in data slice (D0-D7) when HD44780 is used in 8 bit mode")
|
||||||
|
}
|
||||||
|
return newGPIO(dataPins, e, rs, rw, DATA_LENGTH_8BIT), nil
|
||||||
|
}
|
||||||
|
|
||||||
// Configure initializes device
|
// Configure initializes device
|
||||||
func (d *Device) Configure(cfg Config) error {
|
func (d *Device) Configure(cfg Config) error {
|
||||||
d.busyStatus = make([]byte, 1)
|
d.busyStatus = make([]byte, 1)
|
||||||
@@ -205,15 +204,11 @@ func (d *Device) CreateCharacter(cgramAddr uint8, data []byte) {
|
|||||||
|
|
||||||
// Busy returns true when hd447890 is busy
|
// Busy returns true when hd447890 is busy
|
||||||
func (d *Device) Busy() bool {
|
func (d *Device) Busy() bool {
|
||||||
|
d.bus.SetCommandMode(true)
|
||||||
d.bus.Read(d.busyStatus)
|
d.bus.Read(d.busyStatus)
|
||||||
return (d.busyStatus[0] & BUSY) > 0
|
return (d.busyStatus[0] & BUSY) > 0
|
||||||
}
|
}
|
||||||
|
|
||||||
// SetPixel is not supported on devices which uses HD44780 driver
|
|
||||||
func (d *Device) SetPixel(x, y int16, c color.RGBA) {
|
|
||||||
panic("HD44780 does not support setting individual pixels")
|
|
||||||
}
|
|
||||||
|
|
||||||
// Size returns the current size of the display.
|
// Size returns the current size of the display.
|
||||||
func (d *Device) Size() (w, h int16) {
|
func (d *Device) Size() (w, h int16) {
|
||||||
return int16(d.width), int16(d.height)
|
return int16(d.width), int16(d.height)
|
||||||
|
|||||||
Reference in New Issue
Block a user