p158 code
package main
import(
"machine"
"time"
)
func main(){
pwm := machine.TCC0
pwm.Configure(machine.PWMConfig{})
channelA,_:=pwm.Channel(machine.BUZZER_CTR)
notes:=[]uint64{440,494,523,585,659,698,783}
i:=0
for{
pwm.SetPeriod(1e9/notes[i])
pwm.Set(channelA,pwm.Top()/2)
time.Sleep(100*time.Millisecond)
pwm.Set(channelA,0)
i=(i+1)%len(notes)
}
}
p159
package main
import(
"machine"
"time"
"tinygo.org/x/drivers/tone"
)
func main(){
speaker,_ :=tone.New(machine.TCC0,machine.BUZZER_CTR)
notes:=[]tone.Note{tone.A5,tone.B5,tone.C6,tone.D6,tone.E6,tone.F6,tone.G6}
i:=0
for{
speaker.SetNote(notes[i])
time.Sleep(500*time.Millisecond)
i=(i+1)%len(notes)
}
}
--------------------------------p167-------------------------------
package main
import(
"fmt"
"machine"
"time"
)
func main(){
i2c := machine.I2C0
i2c.Configure(machine.I2CConfig{
SCL : machine.SCL0_PIN,
SDA : machine.SDA0_PIN,
})
i2c.WriteRegister(0x18,0x20,[]byte{0x57})
data := []byte{0,0,0,0,0,0}
for {
i2c.ReadRegister(0x18,0x28|0x80,data)
x := readAcceleration(data[0],data[1])
y := readAcceleration(data[2],data[3])
z := readAcceleration(data[4],data[5])
fmt.Printf("X:%6.2f Y:%6.2f Z:%6.2f\r\n",x,y,z)
time.Sleep(100*time.Millisecond)
}
}
func readAcceleration(l,h byte) float32{
a := uint16(l) | uint16(h)<<8
return float32(int16(a))/0x4000
}