nicebadge/tutorial/basics/step10/main.go
Daniel Esteban 7d8399152c new steps
2026-04-19 18:29:28 +02:00

49 lines
954 B
Go

package main
import (
"machine"
"machine/usb/adc/midi"
"time"
)
func main() {
// buttons: active LOW (internal pull-up)
btnA := machine.P1_06
btnB := machine.P1_04
btnRot := machine.P0_22 // rotary encoder push button
btnA.Configure(machine.PinConfig{Mode: machine.PinInputPullup})
btnB.Configure(machine.PinConfig{Mode: machine.PinInputPullup})
btnRot.Configure(machine.PinConfig{Mode: machine.PinInputPullup})
// C major triad: C4, E4, G4
notes := []midi.Note{midi.C4, midi.E4, midi.G4}
midichannel := uint8(1)
note := -1
oldNote := -1
for {
note = -1
if !btnA.Get() {
note = 0 // C4
}
if !btnB.Get() {
note = 1 // E4
}
if !btnRot.Get() {
note = 2 // G4
}
if note != oldNote {
if oldNote != -1 {
midi.Midi.NoteOff(0, midichannel, notes[oldNote], 50)
}
if note != -1 {
midi.Midi.NoteOn(0, midichannel, notes[note], 50)
}
oldNote = note
}
time.Sleep(100 * time.Millisecond)
}
}