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

     1  package main
     2  
     3  // This blinky is a bit more advanced than blink1, with two goroutines running
     4  // at the same time and blinking a different LED. The delay of led2 is slightly
     5  // less than half of led1, which would be hard to do without some sort of
     6  // concurrency.
     7  
     8  import (
     9  	"machine"
    10  	"time"
    11  )
    12  
    13  func main() {
    14  	go led1()
    15  	led2()
    16  }
    17  
    18  func led1() {
    19  	led := machine.LED1
    20  	led.Configure(machine.PinConfig{Mode: machine.PinOutput})
    21  	for {
    22  		println("+")
    23  		led.Low()
    24  		time.Sleep(time.Millisecond * 1000)
    25  
    26  		println("-")
    27  		led.High()
    28  		time.Sleep(time.Millisecond * 1000)
    29  	}
    30  }
    31  
    32  func led2() {
    33  	led := machine.LED2
    34  	led.Configure(machine.PinConfig{Mode: machine.PinOutput})
    35  	for {
    36  		println("  +")
    37  		led.Low()
    38  		time.Sleep(time.Millisecond * 420)
    39  
    40  		println("  -")
    41  		led.High()
    42  		time.Sleep(time.Millisecond * 420)
    43  	}
    44  }