github.com/tinygo-org/tinygo@v0.31.3-0.20240404173401-90b0bf646c27/src/examples/blinkm/blinkm.go (about)

     1  // Connects to an BlinkM I2C RGB LED.
     2  // http://thingm.com/fileadmin/thingm/downloads/BlinkM_datasheet.pdf
     3  package main
     4  
     5  import (
     6  	"machine"
     7  	"time"
     8  )
     9  
    10  func main() {
    11  	machine.I2C0.Configure(machine.I2CConfig{})
    12  
    13  	// Init BlinkM
    14  	machine.I2C0.WriteRegister(0x09, 'o', nil)
    15  
    16  	version := []byte{0, 0}
    17  	machine.I2C0.ReadRegister(0x09, 'Z', version)
    18  	println("Firmware version:", string(version[0]), string(version[1]))
    19  
    20  	count := 0
    21  	for {
    22  		switch count {
    23  		case 0:
    24  			// Crimson
    25  			machine.I2C0.WriteRegister(0x09, 'n', []byte{0xdc, 0x14, 0x3c})
    26  			count = 1
    27  		case 1:
    28  			// MediumPurple
    29  			machine.I2C0.WriteRegister(0x09, 'n', []byte{0x93, 0x70, 0xdb})
    30  			count = 2
    31  		case 2:
    32  			// MediumSeaGreen
    33  			machine.I2C0.WriteRegister(0x09, 'n', []byte{0x3c, 0xb3, 0x71})
    34  			count = 0
    35  		}
    36  
    37  		time.Sleep(100 * time.Millisecond)
    38  	}
    39  }