gobot.io/x/gobot/v2@v2.1.0/examples/tinkerboard_pcf8583_clock.go (about)

     1  //go:build example
     2  // +build example
     3  
     4  //
     5  // Do not build by default.
     6  
     7  package main
     8  
     9  import (
    10  	"fmt"
    11  	"log"
    12  	"time"
    13  
    14  	"gobot.io/x/gobot/v2"
    15  	"gobot.io/x/gobot/v2/drivers/i2c"
    16  	"gobot.io/x/gobot/v2/platforms/tinkerboard"
    17  )
    18  
    19  // Wiring
    20  // PWR  Tinkerboard: 1 (+3.3V, VCC), 6, 9, 14, 20 (GND)
    21  // I2C1 Tinkerboard: 3 (SDA), 5 (SCL)
    22  // PCF8583 DIP package: 1 (OSCI, 50Hz), 2 (OSCO, nc), 3 (A0 - GND), 4 (VSS, GND), 5 (SDA), 6 (SCL), 7 (/INT, nc), 8 (VDD, +3.3V)
    23  func main() {
    24  	board := tinkerboard.NewAdaptor()
    25  	pcf := i2c.NewPCF8583Driver(board, i2c.WithBus(1), i2c.WithPCF8583Mode(i2c.PCF8583CtrlModeClock50))
    26  
    27  	work := func() {
    28  
    29  		currentTime := time.Now()
    30  		log.Println(currentTime)
    31  
    32  		if err := pcf.WriteTime(currentTime); err != nil {
    33  			fmt.Println(err)
    34  		}
    35  
    36  		gobot.Every(10*time.Second, func() {
    37  			if val, err := pcf.ReadTime(); err != nil {
    38  				fmt.Println(err)
    39  			} else {
    40  				log.Printf("read Time: %v", val)
    41  			}
    42  
    43  			ramVal, err := pcf.ReadRAM(uint8(0))
    44  			if err != nil {
    45  				fmt.Println(err)
    46  			} else {
    47  				log.Printf("read RAM: %v", ramVal)
    48  				ramVal++
    49  			}
    50  			if err := pcf.WriteRAM(uint8(0), ramVal); err != nil {
    51  				fmt.Println(err)
    52  			}
    53  		})
    54  	}
    55  
    56  	robot := gobot.NewRobot("pcfBot",
    57  		[]gobot.Connection{board},
    58  		[]gobot.Device{pcf},
    59  		work,
    60  	)
    61  
    62  	robot.Start()
    63  }