|
| 1 | +package main |
| 2 | + |
| 3 | +import ( |
| 4 | + "fmt" |
| 5 | + "image/color" |
| 6 | + "machine" |
| 7 | + "time" |
| 8 | + |
| 9 | + "tinygo.org/x/drivers" |
| 10 | + "tinygo.org/x/drivers/sht4x" |
| 11 | + "tinygo.org/x/drivers/ssd1306" |
| 12 | + "tinygo.org/x/tinyfont" |
| 13 | + "tinygo.org/x/tinyfont/shnm" |
| 14 | +) |
| 15 | + |
| 16 | +var ( |
| 17 | + white = color.RGBA{R: 0xFF, G: 0xFF, B: 0xFF, A: 0xFF} |
| 18 | + black = color.RGBA{R: 0x00, G: 0x00, B: 0x00, A: 0xFF} |
| 19 | +) |
| 20 | + |
| 21 | +func main() { |
| 22 | + machine.I2C0.Configure(machine.I2CConfig{ |
| 23 | + Frequency: 2.8 * machine.MHz, |
| 24 | + SDA: machine.GPIO12, |
| 25 | + SCL: machine.GPIO13, |
| 26 | + }) |
| 27 | + |
| 28 | + display := ssd1306.NewI2C(machine.I2C0) |
| 29 | + display.Configure(ssd1306.Config{ |
| 30 | + Address: 0x3C, |
| 31 | + Width: 128, |
| 32 | + Height: 64, |
| 33 | + }) |
| 34 | + display.SetRotation(drivers.Rotation180) |
| 35 | + display.ClearDisplay() |
| 36 | + time.Sleep(50 * time.Millisecond) |
| 37 | + |
| 38 | + sensor := sht4x.New(machine.I2C0) |
| 39 | + |
| 40 | + cnt := 0 |
| 41 | + for { |
| 42 | + for x := int16(0); x < 128; x += 2 { |
| 43 | + temp, humidity, _ := sensor.ReadTemperatureHumidity() |
| 44 | + t := fmt.Sprintf("温度 %.2f ℃", float32(temp)/1000) |
| 45 | + h := fmt.Sprintf("湿度 %.2f %", float32(humidity)/1000) |
| 46 | + |
| 47 | + display.ClearBuffer() |
| 48 | + tinyfont.WriteLine(&display, &shnm.Shnmk12, 5, 10, t, white) |
| 49 | + tinyfont.WriteLine(&display, &shnm.Shnmk12, 5, 30, h, white) |
| 50 | + display.Display() |
| 51 | + time.Sleep(1 * time.Second) |
| 52 | + } |
| 53 | + cnt++ |
| 54 | + } |
| 55 | +} |
0 commit comments