gobot.io/x/gobot/v2@v2.1.0/examples/tinkerboard_ads1115.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  	"time"
    12  
    13  	"gobot.io/x/gobot/v2"
    14  	"gobot.io/x/gobot/v2/drivers/i2c"
    15  	"gobot.io/x/gobot/v2/platforms/tinkerboard"
    16  )
    17  
    18  // Wiring
    19  // PWR  Tinkerboard: 1 (+3.3V, VCC), 2(+5V), 6, 9, 14, 20 (GND)
    20  // I2C1 Tinkerboard: 3 (SDA-ws), 5 (SCL-gn)
    21  // ADS1115 plate: VDD (2.0..5.5V), GND, SDL, SDA, A0..A3 (input voltage 0..5V)
    22  func main() {
    23  	const voltage = 5.0 // we will be able to read values of at least 5V (for all channels)
    24  
    25  	a := tinkerboard.NewAdaptor()
    26  	ads1115 := i2c.NewADS1115Driver(a, i2c.WithADS1x15BestGainForVoltage(voltage))
    27  
    28  	work := func() {
    29  		var a0, a1, a2, a3 float64
    30  		var err error
    31  		gobot.Every(2*time.Second, func() {
    32  			a0, err = ads1115.ReadWithDefaults(0)
    33  			if err != nil {
    34  				fmt.Println(err)
    35  			} else {
    36  				fmt.Println("A0", a0)
    37  			}
    38  			a1, err = ads1115.ReadWithDefaults(1)
    39  			if err != nil {
    40  				fmt.Println(err)
    41  			} else {
    42  				fmt.Println("A1", a1)
    43  			}
    44  			a2, err = ads1115.ReadWithDefaults(2)
    45  			if err != nil {
    46  				fmt.Println(err)
    47  			} else {
    48  				fmt.Println("A2", a2)
    49  			}
    50  			a3, err = ads1115.ReadWithDefaults(3)
    51  			if err != nil {
    52  				fmt.Println(err)
    53  			} else {
    54  				fmt.Println("A3", a3)
    55  			}
    56  			if v, err := ads1115.ReadDifferenceWithDefaults(0); err != nil {
    57  				fmt.Println(err)
    58  			} else {
    59  				fmt.Printf("A0-A1 %f, (e: %f)\n", v, v-(a0-a1))
    60  			}
    61  			if v, err := ads1115.ReadDifferenceWithDefaults(1); err != nil {
    62  				fmt.Println(err)
    63  			} else {
    64  				fmt.Printf("A0-A3 %f, (e: %f)\n", v, v-(a0-a3))
    65  			}
    66  			if v, err := ads1115.ReadDifferenceWithDefaults(2); err != nil {
    67  				fmt.Println(err)
    68  			} else {
    69  				fmt.Printf("A1-A3 %f, (e: %f)\n", v, v-(a1-a3))
    70  			}
    71  			if v, err := ads1115.ReadDifferenceWithDefaults(3); err != nil {
    72  				fmt.Println(err)
    73  			} else {
    74  				fmt.Printf("A2-A3 %f, (e: %f)\n", v, v-(a2-a3))
    75  			}
    76  			fmt.Println("-------------")
    77  		})
    78  	}
    79  
    80  	robot := gobot.NewRobot("ads1115bot",
    81  		[]gobot.Connection{a},
    82  		[]gobot.Device{ads1115},
    83  		work,
    84  	)
    85  
    86  	if err := robot.Start(); err != nil {
    87  		fmt.Println(err)
    88  	}
    89  }