mirror of
https://github.com/tinygo-org/drivers.git
synced 2026-07-26 10:38:41 +00:00
68963a1b42
* hd44780i2c: add support for hd44780i2c LCD display.
61 lines
1.2 KiB
Go
61 lines
1.2 KiB
Go
package main
|
|
|
|
import (
|
|
"machine"
|
|
"strconv"
|
|
"time"
|
|
|
|
"tinygo.org/x/drivers/hd44780i2c"
|
|
)
|
|
|
|
func main() {
|
|
|
|
// Note: most HD44780 LCD modules requires 5V power, however some variations
|
|
// use 3.3V (and may be damaged by 5V).
|
|
|
|
machine.I2C0.Configure(machine.I2CConfig{
|
|
Frequency: machine.TWI_FREQ_400KHZ,
|
|
})
|
|
|
|
lcd := hd44780i2c.New(machine.I2C0, 0x27) // some modules have address 0x3F
|
|
|
|
lcd.Configure(hd44780i2c.Config{
|
|
Width: 16, // required
|
|
Height: 2, // required
|
|
CursorOn: true,
|
|
CursorBlink: true,
|
|
})
|
|
|
|
lcd.Print([]byte(" TinyGo\n LCD Test "))
|
|
|
|
// CGRAM address 0x0-0x7 can be used to store 8 custom characters
|
|
lcd.CreateCharacter(0x0, []byte{0x00, 0x11, 0x0E, 0x1F, 0x15, 0x1F, 0x1F, 0x1F})
|
|
lcd.Print([]byte{0x0})
|
|
|
|
// You can use https://maxpromer.github.io/LCD-Character-Creator/
|
|
// to crete your own characters.
|
|
|
|
time.Sleep(time.Millisecond * 7000)
|
|
|
|
for i := 0; i < 5; i++ {
|
|
lcd.BacklightOn(false)
|
|
time.Sleep(time.Millisecond * 250)
|
|
lcd.BacklightOn(true)
|
|
time.Sleep(time.Millisecond * 250)
|
|
}
|
|
|
|
lcd.CursorOn(false)
|
|
lcd.CursorBlink(false)
|
|
|
|
i := 0
|
|
for {
|
|
|
|
lcd.ClearDisplay()
|
|
lcd.SetCursor(2, 1)
|
|
lcd.Print([]byte(strconv.FormatInt(int64(i), 10)))
|
|
i++
|
|
time.Sleep(time.Millisecond * 100)
|
|
|
|
}
|
|
}
|