mirror of
https://github.com/tinygo-org/drivers.git
synced 2026-08-07 00:13:42 +00:00
pwm: update drivers with PWM to use new interface
Signed-off-by: deadprogram <ron@hybridgroup.com>
This commit is contained in:
@@ -15,7 +15,7 @@ import (
|
||||
var (
|
||||
apa apa102.Device
|
||||
|
||||
led = machine.PWM{machine.LED}
|
||||
pwm = machine.TCC0
|
||||
leds = make([]color.RGBA, 1)
|
||||
wheel = &Wheel{Brightness: 0x10}
|
||||
)
|
||||
@@ -27,12 +27,19 @@ func init() {
|
||||
apa = apa102.NewSoftwareSPI(machine.PA00, machine.PA01, 1)
|
||||
|
||||
// Configure the regular on-board LED for PWM fading
|
||||
machine.InitPWM()
|
||||
led.Configure()
|
||||
|
||||
err := pwm.Configure(machine.PWMConfig{})
|
||||
if err != nil {
|
||||
println("failed to configure PWM")
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
func main() {
|
||||
channelLED, err := pwm.Channel(machine.LED)
|
||||
if err != nil {
|
||||
println("failed to configure LED PWM channel")
|
||||
return
|
||||
}
|
||||
|
||||
// We'll fade the on-board LED in a goroutine to show/ensure that the APA102
|
||||
// works fine with the scheduler enabled. Comment this out to test this code
|
||||
@@ -43,11 +50,11 @@ func main() {
|
||||
brightening = !brightening
|
||||
continue
|
||||
}
|
||||
var brightness uint16 = uint16(i) << 8
|
||||
var brightness uint32 = uint32(i)
|
||||
if !brightening {
|
||||
brightness = 0xFFFF - brightness
|
||||
brightness = 256 - brightness
|
||||
}
|
||||
led.Set(brightness)
|
||||
pwm.Set(channelLED, pwm.Top()*brightness/256)
|
||||
time.Sleep(5 * time.Millisecond)
|
||||
}
|
||||
}()
|
||||
|
||||
@@ -8,19 +8,31 @@ import (
|
||||
)
|
||||
|
||||
const (
|
||||
maxSpeed = 30000
|
||||
maxSpeed = 100
|
||||
)
|
||||
|
||||
func main() {
|
||||
machine.InitPWM()
|
||||
err := machine.TCC0.Configure(machine.PWMConfig{
|
||||
Period: 16384e3, // 16.384ms
|
||||
})
|
||||
if err != nil {
|
||||
println(err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
wheel := l293x.NewWithSpeed(machine.D10, machine.D11, machine.PWM{machine.D12})
|
||||
spc, err := machine.TCC0.Channel(machine.D12)
|
||||
if err != nil {
|
||||
println(err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
wheel := l293x.NewWithSpeed(machine.D10, machine.D11, spc, machine.TCC0)
|
||||
wheel.Configure()
|
||||
|
||||
for i := 0; i <= 10; i++ {
|
||||
println("Forward")
|
||||
var i uint16
|
||||
for i = 0; i < maxSpeed; i += 1000 {
|
||||
var i uint32
|
||||
for i = 0; i < maxSpeed; i += 10 {
|
||||
wheel.Forward(i)
|
||||
time.Sleep(time.Millisecond * 100)
|
||||
}
|
||||
@@ -30,7 +42,7 @@ func main() {
|
||||
time.Sleep(time.Millisecond * 1000)
|
||||
|
||||
println("Backward")
|
||||
for i = 0; i < maxSpeed; i += 1000 {
|
||||
for i = 0; i < maxSpeed; i += 10 {
|
||||
wheel.Backward(i)
|
||||
time.Sleep(time.Millisecond * 100)
|
||||
}
|
||||
|
||||
@@ -8,19 +8,38 @@ import (
|
||||
)
|
||||
|
||||
const (
|
||||
maxSpeed = 30000
|
||||
maxSpeed = 100
|
||||
)
|
||||
|
||||
func main() {
|
||||
machine.InitPWM()
|
||||
machine.D11.Configure(machine.PinConfig{Mode: machine.PinOutput})
|
||||
machine.D12.Configure(machine.PinConfig{Mode: machine.PinOutput})
|
||||
|
||||
wheel := l9110x.NewWithSpeed(machine.PWM{machine.D11}, machine.PWM{machine.D12})
|
||||
err := machine.TCC0.Configure(machine.PWMConfig{})
|
||||
if err != nil {
|
||||
println(err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
ca, err := machine.TCC0.Channel(machine.D11)
|
||||
if err != nil {
|
||||
println(err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
cb, err := machine.TCC0.Channel(machine.D12)
|
||||
if err != nil {
|
||||
println(err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
wheel := l9110x.NewWithSpeed(ca, cb, machine.TCC0)
|
||||
wheel.Configure()
|
||||
|
||||
for i := 0; i <= 10; i++ {
|
||||
println("Forward")
|
||||
var i uint16
|
||||
for i = 0; i < maxSpeed; i += 1000 {
|
||||
var i uint32
|
||||
for i = 0; i < maxSpeed; i += 10 {
|
||||
wheel.Forward(i)
|
||||
time.Sleep(time.Millisecond * 100)
|
||||
}
|
||||
@@ -30,7 +49,7 @@ func main() {
|
||||
time.Sleep(time.Millisecond * 1000)
|
||||
|
||||
println("Backward")
|
||||
for i = 0; i < maxSpeed; i += 1000 {
|
||||
for i = 0; i < maxSpeed; i += 10 {
|
||||
wheel.Backward(i)
|
||||
time.Sleep(time.Millisecond * 100)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user